Androidアプリケーションの構築には、特有のUI要素と設計パターンを理解することが不可欠です。
アクティビティ:ユーザー操作の中核
アクティビティは画面単位の操作を管理するクラスで、ユーザーとの対話を制御します。各画面は独立したライフサイクルを持ち、AppCompatActivityを継承することで古いOSバージョンへの互換性を確保できます。
レイアウトとビュー階層
レイアウトXMLファイルは画面構成を定義し、ルート要素としてLinearLayoutなどを指定する際には、名前空間を明示的に宣言する必要があります:
xmlns:android="http://schemas.android.com/apk/res/android"
UIはViewクラスを基底とするコンポーネント群で構成されます。ViewGroupは子要素を配置するコンテナで、代表的なサブクラスにはLinearLayoutやRelativeLayoutがあります。TextViewやButtonは直接ユーザーとやり取りする末端コンポーネントです。
リソースの活用
画像、文字列、レイアウトなどの非コードアセットはres/配下に格納され、自動生成されるRクラスを通じて参照可能です。例えば、レイアウトファイルquiz_screen.xmlはR.layout.quiz_screenでアクセスできます。
コンポーネントにIDを付与するには、属性android:id="@+id/component_name"を指定します。これにより、コード内でfindViewById()を使ってオブジェクトを取得できます:
TextView label = findViewById(R.id.label_text);
Button actionBtn = findViewById(R.id.action_button);
文字列リソースの管理
複数の言語や設定に対応するため、文字列はres/values/strings.xmlなどに集中管理します。各エントリは<string name="key">内容</string>形式で定義され、XML内では@string/key、コード内ではR.string.keyで参照します。
イベント駆動とリスナー
Androidアプリはイベント駆動型であり、ユーザー操作に応じて処理を実行します。ボタンクリックなどのイベントには、匿名内部クラスでリスナーを登録します:
actionBtn.setOnClickListener(v -> {
// クリック時の処理
});
簡易通知:トーストメッセージ
一時的なフィードバックにはToastを使用します。表示時間やメッセージ内容を指定して作成し、show()で即時表示できます:
Toast.makeText(this, R.string.feedback_msg, Toast.LENGTH_LONG).show();
ここでthisは現在のアクティビティ(Contextのサブクラス)、R.string.feedback_msgは事前に定義した文字列リソースです。