Android之PreferenceActivity應(yīng)用詳解(2)
更新時間:2012年11月13日 14:41:47 作者:
看到很多書中都沒有對PreferenceActivity做介紹,而我正好又在項目中用到,所以就把自己的使用的在這總結(jié)一下,也方便日后查找
看到很多書中都沒有對PreferenceActivity做介紹,而我正好又在項目中用到,所以就把自己的使用的在這總結(jié)一下,也方便日后查找。
PerferenceActivity是什么,看下面的截圖:
Android系統(tǒng)截圖(左)MusicPlayer Setting截圖(右)
好了,我們看到Android系統(tǒng)本身就大量用到了PreferenceActivity來對系統(tǒng)進行信息配置和管理,那么它是怎么保存數(shù)據(jù)的呢,如何創(chuàng) 建PrefenceActivity的呢,更關(guān)鍵是怎樣觸發(fā)相應(yīng)事件的呢。
先看第一個問題,PreferenceActivity是如何保存的數(shù)據(jù)。對Android系統(tǒng)了解的都知道,Android系統(tǒng)有四種基本的數(shù)據(jù)保存方 法,一是SharedPreference,二是文件,三是SQLite,四是ContentProvider??闯鰜砹税桑琍reference,對就 是使用SharedPreferneces以鍵值對的形式進行保存的,當然,我們也可以通過SharedPreferences來獲取 PreferenceActivity設(shè)置的值。
第二個問題:如何創(chuàng)建一個PreferenceActivity。 其實Eclipse提供了相應(yīng)的創(chuàng)建工具,和創(chuàng)建Layout是基本相同的。步驟如下:
創(chuàng)建Android項目,并添加一個Android xml文件。注意,這次選擇的不是Layout,而是Preference,而且注意Folder路徑是 res/xml.
添加完成之后,在res/xml/下打開添加的preference.xml文件??梢钥吹紸ndroid也為我們提供兩種編輯模式,可視化的結(jié)構(gòu) 設(shè)計及xml源碼設(shè)計。推薦使用structure進行創(chuàng)建。如圖所示:
下面我們看看PrefeneceActivity都提供了哪幾種元素可供使用。點擊Add按鈕,在打開的新窗口中可以看到以下幾項:
CheckBoxPreference:CheckBox選擇項,對應(yīng)的值的ture或flase。如圖:
EditTextPreference:輸入編輯框,值為String類型,會彈出對話框供輸入。
ListPreference: 列表選擇,彈出對話框供選
Preference:只進行文本顯示,需要與其他進行組合使用。
PreferenceCategory:用于分組。效果如下:
PreferenceScreen:PreferenceActivity的根元素,必須為它。
RingtonePreference:系統(tǒng)玲聲選擇。
OK,Preferenc的基本元素介紹完畢,下一節(jié)將使用它們創(chuàng)建一個完整的Preference并進行顯示。
-------------------------------------------------------------------------------
分析MusicPlayer Setting,第一部分為“我的位置”,包括“使用無線網(wǎng)線”和“使用GPS”兩個部分,而且都是CheckBox,根據(jù)上節(jié)學(xué)習(xí),應(yīng)該包括一個 PreferenceCategory和兩個CheckBoxPreference。
Xml代碼:
<PreferenceCategory android:title="我的位置" android:key="set_local">
<CheckBoxPreference android:key="apply_wifi"
android:summary="使用無線網(wǎng)絡(luò)在應(yīng)用程序(例如Google地圖)中查看位置"
android:title="使用無線網(wǎng)絡(luò)" android:defaultValue="true">
</CheckBoxPreference>
<CheckBoxPreference android:key="apply_gps"
android:summary="定位到街道級別(需要消耗更多的電量以及天氣允許)"
android:title="使用GPS">
</CheckBoxPreference>
</PreferenceCategory>
以上代碼當然也可以用Android提供的IDE工具直接生成。視頻結(jié)構(gòu)如下:
PreferenceCategory 屬性分析:
title:顯示的標題
key:唯一標識(至少在同一程序中是唯一),SharedPreferences也將通過此Key值進行數(shù)據(jù)保存,也可以通過key值獲取保存的信息 (以下相同)。
CheckBoxPreference屬性分析:
Key:唯一標識.
title:顯示標題(大字體顯示)
summary:副標題(小字體顯示)
defaultValue:默認值(當然,此處只能是true或false了)
Preference.xml的第二部分為“無線和網(wǎng)絡(luò)設(shè)置”,此部分包括的內(nèi)容比較多,也稍微復(fù)雜,一步一步來分析。
xml代碼:
<PreferenceCategory android:title="無線和網(wǎng)絡(luò)設(shè)置">
<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:summary="設(shè)置和管理無線接入點" android:title="Wi-Fi設(shè)置"
android:dependency="apply_wifi" android:key="wifi_setting">
</Preference>
<CheckBoxPreference android:key="apply_bluetooth"
android:summary="啟用藍牙" android:title="藍牙">
</CheckBoxPreference>
<Preference android:summary="管理連接、設(shè)備設(shè)備名稱和可檢測性"
android:title="藍牙設(shè)置" android:dependency="apply_bluetooth"
android:key="bluetooth_setting">
</Preference>
<EditTextPreference android:key="number_edit"
android:title="輸入電話號碼">
</EditTextPreference>
<ListPreference android:title="部門設(shè)置" android:entries="@array/department"
android:entryValues="@array/department_value"
android:dialogTitle="選擇部門"
android:key="depart_value">
</ListPreference>
<RingtonePreference android:ringtoneType="all" android:title="玲聲"
android:showDefault="true" android:key="ring_key"
android:showSilent="true">
</RingtonePreference>
</PreferenceCategory>
對應(yīng)的Structure圖:
第二部分中前三個都為CheckBoxPreference,不心多說,從<Preference android:key="bluetooth_setting"/> 開始。
Preference屬性分析:
Key:唯一標識.
title:顯示標題(大字體顯示)
summary:副標題(小字體顯示)
dependency:附屬(嘛意思),即標識此元素附屬于某一個元素(通常為CheckBoxPreference),dependency值為所附屬 元素的key。上面代碼中的Preference元素附屬于key等于“apply_bluetooth”的CheckPreference元素,當 CheckPreference值為true時,Preference則為可用,否則為不可用。
EditTextPreperence屬性分析:
Key:唯一標識.
title:顯示標題(大字體顯示)
ListPreference屬性分析:
Key:唯一標識.
title:顯示標題(大字體顯示)
dialogTitle:彈出對話框的標題
entries:列表中顯示的值。為一個數(shù)組,通讀通過資源文件進 行設(shè)置。
entryValues:列表中實際保存的值,也 entries對應(yīng)。為一個數(shù)組,通讀通過資源文件進行設(shè)置。以下代碼顯示的是arrays.xml文件中內(nèi)容:
<resources>
<string-array name="department">
<item>綜合部</item>
<item>行政部</item>
<item>外貿(mào)部</item>
</string-array>
<string-array name="department_value">
<item>001</item>
<item>002</item>
<item>003</item>
</string-array>
</resources>
RingtonePreference :玲聲(暫時沒有用到過),暫時略過。
OK,Preference.xml內(nèi)容已經(jīng)分析完畢,屬性都大致相同,相信親自動力一試也就那么回事。那么如何把Preference.xml中 內(nèi)容展現(xiàn)出來呢?
Layout是通過繼續(xù)自Activity的類來進行顯示的,前面提到過,PreferenceActivity是專門用于顯示 preference的,所以只要創(chuàng)建一個繼承自PreferenceActivity類即可。代碼如下:
public class Setting extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 所的的值將會自動保存到SharePreferences
addPreferencesFromResource(R.xml.preference);
}
}
接下來就是運行程序,顯示勞動成果。至此,工作已經(jīng)完成大半,所有的值都會保存到SharedPreferences中,我們也可以讀取到保存的結(jié) 果。
還有一個重要的問題,就是如何響應(yīng)PreferenceActivity的操作。其實只要重寫PreferenceActivity的 onPreferenceTreeClick的方法就可以了,通過參數(shù)preference來判斷是對那一個元素進行的,并根據(jù)需要進行操作。
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
Preference preference) {
return false;
}
Ok,到此關(guān)于PreferenceActvity的相關(guān)內(nèi)容就完了,日后有什么重大發(fā)現(xiàn)會補上。
PerferenceActivity是什么,看下面的截圖:


