Galaxy Tab が文鎮になるまで: アプリケーション・スクリーンの最大化
仕事でAndroid端末「Galaxy Tab」向けのアプリを開発することがあったのだが、ここでちょっとだけ気になったことをメモ。
「Galaxy Tab」は600x1024という高解像度端末。
だが、Androidにしては変則的な高解像度故に、既存のアプリケーションの一部で、フルスクリーンで表示してくれない場合があった。
具体的には、画面の真ん中にアプリの画面が表示され、その周りに黒帯が表示されててGalaxy Tabの大画面をフル活用してくれない。
これと同じ現象が、自社開発のアプリでも発生したためちょっと苦戦してた。
とりあえず有り合わせの解決策としては、「Spare Parts」というアプリをAndroid Marketからダウンロードしてきて使うというもの。
で、インストールしたSpare Partsを起動し、「Compatibility Mode(互換モード)」という項目のチェックを外し、Androidを再起動。
これで、全部のアプリで全画面表示ができるようになる。
ただ、これがベストの解決策ではないのだな。
アプリによってはSpare Parts無しでもちゃんと全画面表示できるやつもある上、ユーザー側でSpare Partsを勝手にダウンロードして設定しやがれってのじゃ、親切とは言えない。
多分、アプリ開発の段でres/layoutに600x1024用のレイアウトを記述してやればうまく動くと予想しているんだが。
ここがAndroidアプリのめんどくさいところなんだよね〜。OSのベースは同じでもハード依存やベンダーの独自カーネル拡張とかそういう部分があって、各種端末でベストなパフォーマンスを発揮するためにはアプリ開発側でその機種依存部分を吸収してやらなければならない。API側で抽象化しきれていないのだ。
この作業が非常に手間のかかる作業で、多数ある端末それぞれに対して動作テストを繰り返しながらローカライズのような作業をすることになる。
でも、
最近まで(今も?)よくわかっていなかったのですが、Androidアプリってどんな解像度の端末でもHVGA(320*480)の画面を想定して作れば良いのですね。
どうも端末側で自動的に拡大縮小して会わせてくれているようです。
ただ、このとき困るのがせっかくの高解像度なディスプレイを持った端末でも、HVGAの解像度でしか表示できなくなってしまうこと。
http://blog.tappli.com/article/40893975.html
とあるように、原則的にはHVGA想定のレイアウトを作ればいいということも書かれている。よく分からんなー...
少なくともGalaxy Tabではそううまくは行かなかった。