AIR for Andoridプレリリースプログラム受付開始!画面サイズの注意点

Google IO 2010 のキーノートでの Android の発表を踏まえて、
Adobe の AIR for Android プレリリースプログラム の登録受付が始まりました。
Flash(ActionScript 3.0)を使って開発した AIR アプリを、Android ケータイ向けの
.apk ファイルにして、Nexus One や HTC Desire などで実行できます。
プレリリースに先行参加して、iPhone 向けに開発したアプリ Korean Alphabet
Android に移植してみました。まずは Android 2.1 エミュレータのインストール から始めて、
Android 向けの修正を行って .apk ファイルができるまで、ざっくり4時間くらい。
この後、実際にリリースするまでには、実機に合わせたカスタマイズがもっと必要だけど、
とりあえず、既にある Flash コンテンツを、AIR for Android 向けに
パブリッシュ(パッケージ)して試す分には、意外なくらい簡単でした。


Nexus One 実機で動作した画面キャプチャを頂きました!ありがとうございます!
基本的に、iPhone 版と同じ画面構成 を再現しています。
まだ開発中のバージョンです。最終リリースまでには、もう少し改良する予定。

以下、気づいた AIR for Android を使った Flash/ActionScript アプリ開発時の注意点。
Android 搭載ケータイは液晶画面の縦横サイズと解像度のバリエーションがあるので、
ActionScript でそれらに柔軟に対応するようコードを書く必要はあります。

画面サイズ(ピクセル数)


画面サイズについては、PC 向けコンテンツでも、ブラウザのウインドウサイズに追随した
コンテンツを制作している人なら、その応用で済みます。
しかも Android アプリは、PC のようにアプリ実行中にサイズ変更できるわけではないから、
画面サイズはアプリ起動時に確定できて、リアルタイムにサイズを変える必要もない。

今後、登場してくる機種でまだ画面サイズのバリエーションは増えるかもしれませんが、
当面は下記の3サイズに対応すれば大丈夫そう。
HVGA (320x480) = HTC Magic (HT-03A) 等(2:3)
WVGA (480x800) = HTC Desire、Nexus One 等(3:5)
FWVGA (480x854) = SONY Experia 等(9:16)
http://developer.android.com/guide/practices/screens_support.html 参照

また、マルチタスクな Android では、アプリをフルスクリーン表示するのではなくて、
たぶん、画面上部の通知バー(時計領域)を残したままにした方が良いかと思いますが、
その場合は、その分の画面サイズが減ります。(パッケージ時に ON/OFF を選択する)

画面解像度(DPI)


解像度については、Flash Player 9 の時代からある Capabilities.screenDPI で判別できそう。
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/Capabilities.html#screenDPI

Android の実機の解像度(ピクセルの細かさ)は、以下の3種類に分類されます。
ldpi Low density (120dpi)
mdpi Medium density (160dpi) = HTC Magic (HT-03A) 等
hdpi High density (240dpi) = HTC Desire、Nexus One 等
再び http://developer.android.com/guide/practices/screens_support.html 参照

画面上部の通知バーも、mdpi 機は 25ピクセルなのに対し、hdpi 機では 38ピクセルに広がります。
mdpi 機と hdpi 機は、解像度が1.5倍違うので、ボタンなども同じビットマップを使いまわすと
小さく押しづらかったり(大きすぎたり)するので、シェイプで作って拡大縮小表示するとか、
もとから2種類用意して切り替えるようにするか、対策が必要になります。
 
Nexus One / HTC Desire は、PC の画面よりもかなり解像度が高いです。240dpi 相当。
エミュレータ起動時に -scale 0.5 のように縮小表示して動作確認しています。

固定 or リキッド?


固定ピクセルを想定したコンテンツだと、それ意外の機種で、余白ができたり、残念なことになる。
液晶サイズに合わせて、自前 ActionScript で描画を制御するなら、自動スケールを外す。

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

日本国内の端末は、AIR for Android の主なターゲット機種は当面 HTC Desire なので、
それに合わせて 480×800ピクセル、240dpi 固定想定で開発してもいいかもしれないけど、
国内でももうすぐ他の機種も出るみたいだし、海外はその他の機種も多いので、
リキッドレイアウトというか、画面サイズ・解像度に柔軟な構成を組んで置く必要はありそう。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 2

なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー)

この記事へのコメント

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