Android系統(tǒng)截圖(左)MusicPlayer Setting截圖(右)
好了,我們看到Android系統(tǒng)本身就大量用到了PreferenceActivity來對系統(tǒng)進行信息配置和管理,那么它是怎么保存數(shù)據(jù)的呢,如何創(chuàng) 建PrefenceActivity的呢,更關(guān)鍵是怎樣觸發(fā)相應(yīng)事件的呢。
先看第一個問題,PreferenceActivity是如何保存的數(shù)據(jù)。對Android系統(tǒng)了解的都知道,Android系統(tǒng)有四種基本的數(shù)據(jù)保存方 法,一是SharedPreference,二是文件,三是SQLite,四是ContentProvider??闯鰜砹税桑琍reference,對就 是使用SharedPreferneces以鍵值對的形式進行保存的,當然,我們也可以通過SharedPreferences來獲取 PreferenceActivity設(shè)置的值。
第二個問題:如何創(chuàng)建一個PreferenceActivity。 其實Eclipse提供了相應(yīng)的創(chuàng)建工具,和創(chuàng)建Layout是基本相同的。步驟如下:
創(chuàng)建Android項目,并添加一個Android xml文件。注意,這次選擇的不是Layout,而是Preference,而且注意Folder路徑是 res/xml.

添加完成之后,在res/xml/下打開添加的preference.xml文件??梢钥吹紸ndroid也為我們提供兩種編輯模式,可視化的結(jié)構(gòu) 設(shè)計及xml源碼設(shè)計。推薦使用structure進行創(chuàng)建。如圖所示:

下面我們看看PrefeneceActivity都提供了哪幾種元素可供使用。點擊Add按鈕,在打開的新窗口中可以看到以下幾項:

CheckBoxPreference:CheckBox選擇項,對應(yīng)的值的ture或flase。如圖:

EditTextPreference:輸入編輯框,值為String類型,會彈出對話框供輸入。

ListPreference: 列表選擇,彈出對話框供選

Preference:只進行文本顯示,需要與其他進行組合使用。

PreferenceCategory:用于分組。效果如下:

PreferenceScreen:PreferenceActivity的根元素,必須為它。
RingtonePreference:系統(tǒng)玲聲選擇。

OK,Preferenc的基本元素介紹完畢,下一節(jié)將使用它們創(chuàng)建一個完整的Preference并進行顯示。
-------------------------------------------------------------------------------
分析MusicPlayer Setting,第一部分為“我的位置”,包括“使用無線網(wǎng)線”和“使用GPS”兩個部分,而且都是CheckBox,根據(jù)上節(jié)學(xué)習(xí),應(yīng)該包括一個 PreferenceCategory和兩個CheckBoxPreference。
Xml代碼:
復(fù)制代碼 代碼如下:
<PreferenceCategory android:title="我的位置" android:key="set_local">
<CheckBoxPreference android:key="apply_wifi"
android:summary="使用無線網(wǎng)絡(luò)在應(yīng)用程序(例如Google地圖)中查看位置"
android:title="使用無線網(wǎng)絡(luò)" android:defaultValue="true">
</CheckBoxPreference>
<CheckBoxPreference android:key="apply_gps"
android:summary="定位到街道級別(需要消耗更多的電量以及天氣允許)"
android:title="使用GPS">
</CheckBoxPreference>
</PreferenceCategory>
以上代碼當然也可以用Android提供的IDE工具直接生成。視頻結(jié)構(gòu)如下:

