このページの本文へ

前へ 1 2 3 4 次へ

これで作れる! Androidのアプリケーション 第7回

Androidアプリの設定画面を作成する

2010年08月12日 18時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

必ず必要なアプリケーションの設定画面

 Androidは、設定画面と設定値を簡単に扱うための仕組みを用意しています。ちょっと複雑なアプリケーションになれば、動作を変えるような設定項目が必要になります。このときに必要になるのは、実際に設定を行なう「画面」と、設定値を管理する機能です。多くのアプリケーションに必要になる機能でありながら、たとえばWindowsなどではレジストリへのアクセス機能が用意されているのみで、設定画面などは、ほとんどゼロから開発者が作らねばなりません。

 Androidでは、設定用画面を作るためにPreferenceオブジェクトPreferenceManagerPreferenceActivityクラスが用意されています。簡単にいうと、設定用の画面をxmlで作ってPreferenceActivityとして設定画面を作ると、ここに対してユーザーが行なった操作は、自動的にPreferenceオブジェクトに保存されます。設定値はAndroidのファイルシステム中にXMLファイルとして保存されます。

 このとき、アプリケーションのパッケージ名を自動で使うため、開発者は、設定値がどのような形で保存されているのかなどは考える必要はありません。PreferenceManagerは、このPreferenceオブジェクトを扱うためのクラスで、これを使うことでアプリケーション内のJavaクラスで設定値へのアクセスが可能になるほか、設定画面を持たない設定値(アプリケーションの状態)などを保存させることができます。

設定画面で利用できる7つのパーツ

 設定画面は、簡単なものなら、xmlファイルを作るだけで利用可能です。設定画面(PreferenceActivity)のxmlファイルは、プレファレンス画面エディタで作ることができ、直接xmlファイルを書く必要はありません。

Preference画面編集のためのPreferenceエディタ。設定項目を追加していくだけで、設定画面を作ることができる

 アプリケーション開発では、複雑な設定画面を作る必要が出てくる場合もあります。ですが多くの設定項目は単純で、真偽値(オンかオフか)や文字列、数値などです。通常は複雑であっても、これらの組合せで設定値を構成することが可能です。ただ、場合によっては、GUIを生かした設定画面を作りたいこともあるでしょう。このような場合には、通常のアクティビティのようにレイアウトファイルを作り、これを設定画面から呼び出すようにします。

 設定画面用のxmlファイルを作るには、resフォルダの下にxmlフォルダを作り(ファイルメニュー→「新規」→「フォルダ」)、そこにAndroid xmlファイルを作ります(「ファイルメニュー」→「新規」→「Android xml file」)。

 このプレファレンス画面エディタで、プレファレンス画面を構成する「部品」として使えるのは、以下の7つパーツです。

チェックボックス(CheckBoxPreference)
テキスト入力(EditTextPreference)
リスト(ListPreference)
リングトーン(RingtonePreference)
プレファレンス(Preference)
プレファレンスカテゴリ(PreferenceCategory)
プレファレンススクリーン(PreferenceScreen)

 このうち、「Preference」は、レイアウトファイルを指定して、カスタムの設定パーツを作る場合に利用します。ただし、この場合、レイアウトファイル内で指定されたandroid.widgetsから値を取得して保存するコードを書く必要があります。

 また1つの設定画面(Activity)は、1つの「PreferenceScreen」に相当しますが、PreferenceScreenを入れ子にすることで、別の設定画面を定義することもできます。「PreferenceCategory」は、パーツをグループ化するときに使います。

 また、コードから利用するときには、上記のパーツ(実体はクラスです)に加え、ベースになるクラスとして以下のものが使えます。

DialogPreference
PrefarenceGroup

 DialogPreferenceは、ListPreferenceやEditTextPreferenceなど、ダイアログボックスを開く設定パーツの親となるクラスです。ここから子クラスを作ることで、専用のダイアログボックスを開く設定用パーツを作ることが可能です。また、PrefarenceGroupは、PreferenceScreenやPreferenceCategoryの親となるクラスです。

 どのようなことができるかを見るために作ったのが今回作成したSample06です。WorldClockの場合については後で解説しますが、このSample06は、xmlファイルで表現できるものを示すために作成したものです。以下のリンクからプロジェクトファイルをダウンロードできます。動作するプログラムはAndroidマーケットにアップロードしてあります。

sample06.zip

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン