![]() |
Androidの実装で画面の回転や縦横の向き変わったときの処理が
すごい面倒だと思っていた。
しかし、そんなことはいまや昔。
気づいたきっかけは以下だった。
カスタマイズしたListViewとタブを組み合わせてtwitter風のUIで
作った画面の向きを変えると以下のエラーが出た。
android.view.WindowLeaked: Activity
この解決方法を探していたら
画面の向きの制御をすごく簡単に行う方法がわかった。
エラーの原因は、画面の向き変更時にactivityのrestore等のタイミングで
裏側を走っているスレッドがUIを触っていることらしい。
ということは画面の回転の処理でviewの制御を
handlerで行う必要があるのかと思っていたら以下の神的方法を発見
Android.manifestファイルに以下を記述。
<activity android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:name=".your.package">
肝はandroid:configChangesを入れること。
これでなんと画面の回転処理はすべて行ってくれるんです!!!
なんということでしょう!
普通に回転を処理しようとすると以下のように処理が動く
onSaveInstanceState→onPause→onStop→onDestroy
→onCreate→onRestoreInstanceState→onResume
しかし、android:configChangesを入れると
上記の処理は動かずに安全に設定変更として回転処理を行ってくれる。
実際に調べてみたところcreateやdestroy等は呼ばれていないようだった
回転のタイミングで何かするなら以下をオーバーライドしましょう
onConfigurationChanged
これで画面の回転処理は完璧です(・∀・)
これからは一度画面を殺して再描画なんかせずに
設定変更で乗り切ろうと思います(´・ω・`)ゞ ピッ
参考サイト
タグ:android