PreferenceCategory 屬性分析:
title:顯示的標題
key:唯一標識(至少在同一程序中是唯一),SharedPreferences也將通過此Key值進行數(shù)據(jù)保存,也可以通過key值獲取保存的信息 (以下相同)。
CheckBoxPreference屬性分析:
Key:唯一標識.
title:顯示標題(大字體顯示)
summary:副標題(小字體顯示)
defaultValue:默認值(當然,此處只能是true或false了)
Preference.xml的第二部分為“無線和網(wǎng)絡(luò)設(shè)置”,此部分包括的內(nèi)容比較多,也稍微復(fù)雜,一步一步來分析。
xml代碼:
復(fù)制代碼 代碼如下:
<PreferenceCategory android:title="無線和網(wǎng)絡(luò)設(shè)置">
<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:summary="設(shè)置和管理無線接入點" android:title="Wi-Fi設(shè)置"
android:dependency="apply_wifi" android:key="wifi_setting">
</Preference>
<CheckBoxPreference android:key="apply_bluetooth"
android:summary="啟用藍牙" android:title="藍牙">
</CheckBoxPreference>
<Preference android:summary="管理連接、設(shè)備設(shè)備名稱和可檢測性"
android:title="藍牙設(shè)置" android:dependency="apply_bluetooth"
android:key="bluetooth_setting">
</Preference>
<EditTextPreference android:key="number_edit"
android:title="輸入電話號碼">
</EditTextPreference>
<ListPreference android:title="部門設(shè)置" android:entries="@array/department"
android:entryValues="@array/department_value"
android:dialogTitle="選擇部門"
android:key="depart_value">
</ListPreference>
<RingtonePreference android:ringtoneType="all" android:title="玲聲"
android:showDefault="true" android:key="ring_key"
android:showSilent="true">
</RingtonePreference>
</PreferenceCategory>
對應(yīng)的Structure圖:

