2010-10-07 (木)
*[Android] 画面の向きが変わったときの処理+SurfaceViewのサイズ変更
スクリーンの向きが変わったときにViewの大きさや座標を変更したくなったので,まず,Config Changeにorientationを入れてonConfigurationChangedが呼ばれるようにしました.これで,Activityが作り直されることも無くなります.
…onConfigurationChangedって,レイアウト変更前に呼ばれるのか.これだとViewの座標やサイズが得られないので今回は無理.
仕方ないので,ViewGroupのonLayoutをオーバーライドして自分したけど,こんどはVideoViewがいうことを聞いてくれない.なんだか,VideoViewのSurfaceが再作成されるタイミングとViewのレイアウトが変更されるタイミングに違いがある気がする.
後からinvalidateとかlayoutで簡単にできそうなものだけど,実際に変更が無い場合はダメみたいです.
定期的に画面が縦か横かチェックすれば問題ないのだけど,なんだか嫌なのでもうすこし調べよう.
追記:
少し調べたら
http://www21.atwiki.jp/memodroid/pages/26.html
こんな情報が.面倒なので,他に強制的にレイアウトが変更される場合を探したら,ウインドウのフラグとかでもできそうな感じ.とりあえず,画面の向きが変わるたびに,WindowManager.LayoutParams.FLAG_FULLSCREENを変更することにした.横向きはフルスクリーンにしたかったし一石二鳥.