2011年04月

厄介な端末の回転対応

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

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

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


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

 

ダイアログのカスタマイズ

Android Layout Cookbookに書かれていることに影響を受けて、現在開発中の2本目のアプリはUIをターゲットユーザー向けに大幅に変更することにしました。この書籍、ソースコードが充実しているのでとても助かっています。書籍によっては、ダウンロードできるソースコードは「全て」ではなくて、書籍の内容の一部であることもあり、そう言う時はがっかりしますが、Android Layout Cookbookは見たところ全部入っています。で、これまで避けてきたUIのカスタマイズをまじめに始めています。(この書籍はたくさん売れると思います。)

で、AlertDialogのカスタマイズでつまづいています。それ自体の説明は書籍にはなく、こちらを参考に変更しているのですが、期待した結果になりません。うーん。どうしてだろう。OS2.2ぐらいだと、AlertDialogをテーマの変更ではいじれないのかな。

 

 

クラッシュレポート機能が更新されました

クラッシュレポート機能は、Googleのサーバー(Google document)にレポートを送信しますが、その仕様が変更になったそうです。そのため、クラッシュレポート(ACRA)のライブラリーが更新されました。これに伴い、カレアラを更新しました。1.04.0です。

 

Android Layout Cookbook

今日書店に寄ったので「Android Layout Cookbook」を手に取り、役に立つと思ったので購入しました。Amazonには辛口のコメントもありましたが(読み辛いとか)、僕はそうは思いませんでした。あんざいさんの主張には迎合できないものもありますが、良い書籍だと思います。早速、今取り組んでいるアプリのUI関係で活用させてもらいました。

それから、著者のあんざいゆきさんのブログにはいつも、とてもお世話になっています。

 

Galaxy S 2.2.1はもう直さないのかな

致命的な問題があると思っているGalaxy S 2.2.1ですが、問題だと広く認識されていないようで、しない方がいいと思うのに、検索すると「最近アップデートしました」という文言が引っかかります。また、いろんなアプリの不具合報告で、Galaxy Sで設定が・・・というのも目にします。で、僕のGalaxy Sもとっても不便な状態で、特に開発中のソフトはアンインストールすることが多いのですぐにこの問題が発生します。持っている端末4台のうちOS2.2なのはこれだけのでとても困ります。

Webの記事によるとGalaxy Sは2.3にできるそうですが、ドコモがいつ開始するかはまだ分からない、ということです。この分だともう2.2.1を直す気はないのでしょうか。僕としては2.3になって直っていたらいいのですけど。(いや、直っていないなんてあり得ないでしょう。)でもねぇ、この問題、当事者は認識していますよね。2.2.1について何もアナウンスしないのはまずいと思うのですけどねぇ。(どうしてみんな騒がないのでしょう。)