トップページ > プログラム > 2014年06月24日 > kdRyqEc0

書き込み順位&時間帯一覧

20 位/250 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000210001000004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Androidプログラミング質問スレ revision43

書き込みレス一覧

Androidプログラミング質問スレ revision43
487 :デフォルトの名無しさん[sage]:2014/06/24(火) 13:04:58.98 ID:kdRyqEc0
FrameLayout、SurfaceViewについての質問をお願いします

FrameLayout
SurfaceView(s0)
SurfaceView(s1)
RelativeLayout(ボタン群)
の順序でxmlに記述しています

初回は↓で表示されますが、
RelativeLayout > SurfaceView(s0)> SurfaceView(s1)

外部ギャラリー等を呼び出して戻ってくると表示が↓に変わります
RelativeLayout > SurfaceView(s1)> SurfaceView(s0)

その後は何回外部ギャラリー等を呼び出しても↓のままです
RelativeLayout > SurfaceView(s1)> SurfaceView(s0)

setZOrderOnTop(true)を使うとs0とs1の順序は調整出来ますが
SurfaceView(s0)> RelativeLayout > SurfaceView(s1)
になってしまいs0の後ろにRelativeLayoutが来てしまいます

みなさんはどうやって対策していますか?
Androidプログラミング質問スレ revision43
488 :デフォルトの名無しさん[sage]:2014/06/24(火) 13:05:44.57 ID:kdRyqEc0
>>487
※ネットで見つけたものですがこれが原因なのでしょうか?
GLSurfaceViewや、SurfaceViewを複数使った場合に順番がおかしくなる。 †
Androidでは、SurfaceViewの継承クラスが複数あるような場合、
SurfaceFlingerというOSの上に直結した特殊な画面合成レイヤーが存在し、
それらが複数のSurfaceの描画順を、内部のZ値(深度)を元に処理を行うが、
Z値がシーン切り替えなどの画面に変化があったときに、再度、それぞれのSurfaceに動的に値が設定されるが、
その値は同一のActivity内のSurfaceの場合、適当になるという恐ろしいバグのような仕様がある。
そこで、onCreateを代表する、onSuspendやonResumeなどすべての画面変化があるタイミングで、
一番上になるSurfaceに対して、SurfaceView.setZOrderOnTop(true);
という形でZを強制的にTOPする機能を使い表示順を調整する必要がある。
Androidプログラミング質問スレ revision43
489 :デフォルトの名無しさん[sage]:2014/06/24(火) 14:43:31.92 ID:kdRyqEc0
>>487
機種依存か、外部ギャラリーの影響か、
が不明ですが現象が出ない端末もありました
Androidプログラミング質問スレ revision43
497 :デフォルトの名無しさん[sage]:2014/06/24(火) 18:05:22.83 ID:kdRyqEc0
>>487
対策はなんとか出来ました
トリッキーな方法なので記載は省きます
こんな仕様では困りますね


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。