意外と忘れがちなので小ネタ。
AndroidでSurfaceViewの上にViewを配置してVisibilityを切り替える場合、Viewの再配置はそれなりの処理が入ってしまうので、少しでも処理を減らそうと思いデフォルトのVisibilityをView.INVISIBLE
で定義しておき、
view.visibility = VISIBLE
で切り替えようとします。
しかし、これだとSurfaceViewの上に乗ったViewは表示されない場合があります。
Android2.3以降の変更によるもので、SurfaceViewが表示される前にINVISIBLEになってる場合は表示されません。逆にいうとすでに表示されているViewに対して追加した場合はINVISIBLEでもVISIBLEの切り替えが可能になります。
同じタイミングでViewを初期化する場合はINVISIBLE
ではなくGONE
を使って切り替えましょう。
この間なんで表示されないんやってハマったので小ネタでした。