UI の概要

Android アプリのすべてのユーザー インターフェース エレメントは、ViewViewGroup オブジェクトを使ってビルドされています。 View は、ユーザーが相互操作できる、画面上で何かを描画するオブジェクトです。 ViewGroup は、インターフェースのレイアウトを定義するために、その他の View(と ViewGroup)オブジェクトを保持するオブジェクトです。

Android では、共通の入力コントロール(ボタンやテキスト フィールドなど)とさまざまなレイアウトモデル(線形レイアウトや相対レイアウトなど)を提供する ViewViewGroup サブクラスの両方が提供されています。

ユーザー インターフェースのレイアウト

アプリの各コンポーネントのユーザー インターフェースは、図 1 のように、ViewViewGroup オブジェクトの階層を使って定義されます。各ビューグループは、子ビューをまとめる非表示のコンテナであり、子ビューは UI の一部を描画する入力コントロールまたはその他のウィジェットです。 この階層ツリーは、必要に応じて単純にまたは複雑にすることができますが、パフォーマンスの点では単純な階層ツリーが最適です。

図 1.UI レイアウトを定義するビュー階層の図。

レイアウトを宣言するには、コードで View オブジェクトのインスタンスを作成してツリーのビルドを始めることができますが、レイアウトを定義する最も簡単で効率的な方法は XML ファイルを使用することです。XML では HTML のように、人が見える構造でレイアウトが提供されます。

ビューの XML 要素名は、それが表す Android クラスによって決まります。<TextView> 要素は UI で TextView ウィジェットを、<LinearLayout> 要素は LinearLayout ビューグループを作成します。

たとえば、テキストビューとボタンを含む単純な縦レイアウトは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="I am a Button" />
</LinearLayout>

アプリでレイアウト リソースを読み込むとき、Android はレイアウトの各ノードを初期化して、他の動作の定義、オブジェクト状態の照会、レイアウトの変更をするのに使用できるランタイム オブジェクトにします。

UI レイアウト作成のガイドについては、XML レイアウトをご覧ください。

ユーザー インターフェース コンポーネント

ViewViewGroup オブジェクトを使用してすべての UI をビルドする必要はありません。Android では、コンテンツの定義に必要な標準的な UI レイアウトを提供する複数のアプリ コンポーネントが提供されます。 これらの各 UI コンポーネントには固有の API があり、それぞれを説明したドキュメント(アプリバーの追加ダイアログ状態通知)があります。