猫の手も借りたい

ソフトウエア開発者の多忙な生活

画面のレイアウトを縦と横で分けて、それぞれに最適化した方が良い画面もあります。カレアラは端末を回転させてもActivityが再生成されないようにして(そのように割り切って)いましたが、現在開発中のアプリは、Android Layout Cookbookを教科書にしてUIに力を入れ始めているので、きちんと回転対応した方が良い画面はそのようにしています。が、そうすると端末の回転でActivityが再生成されるため、厄介なことが起きます。はい、基本的な対応方法はLayout Cookbookにも書かれていますが、次のようなケースを考えると、いちいち対応するのはとっても大変です。

  • AlertDialogを表示してユーザーに選択をさせている最中に端末を回転させた。

  • 時間のかかる処理をAsyncTaskで行い、プログレスを表示している最中に端末を回転させた。


端末の回転で、縦・横画面に最適なレイアウトを提供したいのですが、上記のようなケースに対応するにはコストがかかり過ぎるなと思いました。で、ふとこう思いました。上記のような、都合の悪い状態では回転させなくてもいいのではないか。どうせ見ているのはAlertDialogかプログレスバーぐらいなのだから。で、それらを閉じたら自動で端末の状態に応じて回転すればいいじゃないか。無理かなーと思いつつ調べたらありました。その方法が。これを使って、都合の悪い状態に入る前に向きを固定し、そこから出たら回転可能に戻しました。僕としてはこれで満足です。AsyncTaskを使っている最中にActivityを再生成して元に戻すコードを書いて大きなバグを作り込むよりはよっぽどいいと思います。とにかく品質第一だし。(UIを良くしてForceCloseさせたら本末転倒、、、って言い訳っぽいなあ。でも僕はこの現実解が好きです。)

 












管理者にだけ表示

トラックバック URL↓
http://nekonotesoft.net/tb.php/190-c7e21073