さまざまなリソース切り替え設定
テスト用のAVDを作成する
前々回で述べたように、HT-03Aはトラックボールを搭載していますが、Xperiaには有りません。従って、トラックボール操作を前提とするアプリは、 Xperiaでは利用できません。
この場合、トラックボールのない端末向けに代替の操作手段を用意しておく必要があります。
サンプル・プロジェクトのMainActivityは、トラックボールが押されるとexecuteメソッドを実行し、画面に「execute」または「実行」と表示します。
エミュレータでは、PCのキーボードから「F6」キーを押すと「トラックボール・モード」に切り替わります(図2-1)。
トラックボール・モードに切り替えると、マウス操作をトラックボールの回転として、マウスをクリックするとトラックボールを押したと認識します。
トラックボールが無い端末をエミュレートするには、別途エミュレータのイメージ(AVD)を作成する必要があります。
なぜなら、通常作成するAVDは、標準でトラックボールに対応した設定で作成されるためです。トラックボールが無い端末をテストするためのAVDは、その旨を明示して作成する必要があります。
Eclipseの「Window」->「Android SDK and AVD Manager」からAVD Managerを開いて、「New」からAVDの新規作成を行います(図2-2)。
大まかな設定は、これまでと同じです。ここでは、作成するAVDに「Xperia」と名前を付けました。
次に、トラックボールを搭載しないことを明示する必要があります。
まず、「Hardware」->「New」でエミュレータがサポートするハードウエア設定の追加ダイアログを開き、「Track-ball support」を選択します(図2-3)。
「Track-ball support」は、リストに追加された状態では、サポートする「yes」に設定されています。セルをクリックして、サポートしない「no」に設定を変更します(図2-4)。
設定が終わり、「Create AVD」を押すと、トラックボールを搭載していない端末用のAVDが作成されます。
できあがったAVDをエミュレータで選択し、サンプル・プロジェクトを実行後、F6でトラックボール・モードに切り替えます。トラックボールの入力を、アプリが受け取っていない(画面に何も表示されない)ことを確認してください。
トラックボールの有無で表示レイアウトを切り替える
テスト環境ができたので、サンプル・アプリを、トラックボールの有無に依存しない形に改変します。
対応の方法はいくつか考えられますが、ここではトラックボールが無い端末に限って画面にボタンを表示し、ボタンを押すとトラックボールを押したのと同じ動きをするようにします。
サンプル・プロジェクトの「res/」に、新しいディレクトリ「layout-nonav」を追加します。「nonav」は、トラックボールやホイールのような操作方法が無いことを示す修飾子です。
layout-nonavの作成後、サンプル・プロジェクトの「res_sample/layout-nonav/」のmain.xmlを、作成した layout-nonavディレクトリにコピーしてください。
layout-nonavに追加するmain.xmlには、Buttonが追加されています。
変更したサンプル・プロジェクトを、トラックボールをサポートしていないエミュレータ上で実行すると、画面にボタンが表示されます。
同じアプリを、トラックボールをサポートしたエミュレータ上で実行すると、ボタンは表示されません。
表示されたボタンを押しても何も起こらないのは、コード側で、ボタンを押したときの処理を書いていないからです。
しかし、ただ処理を書くと言っても、トラックボールの有無に応じて、ボタンがある場合と無い場合の2つのパターンが生じます。コード側は、どのように対応すればいいのでしょうか。
次のページでは、環境に応じて画面の部品が変わる場合に、どのように対応するのかを説明します。