こうした実装形態は,Javaアプレットや.NET Frameworkを利用してGUIプログラミングをする場合などとほぼ共通しており,考え方として目新しさは感じられない。フレームワークが呼び出すのがメソッドである点や,メソッド名が「on」で始まるのは,Javaよりも米Microsoft Corp.のフレームワークに近い。例えばJavaアプレットの場合,初期化時には「init」メソッドが呼ばれ,描画が必要なときには「paint」メソッドが呼ばれる。Androidでは,「onCreate」などのメソッド名が与えられている。

レイアウトはXMLで記述

 Activityが持つUIは,Javaプログラムとしても記述できるが,基本はXMLでレイアウトを記述する(図9)。.NET FrameworkやWebアプリケーションなどと思想が似ている。

図9 Activityのユーザー・インタフェース定義 ViewGroupの中に複数のViewを配置する形態を採る。ViewGroupも一種のViewとして定義されているので,ViewGroupの中にViewGroupが入っても構わない。ViewGroupは通常,各種レイアウト用のクラスとして規定されている。
図9 Activityのユーザー・インタフェース定義 ViewGroupの中に複数のViewを配置する形態を採る。ViewGroupも一種のViewとして定義されているので,ViewGroupの中にViewGroupが入っても構わない。ViewGroupは通常,各種レイアウト用のクラスとして規定されている。 (画像のクリックで拡大)

 UIを構成する画面上の要素は,すべて「View」と呼ぶクラスに属する。Viewクラスの中には,複数のViewを配置できる「ViewGroup」があって,これがViewのレイアウトを決める性質を持つ。例えばViewGroupの一つである「LinearLayout」では,複数のViewを縦または横に一列に並べる。「RelativeLayout」では,画面の中の相対的な位置関係を定義して,比較的高い自由度でViewを配置できる。このほか画素単位で位置を指定する「AbsoluteLayout」や表形式でレイアウトする「TableLayout」などがある。

 GUI部品個別のイベントには,Activityのライフサイクル管理と同様にフレームワークが呼び出すメソッドとして実装するものと,そうでないものがある。この点で.NETFrameworkのような統一感はない。例えばキーボード操作のonKeyUpやonKeyDownといったメソッドは用意されているが,マウスのボタンがクリックされたときの処理は「onClickListener」のクラスを定義する形になっている。