2011年03月18日

androidで画面の向きや回転の制御をすごく簡単に行う方法

人気ブログランキングへ


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
posted by マスタカ at 22:59 | Comment(0) | TrackBack(0) | PC・携帯 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック