在開發應用程序的過程中我們有很大的機會需要用到參數設置功能,那麼在Android應用中,我們如何實現參數設置界面及參數存儲呢,下面我們來介紹一下Android中的一個特殊Activity–PreferencesActivity。PreferencesActivity是Android中專門用來實現程序設置界面及參數存儲的一個Activity,我們用一個實例來簡介如何使用PreferencesActivity。
下圖是一個參數設置界面:
以此爲例我們來介紹一下如何實現這個界面。首先建立一個xml來描述這個界面,文件爲res/xml/preferences.xml
- <?xml version="1.0" encoding="utf-8"?>
- <PreferenceScreen
- xmlns:android="http://schemas.android.com/apk/res/android">
- <PreferenceCategory android:title="PreferenceCategory 1">
- <CheckBoxPreference
- android:key="CheckBox1"
- android:title="CheckBox"
- android:summaryOn="某功能: 開啓"
- android:summaryOff="某功能: 關閉"
- android:defaultValue="true"
- />
- </PreferenceCategory>
- <PreferenceCategory android:title="PreferenceCategory 2">
- <PreferenceScreen android:title="二級PreferenceScreen">
- <CheckBoxPreference
- android:key="CheckBox2"
- android:title="CheckBox"
- android:summaryOn="某功能: 開啓"
- android:summaryOff="某功能: 關閉"
- android:defaultValue="true"
- />
- </PreferenceScreen>
- </PreferenceCategory>
- <PreferenceCategory android:title="PreferenceCategory 3">
- <ListPreference
- android:key="ListPreference"
- android:title="ListPreference"
- android:summary="ListPreference測試"
- android:dialogTitle="ListPreference"
- android:entries="@array/entries_list_preference"
- android:entryValues="@array/entriesvalue_list_preference"
- />
- <EditTextPreference
- android:key="EditTextPreference"
- android:title="EditTextPreference"
- android:summary="點擊輸入"
- android:dialogTitle="輸入設置"
- />
- <RingtonePreference
- android:key="RingtonePreference"
- android:title="RingtonePreference"
- android:summary="選擇鈴聲"
- />
- </PreferenceCategory>
- </PreferenceScreen>
這個例子中包括了PreferenceActivity中常見的幾種組件,以下爲具體介紹及用法:
PreferenceScreen:設置頁面,可嵌套形成二級設置頁面,用Title參數設置標題。
PreferenceCategory:某一類相關的設置,可用Title參數設置標題。
CheckBoxPreference:是一個CheckBox設置,只有兩種值,true或false,可用Title參數設置標題,用summaryOn和summaryOff參數來設置控件選中和未選中時的提示。
ListPreference:下拉框選擇控件,用Title參數設置標題,用Summary參數設置說明,點擊後出現下拉框,用dialogTitle設置下拉框的標題,下拉框內顯示的內容和具體的值需要在res/values/array.xml中設置兩個array來表示。圖中的array.xml設置如下:
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string-array name="entries_list_preference">
- <item>test1</item>
- <item>test2</item>
- <item>test3</item>
- </string-array>
- <string-array name="entriesvalue_list_preference">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- </string-array>
- </resources>
EditTextPreference:輸入框控件,點擊後可輸入字符串設置。用Title參數設置標題,Summary參數設置說明,dialogTitle參數設置輸入框的標題。
RingtonePreference:鈴聲選擇框,點擊後可選擇系統鈴聲。Title參數設置標題,Summary參數設置說明,dialogTitle參數設置鈴聲選擇框的標題。
PreferenceActivity 收藏
在開發應用程序的過程中我們有很大的機會需要用到參數設置功能,那麼在Android應用中,我們如何實現參數設置界面及參數存儲呢,下面我們來介紹一下Android中的一個特殊Activity–PreferencesActivity。PreferencesActivity是Android中專門用來實現程序設置界面及參數存儲的一個Activity,我們用一個實例來簡介如何使用PreferencesActivity。
下圖是一個參數設置界面:
以此爲例我們來介紹一下如何實現這個界面。首先建立一個xml來描述這個界面,文件爲res/xml/preferences.xml
- <?xml version="1.0" encoding="utf-8"?>
- <PreferenceScreen
- xmlns:android="http://schemas.android.com/apk/res/android">
- <PreferenceCategory android:title="PreferenceCategory 1">
- <CheckBoxPreference
- android:key="CheckBox1"
- android:title="CheckBox"
- android:summaryOn="某功能: 開啓"
- android:summaryOff="某功能: 關閉"
- android:defaultValue="true"
- />
- </PreferenceCategory>
- <PreferenceCategory android:title="PreferenceCategory 2">
- <PreferenceScreen android:title="二級PreferenceScreen">
- <CheckBoxPreference
- android:key="CheckBox2"
- android:title="CheckBox"
- android:summaryOn="某功能: 開啓"
- android:summaryOff="某功能: 關閉"
- android:defaultValue="true"
- />
- </PreferenceScreen>
- </PreferenceCategory>
- <PreferenceCategory android:title="PreferenceCategory 3">
- <ListPreference
- android:key="ListPreference"
- android:title="ListPreference"
- android:summary="ListPreference測試"
- android:dialogTitle="ListPreference"
- android:entries="@array/entries_list_preference"
- android:entryValues="@array/entriesvalue_list_preference"
- />
- <EditTextPreference
- android:key="EditTextPreference"
- android:title="EditTextPreference"
- android:summary="點擊輸入"
- android:dialogTitle="輸入設置"
- />
- <RingtonePreference
- android:key="RingtonePreference"
- android:title="RingtonePreference"
- android:summary="選擇鈴聲"
- />
- </PreferenceCategory>
- </PreferenceScreen>
這個例子中包括了PreferenceActivity中常見的幾種組件,以下爲具體介紹及用法:
PreferenceScreen:設置頁面,可嵌套形成二級設置頁面,用Title參數設置標題。
PreferenceCategory:某一類相關的設置,可用Title參數設置標題。
CheckBoxPreference:是一個CheckBox設置,只有兩種值,true或false,可用Title參數設置標題,用summaryOn和summaryOff參數來設置控件選中和未選中時的提示。
ListPreference:下拉框選擇控件,用Title參數設置標題,用Summary參數設置說明,點擊後出現下拉框,用dialogTitle設置下拉框的標題,下拉框內顯示的內容和具體的值需要在res/values/array.xml中設置兩個array來表示。圖中的array.xml設置如下:
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string-array name="entries_list_preference">
- <item>test1</item>
- <item>test2</item>
- <item>test3</item>
- </string-array>
- <string-array name="entriesvalue_list_preference">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- </string-array>
- </resources>
EditTextPreference:輸入框控件,點擊後可輸入字符串設置。用Title參數設置標題,Summary參數設置說明,dialogTitle參數設置輸入框的標題。
RingtonePreference:鈴聲選擇框,點擊後可選擇系統鈴聲。Title參數設置標題,Summary參數設置說明,dialogTitle參數設置鈴聲選擇框的標題。
以上是PreferenceActivity的xml描述,那麼在程序中我們只需要新建一個繼承自PreferenceActivity的Activity,然後在主程序中調用addPreferencesFromResource(XML的ID) 就可以了。這個PreferenceActivity中的設置存儲是完全自動的,你不需要再用代碼去實現設置的存儲,PreferenceActivity創建後會自動創建一個配置文件/data/data/you_package_name/shared_prefs/you_package_name_you_xml_name.xml。上例中自動生成的配置文件如下:
- <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
- <map>
- <string name="EditTextPreference">12332312</string>
- <string name="ListPreference">2</string>
- <string name="RingtonePreference">content://settings/system/ringtone</string>
- <boolean name="CheckBox1" value="true" />
- <boolean name="CheckBox2" value="true" />
- </map>