2009年11月16日月曜日

Android 設定画面を作成する

アプリの設定画面用の Activity が用意されています。
それが 「PreferenceActivity」
ListActivity を拡張したクラスなので、各設定項目が
リスト状に配置されます。

画面の設定方法は
 ・ソースコードで定義する方法
 ・XMLで定義する方法
の2つがあります。

XMLで定義する方法

1. res の下に xml という名前のフォルダを作成
2. res/xml に pref.xml を作成
3. pref.xml に画面の配置を定義

pref.xml の例

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Libraroid Setting">
<CheckBoxPreference
android:key="checkbox_value"
android:title="Setting1"
android:summary="sample of checkbox setting" />
<EditTextPreference
android:key="edittext_value"
android:title="Setting2"
android:summary="sample of edittext setting"
android:dialogTitle="Setting edittext"
android:dialogMessage="please set values" />
<ListPreference
android:key="list_value"
android:title="Setting3"
android:summary="sample of list setting"
android:entries="@array/search_condition"
android:entryValues="@array/search_condition_value" />
<RingtonePreference
android:key="ringtone_value"
android:title="Setting4"
android:summary="sample of ringtone setting"
android:showDefault="true"
android:showSilent="true"
android:ringtoneType="ringtone" />
</PreferenceCategory>
</PreferenceScreen>


こんな階層にする

<PreferenceScreen>
<PreferenceCategory>
各設定タイプのタグ
</PreferenceCategory>
</PreferenceScreen>


各設定タイプのタグには

  * CheckBoxPreference
  * DialogPreference
  * EditTextPreference
  * ListPreference
  * RingtonePreference

があります。


これらに共通のパラメータにはこんなのがあります。
 android:defaultValue  
   初期値

 android:dependency
   この Preference が依存する他の Preference の key

 android:enabled
   この Preference が有効かどうか

 android:key
   システムに保存するときの key

 android:layout
   PeferenceActivity 画面内でのこの Preference の layout

 android:order
   Prefernce の順番、小さい方が最初

 android:persistent
   shared preferences に保存するかどうか

 android:selectable
   選択できるかどうか

 android:shouldDisableView
   この Preference が無効のとき、表示を無効にするかどうか

 android:summary
   タイトルの下の文字列、説明を書いたり、選択値を表示する

 android:title
   タイトル

アクティビティの例

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class PreferenceActivityExample extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref);
}
}


PreferenceActivity クラスを継承して、setContentView の代わりに
addPreferencesFromResource で pref.xml を読み込む

ここで設定されたデータは自動的にシステム内部に保存され、
PreferenceManager::getDefaultSharedPereference を使って
ソースコードからアクセスすることができますー。


 

0 件のコメント:

コメントを投稿