画面の配置を決めるための「ViewGroup」
前回(関連記事)解説したようにAndroidのアプリケーションは、アクティビティと呼ばれるオブジェクトから作られています。このアクティビティは、アプリケーションの画面に相当し、XMLで記述した画面を読み込んで表示します。今回はアプリケーション開発の基本となるこのアクティビティの作り方を解説します。
このためには、Androidが提供するGUIエディター(レイアウトエディター)の使い方などをマスターしておく必要があります。
アクティビティが持つ画面は、Viewと呼ばれるクラス(オブジェクト)です。レイアウトファイルには、このビューを1つだけ含むことができます。1つではなんにもできないと思われるでしょう。しかし実際には、ビューには内部に複数のビューを含むことができる「ViewGroup」というビューがあるので、これを使うことで実質的に複数のビューを含むことができます。

Activityの表示は単体のビューだが、中に複数のビューを格納できるViewGroupを使って階層構造を作る。ViewGroupには内部のビューを自動的に配置するLayoutと呼ばれるものがある。この中にテキストや入力ボックス、ボタンなどのビューを入れてActivityのビューを作る
このViewGroupには、以下のようなものがあります。
●LinearLayout:縦または横に内部のビューを配置する
●TableLayout:表形式でビューを配置
●RelativeLayout:ビューの相対位置を指定して配置
●AbsoluteLayout:絶対座標を指定して配置
●FrameLayout:枠を空けるためのレイアウト
このほかにViewGroupのサブクラスには「AdapterView」「SlidingDrawer」がありますが、使い方がちょっと違うので、ここでの説明は省略します。
これらのクラスにはボタンなどの部品を配置するという役割があり、このために「Layout」というキーワードがあります。Androidに限らず、画面サイズが固定されていてはハードウェアの変化に対応することが困難ですし、製品のバリエーションが作りにくくなります。またAndroidは、本体の縦/横位置で表示の向きを切り替える機能もあります。この場合、解像度は同一でも見かけ上の縦横の解像度は変化します。
このように解像度が変化する場合、ボタンやテキスト入力欄のようなものを、絶対座標で配置することはできません。解像度に合わせて、部品の位置やサイズを変化させる必要があります。このために使われる部品が「●●Layout」と呼ばれるクラスです。これらは、一定のルールで内部の部品を並べるようになっています。
一番使うと思われるのが「LinerLayout」です。これは、内部に配置されたビューを縦または横に並べるものです。ただし1つのLinerLayoutは、縦または横のどちらかの方向にしか並べることはできません。このため、複雑な配置を行なうには、これを入れ子にします。
たとえば、ボタンを2つ横に並べたければ、方向を横方向に設定したLinerLayoutの中にボタンを置き、このボタンの下にテキスト欄を並べたければ、外側に方向を縦にしたLinerLayoutを置きます。このような入れ子を作ることで、複雑な画面でも構成することが可能です。
ほかにもいくつかのレイアウトクラスがありますが、まずは、LinerLayoutの使い方を覚えれば十分です。他のレイアウトに関しては、実際に使う必要があるときにリファレンスを参照してください。
実際に画面に配置する部品
このレイアウトの中に配置するビューは「widget」と呼ばれるクラスです。widgetは、Viewのサブクラスのうち、ユーザーインターフェースの部品となるものです。widgetとして多くの部品が定義されていて、その中には、ボタンやテキスト入力欄のような簡単なものから、メディア再生を制御するものなどさまざまなものがあります。前述のレイアウトもwidgetの1種です。このため、レイアウトの中にさらにレイアウトを入れて、ボタンなどの他のwidgetと同じように扱わせることができるわけです。
実際に利用できるwidgetは、Android developerのサイトにあるリファレンスページにあります。

この連載の記事
-
第11回
スマホ
アプリケーションをAndroidマーケットに登録する -
第10回
スマホ
ブロードキャストへの応答とタイマ割り込み -
第9回
スマホ
Androidアプリで複数の項目を表示するリストビューを使う -
第8回
スマホ
Androidアプリに必要なダイアログを作る -
第7回
スマホ
Androidアプリの設定画面を作成する -
第6回
スマホ
Androidアプリ内で表示されるメニューを作成する -
第5回
スマホ
インテントによるアプリケーションとアクティビティの呼出し -
第3回
スマホ
アプリケーションの基本となる「アクティビティ」 -
第2回
スマホ
開発したアプリをエミュレーターやデバッガ上でテストする -
第1回
スマホ
Androidアプリの開発環境であるEclipseの使い方を知る - この連載の一覧へ