UI Elements and Concepts Glossary
以下は一般的なUI要素とSDK内に散見されるであろうコンセプトのリストです。
- Activity
- Androidアプリケーションの標準的な画面です。アクティビティは、当該アプリケーションまたは他のアプリケーションから起動用インテントが投げられた時点でAndroidが実行するクラスです。ほとんどの場合、フル画面表示されウィンドウ描画用のWindowオブジェクトを用いてUIイベントの受取や処理を行ったり、複雑なタスク処理を行ったりします。前述のように通常はフル画面ですが、フローティングスタイルや透過型にすることも可能です。
- View
- 描画を行ったり、クリックやキーストロークなどのイベント処理を行うことが出来る、画面上の矩形エリアです。Viewはほとんどのアクティビティやテキストボックス、ウィンドウといったダイアログの基本クラスです。これらはコンテナオブジェクトからの描画指示を受け、描画を行って欲しい位置やサイズを親オブジェクトに渡します(これは、親オブジェクト側で常に尊重されるわけではありません)。この機能はView基本クラスにより提供されます。
- View Group
- 複数の子のビューオブジェクト群を持つコンテナで、それらがどこにどのようなサイズで描画されるかを決めたり、必要な際にはそれらに対して描画指示を出したりするものです。あるものはレイアウト専用の不可視なものですが、大体のものはスクロールするリストボックスのようにそれ自体がUIを持ちます。ビューグループはwidgetパッケージに属しますが、ViewGroupクラスを基本クラスとします。
- Widget
- テキストボックスやポップアップメニューといったフォーム要素です。これらは自分自身を描画したりUIイベントを処理する機能を持ちます。ウィジェットはwidgetパッケージに属します。
- Drawable
- 大抵は背景画像として他のUI要素内に読み込まれるビジュアル要素です。これはイベントを受信しませんが、”状態”やアニメーションオブジェクト・イメージライブラリ用のスケジュール情報を割り当てます。[※1] , 多くの描画可能オブジェクトは画像についての情報を持つXMLあるいはビットマップなどのリソースファイルから読み込まれます。基本クラスはDrawableです。Resourcesを参照下さい。
- Panel
- パネルは特定のクラスには属さない概念です。親ウィンドウと密接に結びついている点ではビューの一種と見れますが、クリックなどを処理出来たり、親オブジェクトに関連付いた単純なタスクを処理することが出来ます。パネルは親オブジェクト上に浮いており、親オブジェクトからの相対位置で指定されます。[※2] Androidにより実装されている一般的なパネルのサンプルは全画面に存在するオプションメニューです。現時点では、パネルを生成するためのクラスやメソッドは存在せず、概念的なものです。
- Dialog
- ダイアログはボタンを持ち得、軽量なフォームとして動作する浮動ウィンドウです。機能的にはボタンクリックなどの単純なアクションを受け、必要ならば値を返すというものです。履歴スタック上に永続的に存在したり、複雑なレイアウトを持ったり、複雑なアクションを実行することは想定されていません。Androidではオプションボタンを盛り込んだ単純なデフォルトダイアログを用意していますが、独自のダイアログレイアウトを定義することも出来ます。基本クラスはDialogで、ダイアログボックスを開くためのヘルパメソッドはActivity.showAlert() 系のものです。
- Window
- ルック&フィール(タイトルバーのテキスト、メニューの位置と内容など)のような一般的なウィンドウ要素を指定するための抽象クラスです。ダイアログとアクティビティはWindowのインスタンスを用いてウィンドウのレンダリングを行いますので、アプリケーション開発者自身が実装する必要はありません。
- Surface
- 画面に関連付いている[※3] メモリブロックです。サーフェスは描画用にキャンバスオブジェクトを持ち、レイヤー描画やサイズ変更のためのヘルパメソッドを提供します。アプリケーション開発者は、このクラスを直接利用するべきではなく、代わりにSurfaceViewを使うべきです。
- SurfaceView
- 描画のためのサーフェスをラップするビューオブジェクトで、サイズとフォーマットをダイナミックに指定するためのメソッドを公開します。カメラアプリではサーフェスビューを用い、画面のプレビュー表示を行います。サーフェスビューはゲームやカメラプレビューなどの、リソース関連の操作においてUIスレッドから独立して描画を行う方法を提供しますが、メモリをより多く消費します。サーフェスビューはCanvasとOpenGL ESグラフィックスの両方をサポートします。
- Canvas
- ビット列を配置する描画サーフェスです。[※4] 標準的なコンピュータにおけるビットマップ、線、円、長方形、テキストなどの描画機能を持ちます。これはビットマップやサーフェスを利用します。[※5] キャンバスは2Dオブジェクトを画面に描画するのに最も単純で簡単な方法ですが、OpenGL ESが行うようなハードウェアアクセラレーションは提供しません。
- OpenGL ES
- Androidは複雑な3Dイメージを高速処理出来るOpenGL ESライブラリをサポートします。キャンバスオブジェクトに比べて利用は難しいですが、3Dオブジェクトには向いています。graphics.glutilsでOpenGL ES機能を提供しています。
- [※1]怪しすぎる
- [※2]めっちゃ怪しい
- [※3]怪しい
- [※4]めちゃ怪しい
- [※5]だいぶ怪しい