2011年11月28日月曜日

PreferenceActivityを使用した設定画面

以前予告した通り、設定画面の作り方について学習していきます。

設定画面は大抵のアプリケーションに用意されていて、
sirocoのアプリにも、勿論、用意するつもりです。

設定画面の作成方法は色々とありますが、
PreferenceActivityを使った、最もシンプルな方法を紹介します。

今回は先に実行結果。

上記imageの通り、
「チェックボックス」、「エディットテキスト」、「リスト」、「リングストン」を表示します。
それぞれの要素が次の"res/layout/preference.xml"の各タグに紐付いています。
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
 xmlns:android="http://schemas.android.com/apk/res/android">
 <PreferenceCategory android:title="@string/title">
  <CheckBoxPreference
   android:key="checkbox_key"
   android:title="@string/checkbox_title"
   android:summary="@string/checkbox_summary" />
  <EditTextPreference
   android:key="edittext_key"
   android:title="@string/edittext_title"
   android:summary="@string/edittext_summary"
   android:dialogTitle="@string/edittext_dialog_title" />
  <ListPreference
   android:key="list_key"
   android:title="@string/list_title"
   android:summary="@string/list_summary"
   android:dialogTitle="@string/list_dialog_title"
   android:entries="@array/list_entries"
   android:entryValues="@array/list_entry_values" />
  <RingtonePreference
   android:key="ringtone_key"
   android:title="@string/ringtone_title"
   android:showDefault="true"
   android:summary="@string/ringtone_summary" />
 </PreferenceCategory>
</PreferenceScreen>

05行目:CheckBoxPreferenceタグがチェックボックスに、
09行目:EditTextPreferenceタグがエディットテキストに、
14行目:ListPreferenceタグがリストに、
21行目:RingtonePreferenceタグがリングストンに対応します。

綺麗な入れ子になっているので、理解しやすいと思います。

次は画面に表示する文字列と、リストの要素関連のxmlファイルです。
"res/values/strings.xml"
<?xml version="1.0" encoding="utf-8"?>
<resources>
 <string name="app_name">preferenceSample</string>
    <string name="title">設定画面Sample</string>
    <string name="checkbox_title">Checkbox</string>
    <string name="checkbox_summary">CheckboxのSummary</string>
    <string name="edittext_title">EditText</string>
    <string name="edittext_summary">EditTextのSummary</string>
    <string name="edittext_dialog_title">
        EditTextのダイアログタイトル
    </string>
    <string name="list_title">List</string>
    <string name="list_summary">ListのSummary</string>
    <string name="list_dialog_title">Listのダイアログタイトル</string>
    <string name="ringtone_title">Ringtone</string>
    <string name="ringtone_summary">RingtoneのSummary</string>
</resources>

"res/values/arrays.xml"
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="list_entries">
        <item>First</item>
        <item>Second</item>
        <item>Third</item>
    </string-array>
    <string-array name="list_entry_values">
        <item>FirstのValue</item>
        <item>SecondのValue</item>
        <item>ThirdのValue</item>
    </string-array>
</resources>

最後にJavaコード。
addPreferencesFromResourceメソッドで
設定画面の項目を定義したxmlファイル(preference.xml)を指定しているだけです。
import android.os.Bundle;
import android.preference.PreferenceActivity;

public class PreferenceSample01 extends PreferenceActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.layout.preference);
    }
}

表示された要素をタップした様子は次の通りです。



大半がxmlファイルの設定で行える為、手軽に作成が出来ます。
実際のアプリの設定画面では、そのアプリに適した内容をpreference.xmlに設定するわけです。
sirocoの場合、カメラアプリを作成しようとしているので、
フラッシュのon/offの切り替えや、画面サイズなどを定義するのかな~

PreferenceActivityについては、あと何度か学習して、
より実践的な設定画面を作ってみたいと思います。

1 件のコメント:

  1. RingtonePreferenceで選択した値は取得できますか?

    返信削除