Android之PreferenceActivity
現有某Activity專門用于手機屬性設置 那么應該如何做呢?
Activity + Preference 組合 前者用于界面構建 后者用于設置數據存放 其實 這是正確的 但是 這會比較繁瑣 因為 每個設置選項 都要建立與其對應的Preference。所以現在有更好的選擇了那就是本文的主角:PreferenceActivity 。
我們看到Android系統本身就大量用到了PreferenceActivity來對系統進行信息配置和管理,那么它是怎么保存數據的呢,如何創建PrefenceActivity的呢,更關鍵是怎樣觸發相應事件的呢。
PreferenceActivity是如何保存的數據呢?
Android系統有四種基本的數據保存方法:
SharedPreference,文件,SQLite,ContentProvider。Preference,對就是使用SharedPreferneces以鍵值對的形式進行保存的,當然,我們也可以通過SharedPreferences來獲取PreferenceActivity設置的值。
創建一個PreferenceActivity:
創建Android項目,并添加一個Android xml文件。注意,這次選擇的不是Layout,而是Preference,而且注意Folder路徑是 res/xml。
1、在res/xml/下打開添加的preference.xml文件。
下面我們看看PrefeneceActivity都提供了哪幾種元素可供使用。點擊Add按鈕,在打開的新窗口中可以看到以下幾項:
CheckBoxPreference:CheckBox選擇項,對應的值的ture或flase。如圖:
EditTextPreference:輸入編輯框,值為String類型,會彈出對話框供輸入。
ListPreference: 列表選擇,彈出對話框供選擇。
Preference:只進行文本顯示,需要與其他進行組合使用。
PreferenceCategory:用于分組。效果如下:
PreferenceScreen:PreferenceActivity的根元素,必須為它。
?
RingtonePreference:系統玲聲選擇。
?
相應屬性分析:
PreferenceCategory屬性分析:
title:顯示的標題
key:唯一標識(至少在同一程序中是唯一),SharedPreferences也將通過此Key值進行數據保存,也可以通過key值獲取保存的信息 (以下相同)。
CheckBoxPreference屬性分析:
Key:唯一標識.
title:顯示標題(大字體顯示)
summary:副標題(小字體顯示)
defaultValue:默認值(當然,此處只能是true或false了)
Preference屬性分析:
Key:唯一標識.
title:顯示標題(大字體顯示)
summary:副標題(小字體顯示)
dependency:附屬,即標識此元素附屬于某一個元素(通常為CheckBoxPreference)。dependency值為所附屬元素的key。上面代碼中的Preference元素附屬于key等于“apply_bluetooth”的CheckPreference元素,當CheckPreference值為true時,Preference則為可用,否則為不可用。
EditTextPreperence屬性分析:
Key:唯一標識.
title:顯示標題(大字體顯示)
ListPreference屬性分析:
Key:唯一標識.
title:顯示標題(大字體顯示)
dialogTitle:彈出對話框的標題
entries:列表中顯示的值。為一個數組,通讀通過資源文件進行設置。
entryValues:列表中實際保存的值,也entries對應。為一個數組,通讀通過資源文件進行設置。以下代碼顯示的是arrays.xml文件中內容:
PreferenceActivity是專門用于顯示preference的,所以只要創建一個繼承自PreferenceActivity類即可。
public void onCreate(Bundle savedInstanceState) {
??? super.onCreate(savedInstanceState);
??? // 所的的值將會自動保存到?SharePreferences
??? addPreferencesFromResource(R.xml.preference);
}
如何響應PreferenceActivity的操作呢?
其實只要重寫PreferenceActivity的 onPreferenceTreeClick的方法就可以了,通過參數preference來判斷是對那一個元素進行的,并根據需要進行操作。
?測試代碼:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
??? <PreferenceCategory
??????? android:key="set_local"
??????? android:title="我的位置" >
??????? <CheckBoxPreference
??????????? android:key="apply_wife"
??????????? android:summary="使用無線網絡在應用程序(例如Google地圖)中查看位置"
??????????? android:title="使用無線網絡" />
??? </PreferenceCategory>
??? <CheckBoxPreference
??????? android:key="apply_gps"
??????? android:summary="定位到街道級別(需要消耗更多的電量以及天氣允許)"
??????? android:title="使用GPS" >
??? </CheckBoxPreference>
??? <PreferenceCategory
??????? android:key="set_net"
??????? android:title="無線和網絡設置" >
??????? <CheckBoxPreference
??????????? android:key="apply_fly"
??????????? android:summary="禁用所有無線連接"
??????????? android:title="飛行模式" >
??????? </CheckBoxPreference>
??????? <CheckBoxPreference
??????????? android:key="apply_internet"
??????????? android:summary="禁用通過USB共享Internet連接"
??????????? android:title="Internet共享" >
??????? </CheckBoxPreference>
??????? <CheckBoxPreference
??????????? android:key="apply_wifi"
??????????? android:summary="打開Wi-Fi"
??????????? android:title="Wi-Fi" >
??????? </CheckBoxPreference>
??????? <Preference
??????????? android:dependency="apply_wifi"
??????????? android:key="wifi_setting"
??????????? android:summary="設置和管理無線接入點"
??????????? android:title="Wi-Fi設置" >
??????? </Preference>
??????? <CheckBoxPreference
??????????? android:key="apply_bluetooth"
??????????? android:summary="啟用藍牙"
??????????? android:title="藍牙" >
??????? </CheckBoxPreference>
??????? <Preference
??????????? android:dependency="apply_bluetooth"
??????????? android:key="bluetooth_setting"
??????????? android:summary="管理連接、設備設備名稱和可檢測性"
??????????? android:title="藍牙設置" >
??????? </Preference>
??????? <EditTextPreference
??????????? android:key="number_edit"
??????????? android:title="輸入電話號碼" >
??????? </EditTextPreference>
??????? <ListPreference
??????????? android:dialogTitle="選擇部門"
??????????? android:entries="@array/department"
??????????? android:entryValues="@array/department_value"
??????????? android:key="depart_value"
??????????? android:title="部門設置" >
??????? </ListPreference>
??????? <RingtonePreference
??????????? android:key="ring_key"
??????????? android:ringtoneType="all"
??????????? android:showDefault="true"
??????????? android:showSilent="true"
??????????? android:title="鈴聲" >
??????? </RingtonePreference>
??? </PreferenceCategory>
</PreferenceScreen>
?
?
總結
以上是生活随笔為你收集整理的Android之PreferenceActivity的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学建模十大常用软件(转)
- 下一篇: 前端学习(2844):ui另一种按需加载