解像度の異なる端末に対応する
Androidの画面開発
前回、Xperiaの登場によって、今後は端末に依存しないアプリ開発が求められると述べました。今回からはより具体的に、端末に依存しないアプリ開発の方法について解説していきます。
最初に取り上げるのは「表示」、特に画面の解像度が異なる端末に対応する手法です。
手法の解説にサンプルを用意したので、こちらからダウンロードしてください。ファイルはzipで圧縮してあり、展開するとEclipseのプロジェクトになります。Androidの開発プラグインをインストールしたEclipseからインポートしてください。
サンプル"ResourceTest"プロジェクトのsrc以下は、コードを格納しているディレクトリです。また、res以下が、リソースを格納しているディレクトリです。res_sample以下は、筆者が作成したディレクトリで、本来Android開発には必要がありません。今回の説明に使用するリソースのサンプルが納められています。
具体的な解説の前に、まずはAndroidアプリの画面開発の仕方をおさらいしておきましょう。この部分は、基礎がわかっている方は読み飛ばしてもらってもかまいません。
Androidの画面は、Activityクラスを継承して実装します。サンプルではsrc以下のMainActivity.javaが、 Activityクラスを継承した画面です。
MainActivityクラスでは、onCreateメソッドをオーバーライドしていて、その中で画面レイアウトを表示しています。
画面レイアウトを指定しているのは、setContentViewメソッドです。引数に渡しているR.layout.main1が、 res/layout/main1.xmlで定義された画面を指しており、main1.xmlを表示するという意味になります。
main.xmlは、拡張子が示すとおりのXMLファイルで、実際に表示する画面レイアウトが定義されています。
なお、setContentViewの引数「R.layout.main1」はint型の定数です。それを格納しているRクラス自体が、Android の開発ツールが自動的に生成するもので、値そのものに意味はありません。
試しに、res_sample/layout/main2.xmlを、res/layout/にコピーしてください。Rクラスが自動的に再生成され、 R.layout.main2が追加されます。追加されない場合は、プロジェクトをクリーンしてから、もう一度手動でビルドしてください。
このようにAndroidでは、画面の内容をXMLファイルとして別に用意して、表示するのです。
リソースごとのテスト環境を構築する
それでは、サンプル"ResourceTest"を、実行してみましょう。しかし、アプリの実行の前に、テスト環境をあらかじめ準備しておく必要があります。
皆さんもこれから、さまざまな端末で、アプリをテストする必要が生まれると思います。
前回も述べたようにAndroidでのアプリ開発では、全数テストはまず不可能です。また、可能な限り多くの実機を用意しておくのは理想ではありますが、これも現実的ではありません。
筆者の所属する有限会社シーリスも、しばらくは日本未発売の端末を輸入したり、テスト環境の整備に力を入れようとした時期もありました。しかし、結局、 SDK標準のエミュレータで十分だという結論に至りました。
Androidのエミュレータは、画面の解像度やデバイスの有無などを設定した「仮想イメージ」を実行します。このイメージは、AVD(Android Virtual Device)と呼ばれ、AVDを変更すれば、さまざまな条件での端末をエミュレートできるからです。
AVDの管理は、Eclipseの"Window->Android SDK and AVD Manager"から行います。開くと現在のAVD一覧が表示されます。すでに作成済みの人は何らかの名前が表示されているかもしれません。
ここでは、XperiaのようなWVGA(854x480)端末をエミュレートするAVDを作成します。 "New"ボタンを押すと、AVD作成画面が開きます。ここで、以下のように入力してください。
Name: [任意の名前] Target: Android 1.6 API Level 4 SD Card: Size: 64MiB Skin: Built-in: WVGA854
Skinで指定するのが画面のサイズです。今回はBuilt-inのWVGA(854x480)を指定しました。このほかにも、HVGAやWVGA、任意の画面サイズを指定することもできます。
入力が終わったら"Create AVD"ボタンを押してください。AVDが作成され、指定した名前が一覧に表示されます。なお、SD Cardの容量を大きく設定した場合、AVDの作成に時間がかかる場合があります。
一覧から、起動したい環境のAVDを選択して"Start"ボタンを押すと、エミュレータが起動します。
起動にあたって、画面の倍率を設定できます。ノートPCなどの場合には、WVGAのAVDでエミュレータを起動したら画面が大きすぎてはみ出してしまう場合があります。その場合は、ここで倍率を指定すれば、全体が縮小(または拡大)されて、画面に納めることができます。
一つのAVDについてエミュレータは一つしか起動できませんが、AVDを二つ作れば、エミュレータを同時に二つ立ち上げることができます。
従って、HVGAとWVGA、異なる画面の大きさを持つ二つのエミュレータを同時に起動してそれぞれでアプリをテストすることもできます。
次のページでは、サンプルをHVGAとWVGAのエミュレータでそれぞれ実行して、実行結果を示します。