Android PreferenceActivity设置菜单使用
?android為了方便開發(fā),提供了一個特殊的activity類,PreferenceActivity,用來快速的實(shí)現(xiàn)一個設(shè)置界面,從名字就可以看出是繼承自Activity類(實(shí)際上是ListActivity),因而生命周期是一樣的。
?? 那么常見的設(shè)置菜單有兩種,一是只有一個header的(左圖),另一種是在3.0發(fā)布后加入的,多header的設(shè)置菜單(右圖)。那么要實(shí)現(xiàn)多header的設(shè)置菜單,需要引用新的類PreferenceFragment,我們今天只討論實(shí)現(xiàn)一個header的(比較常用)。
?
?????????????? ?????????
???
??? 那么如何用PreferenceActivity呢?
??? 首先我們需要一個配置文件,類似于main.xml,就是我們需要一個資源布局文件。
??? 在xml文件夾下創(chuàng)建一個conf.xml文件用于保存我們的布局
??
??? 目前android只提供了幾種可選的組建,包括
??? PreferenceScreen 表示一個新的設(shè)置窗口,也是我們的布局的根標(biāo)簽。
??? CheckBoxPreference 表示勾選的選項(xiàng)
??? ListPreference 表示一個選項(xiàng)列表
??? EditTextPreference 表示一個文本輸入框
??? PreferenceCategory 用于分組
??? RingtonePreference 用于鈴聲的設(shè)置
??? 這些都繼承自Preference,他們都有的特點(diǎn)就是都有一個key,這個的作用和我們常用的id差不多,一會如果我們要引用這個組建就要通過key來找到他。還有一個共有的屬性就是title,他就是每一個設(shè)置組建所顯示的內(nèi)容,summary屬性顯示下面的文本。
??? 其中比較特殊的是ListPreference,他需要關(guān)聯(lián)一個數(shù)組資源,如上面代碼中的@array/user_type
??? 更多的組建,大家可以產(chǎn)看sdk文檔,很多還沒有提供在xml直接使用。
??? 那么如何將xml和activity關(guān)聯(lián)呢?
??? 我們需要在onCreate方法里面調(diào)用
???
??? 這樣程序啟動就會自動加載這個視圖文件,效果如下
?????
????? 這個時候如果我們修改了配置的選項(xiàng),會默認(rèn)的保存在data/data目錄下,如果我們想獲取這些值,就可以參照上一篇文章中說講的內(nèi)容了。我們現(xiàn)在看一下這些數(shù)據(jù)存在哪里,在終端中打開adb shell ,我們切到data/data目錄下,進(jìn)入到我們的包中,可以看到shared_prefs文件夾,里面就有我們的com.yui_preferences.xml文件,打開就可以看到已經(jīng)寫入的一些數(shù)據(jù)了。
????
????
????? PreferenceActiviy實(shí)現(xiàn)事件監(jiān)聽
???? preferenceAcitivity提供了連個事件監(jiān)聽器
???? OnPreferenceChangeListener用來監(jiān)聽某個屬性是否發(fā)生了變化。它只有一個方法:
???? public abstract boolean onPreferenceChange (Preference preference, Object newValue)
???? 第一個參數(shù)是 發(fā)生變化的組件,第二個參數(shù)是新的數(shù)值
???? 如果返回true的話就將變化寫入文件,返回false不發(fā)生改變
?
???? 第二個監(jiān)聽器更為靈活
???? OnPreferenceClickListener 用來監(jiān)聽某個選項(xiàng)是否被點(diǎn)擊,它也只有一個方法
???? public abstract boolean onPreferenceClick (Preference preference) ?
???? 返回true表示處理事件
?
??? 接下來就是要給我們的組建注冊監(jiān)聽器:
???
???
為了方便演示,我們使用了Toast實(shí)時的顯示信息,這個非常簡單,就不多介紹了,那么在處理事件的時候,我們只需要判斷一下是哪個組件需要響應(yīng)就好了
?
? 最后看一下程序運(yùn)行的結(jié)果吧,當(dāng)我們改變設(shè)置的時候就可以監(jiān)聽到了,結(jié)合上一篇文章就可以完成一個完整的設(shè)置---讀寫的模塊了。
?
????????????? ??? ? ? ?
?
<Linker : http://www.cnblogs.com/octobershiner/>
?
轉(zhuǎn)載于:https://www.cnblogs.com/MMLoveMeMM/articles/3337936.html
總結(jié)
以上是生活随笔為你收集整理的Android PreferenceActivity设置菜单使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三星Samsung ML-2525W 驱
- 下一篇: Android Jetpack组件之Ap