第二部分中前三個都為CheckBoxPreference,不心多說,從<Preference android:key="bluetooth_setting"/> 開始。
Preference屬性分析:
Key:唯一標識.
title:顯示標題(大字體顯示)
summary:副標題(小字體顯示)
dependency:附屬(嘛意思),即標識此元素附屬于某一個元素(通常為CheckBoxPreference),dependency值為所附屬 元素的key。上面代碼中的Preference元素附屬于key等于“apply_bluetooth”的CheckPreference元素,當 CheckPreference值為true時,Preference則為可用,否則為不可用。
EditTextPreperence屬性分析:
Key:唯一標識.
title:顯示標題(大字體顯示)
ListPreference屬性分析:
Key:唯一標識.
title:顯示標題(大字體顯示)
dialogTitle:彈出對話框的標題
entries:列表中顯示的值。為一個數(shù)組,通讀通過資源文件進 行設(shè)置。
entryValues:列表中實際保存的值,也 entries對應(yīng)。為一個數(shù)組,通讀通過資源文件進行設(shè)置。以下代碼顯示的是arrays.xml文件中內(nèi)容:
復(fù)制代碼 代碼如下:
<resources>
<string-array name="department">
<item>綜合部</item>
<item>行政部</item>
<item>外貿(mào)部</item>
</string-array>
<string-array name="department_value">
<item>001</item>
<item>002</item>
<item>003</item>
</string-array>
</resources>
RingtonePreference :玲聲(暫時沒有用到過),暫時略過。
OK,Preference.xml內(nèi)容已經(jīng)分析完畢,屬性都大致相同,相信親自動力一試也就那么回事。那么如何把Preference.xml中 內(nèi)容展現(xiàn)出來呢?
Layout是通過繼續(xù)自Activity的類來進行顯示的,前面提到過,PreferenceActivity是專門用于顯示 preference的,所以只要創(chuàng)建一個繼承自PreferenceActivity類即可。代碼如下:
復(fù)制代碼 代碼如下:
public class Setting extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 所的的值將會自動保存到SharePreferences
addPreferencesFromResource(R.xml.preference);
}
}
接下來就是運行程序,顯示勞動成果。至此,工作已經(jīng)完成大半,所有的值都會保存到SharedPreferences中,我們也可以讀取到保存的結(jié) 果。
還有一個重要的問題,就是如何響應(yīng)PreferenceActivity的操作。其實只要重寫PreferenceActivity的 onPreferenceTreeClick的方法就可以了,通過參數(shù)preference來判斷是對那一個元素進行的,并根據(jù)需要進行操作。
復(fù)制代碼 代碼如下:
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
Preference preference) {
return false;
}
Ok,到此關(guān)于PreferenceActvity的相關(guān)內(nèi)容就完了,日后有什么重大發(fā)現(xiàn)會補上。
您可能感興趣的文章:
- Android之PreferenceActivity應(yīng)用詳解
- Android 清除SharedPreferences 產(chǎn)生的數(shù)據(jù)(實例代碼)
- android中使用SharedPreferences進行數(shù)據(jù)存儲的操作方法
- Android中刪除Preference詳解
- Android SharedPreferences的使用分析
- Android設(shè)置PreferenceCategory背景顏色的方法
- Android編程之ListPreference用法實例分析
- android開發(fā)基礎(chǔ)教程—SharedPreferences讀寫
- Android學(xué)習(xí)筆記之Shared Preference
- Android中SharedPreference使用實例講解
- Android PreferenceActivity與PreferenceFragment詳解及簡單實例
相關(guān)文章
Android開發(fā)基礎(chǔ)使用ProgressBar加載進度條示例
這篇文章主要介紹了安卓開發(fā)基礎(chǔ)使用ProgressBar加載進度條示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02Android中ViewPager的PagerTabStrip與PagerTitleStrip用法實例
這篇文章主要介紹了Android中ViewPager的PagerTabStrip與PagerTitleStrip用法實例,這兩個子控件一般被用作添加標題,在實際效果上并不是那么好控制,使用的時候需要謹慎,需要的朋友可以參考下2016-06-06Android 個人理財工具一:項目概述與啟動界面的實現(xiàn)
本文主要介紹Android 開發(fā)個人理財工具項目概述與啟動界面的實現(xiàn),這里主要對實現(xiàn)項目的流程做了詳細概述,并對啟動界面簡單實現(xiàn),有需要的小伙伴可以參考下2016-08-08android MediaRecorder實現(xiàn)錄屏?xí)r帶錄音功能
這篇文章主要介紹了android MediaRecorder錄屏?xí)r帶錄音功能實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04Android?Jetpack?組件LiveData源碼解析
這篇文章主要為大家介紹了Android?Jetpack?組件LiveData源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03Android開發(fā)之ClipboardManager剪貼板功能示例
這篇文章主要介紹了Android開發(fā)之ClipboardManager剪貼板功能,結(jié)合簡單實例形式分析了Android使用ClipboardManager實現(xiàn)剪貼板功能的相關(guān)操作技巧,需要的朋友可以參考下2017-03-03Android中操作SQLite數(shù)據(jù)庫快速入門教程
這篇文章主要介紹了Android中操作SQLite數(shù)據(jù)庫快速入門教程,本文講解了數(shù)據(jù)庫基礎(chǔ)概念、Android平臺下數(shù)據(jù)庫相關(guān)類、創(chuàng)建數(shù)據(jù)庫、向表格中添加數(shù)據(jù)、從表格中查詢記錄等內(nèi)容,需要的朋友可以參考下2015-03-03Kotlin中List的Lambda表達式應(yīng)用與解析實例詳解
相比于Java的Lambda表達式只是一種簡化寫法,Kotlin中的Lambda功能極為強大,本文介紹Kotlin中List的Lambda表達式應(yīng)用與解析,感興趣的朋友一起看看吧2024-03-03