2009年11月16日月曜日

Android 設定画面を作成する

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

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

XMLで定義する方法

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

pref.xml の例
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">  
  3.   <PreferenceCategory android:title="Libraroid Setting">  
  4.     <CheckBoxPreference  
  5.       android:key="checkbox_value"  
  6.       android:title="Setting1"  
  7.       android:summary="sample of checkbox setting" />  
  8.     <EditTextPreference  
  9.       android:key="edittext_value"  
  10.       android:title="Setting2"  
  11.       android:summary="sample of edittext setting"  
  12.       android:dialogTitle="Setting edittext"  
  13.       android:dialogMessage="please set values" />  
  14.     <ListPreference  
  15.       android:key="list_value"  
  16.       android:title="Setting3"  
  17.       android:summary="sample of list setting"  
  18.       android:entries="@array/search_condition"  
  19.       android:entryValues="@array/search_condition_value" />  
  20.     <RingtonePreference  
  21.       android:key="ringtone_value"  
  22.       android:title="Setting4"  
  23.       android:summary="sample of ringtone setting"  
  24.       android:showDefault="true"  
  25.       android:showSilent="true"  
  26.       android:ringtoneType="ringtone" />  
  27.   </PreferenceCategory>  
  28. </PreferenceScreen>  


こんな階層にする
  1. <PreferenceScreen>  
  2.   <PreferenceCategory>  
  3.     各設定タイプのタグ  
  4.   </PreferenceCategory>  
  5. </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
   タイトル

アクティビティの例
  1. import android.os.Bundle;  
  2. import android.preference.PreferenceActivity;  
  3.   
  4. public class PreferenceActivityExample extends PreferenceActivity {  
  5.   @Override  
  6.   public void onCreate(Bundle savedInstanceState){  
  7.     super.onCreate(savedInstanceState);  
  8.     addPreferencesFromResource(R.xml.pref);  
  9.   }  
  10. }  


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

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


 

0 件のコメント:

コメントを投稿