日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

PreferenceActivity(首选项设置页)

發(fā)布時(shí)間:2023/12/9 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PreferenceActivity(首选项设置页) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、PreferenceActivity簡(jiǎn)介

  一直都以為軟件的設(shè)置界面都是作者自己寫的,今天才發(fā)現(xiàn)有個(gè)現(xiàn)成的PreferenceActivity可以使用,非常方便。大家都應(yīng)該知道絕大多數(shù)應(yīng)用都有選項(xiàng)頁(yè)面,這里指的選項(xiàng)頁(yè)面絕大多數(shù)使用過PreferenceActivity繼承下來(lái)的(當(dāng)然,如果你牛逼你也可以自己寫)。如果你還不知道什么是Preference,請(qǐng)移步(http://blog.csdn.net/plussoft/article/details/9152573)。與其它偏好設(shè)置相同的,PreferenceActivity生成的信息也是用XML儲(chǔ)存的。另外值得注意的是,通過PreferenceActivity生成的XML文件,命名方式是定死了的,生成的XML文件在data/data/<工程名>/shared_prefs/下,名字為“<工程名>_Preference.xml”,這是無(wú)法改變的。正式因?yàn)槿绱?#xff0c;PreferenceActivity生成的XML也被稱為全局設(shè)置、應(yīng)用設(shè)置,有著至高無(wú)上的地位。在PreferenceActivity中,所有的修改都會(huì)自動(dòng)更新該XML文件,不需要我們手動(dòng)去設(shè)置大量的監(jiān)聽。另外,我們還有必要復(fù)習(xí)一下各種獲取SharedPreferences的方式:

一、getPreferences():可以獲取當(dāng)前Activity中的preference,這個(gè)方法我沒用過(主要是沒搞懂);

二、PreferenceManager.getDefaultSharedPreferences():顧名思義,獲取全局變量的Preferences,也就是PreferenceActivity生成的Preference;

三、getSharedPreferences():可以獲取該應(yīng)用中全部的preferences,也就是在(http://blog.csdn.net/plussoft/article/details/9152573)所提到的。前面兩種方法都是基于該方法的。

  回到PreferenceActivity。為了簡(jiǎn)化與preference相關(guān)的應(yīng)用開發(fā),android為我們提供了一系列的api來(lái)幫助我們。在PreferenceActivity中,給我們提供了四個(gè)選項(xiàng)集成控件:ListPreference,EditTextPreference,CheckBoxPreference和RingtonePreference。如果還不能夠滿足你,那你唯有自行開發(fā)了。另外,RingtonePreference在此不做介紹,個(gè)人感覺真沒什么用——有什么應(yīng)用會(huì)要用到你的鈴聲呢?下面開始展示PreferenceActivity的獨(dú)有魅力。


二、ListPreference

先來(lái)看看最終效果圖:


功能不多闡述。來(lái)看看MainActivity代碼:

package com.plusjun.preference;import android.os.Bundle; import android.preference.PreferenceActivity;/** 要記得是繼承PreferenceActivity而不是Activity*/ public class MainActivity extends PreferenceActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);/* 放入設(shè)置版面文件* 在這里,R.xml.mylistperference可以看作是布局文件*//** addPreferencesFromResource方法在Android3.0中就被棄用了* 但卻沒有替代方法* 谷歌的想法是,希望我們繼承PreferenceFragment來(lái)實(shí)現(xiàn)默認(rèn)選項(xiàng)頁(yè)* 但是這太難了。真的*/addPreferencesFromResource(R.xml.mylistperference);} }
res/xml/mylistperference.xml布局文件

<?xml version="1.0" encoding="utf-8"?> <!-- 對(duì)于該文件需要注意以下幾點(diǎn)第一:位置。該文件的位置是在res/xml/下的。第二:格式,PreferenceScreen為根標(biāo)簽,ListPreference為子標(biāo)簽。PreferenceScreen可以看作是一個(gè)大的框架第三:標(biāo)簽屬性含義android:key 唯一標(biāo)識(shí)符,和android:id相類似,PreferenceManager可以以其為參數(shù)通過findPreference獲取指定的preference注意,這個(gè)android:key的值也是Preference文件里面的XML“鍵”名android:title 大標(biāo)題android:summary 標(biāo)題下面的小字(這個(gè)要作為選項(xiàng)卡才有)android:entries 彈出的對(duì)話框中,列表顯示的文本內(nèi)容,注意哦,這里指定的是一個(gè)數(shù)組哦android:entryValues 與android:entries相對(duì)應(yīng)的值android:defaultValue 當(dāng)對(duì)應(yīng)值不存在時(shí)的默認(rèn)值android:dialogTitle 彈出的對(duì)話框中的標(biāo)題信息更多的標(biāo)簽設(shè)置等你來(lái)發(fā)掘--> <PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android"android:key="screen_list"android:title="標(biāo)題"android:summary="說明摘要"><ListPreferenceandroid:key="myListPreference"android:title="標(biāo)題"android:summary="說明摘要"android:entries="@array/list_entries"android:entryValues="@array/list_entries_value"android:dialogTitle="這里是彈出框"android:defaultValue="@string/deflault_list_entries_value"></ListPreference></PreferenceScreen>
我們的數(shù)據(jù)來(lái)源是在strings.xml文件中,這是一種良好的變成習(xí)慣。當(dāng)然了,不一定要strings.xml文件,你可以自定義文件,但是不能有相同的標(biāo)簽。

在strings.xml中添加一下代碼段:

<string-array name="list_entries_value"><item>shandong</item><item>fujian</item><item>beijing</item><item>hebei</item></string-array><string-array name="list_entries"><item>山東</item><item>福建</item><item>北京</item><item>河北</item></string-array><string name="deflault_list_entries_value">beijing</string>
在data/data/<工程名>/shared_prefs/下,名字為“<工程名>_Preference.xml“文件中,內(nèi)容如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="myListPreference">fujian1</string> </map>

由此可見,android:key="myListPreference"正是XML中的鍵名,值為我們選擇的值。


三、CheckBoxPreference

效果如下:


我們繼續(xù)拿上一個(gè)項(xiàng)目來(lái)修改。MainActivity仍保持不變:

package com.plusjun.preference;import android.os.Bundle; import android.preference.PreferenceActivity;public class MainActivity extends PreferenceActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);addPreferencesFromResource(R.xml.mylistperference);} }

res/xml/checkbox.xml布局文件

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"android:key="screen_list"android:summary="說明摘要"android:title="標(biāo)題" ><CheckBoxPreferenceandroid:key="medf"android:summaryOff="馬爾代夫未被選中"android:summaryOn="馬爾代夫被選中了"android:title="馬爾代夫" ></CheckBoxPreference><CheckBoxPreferenceandroid:key="mlqs"android:summaryOff="毛里求斯未被選中"android:summaryOn="毛里求斯被選中了"android:title="毛里求斯" ></CheckBoxPreference></PreferenceScreen>

最終在“<工程名>_Preference.xml“生成的文件內(nèi)容:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <boolean name="medf" value="true" /> <boolean name="mlqs" value="false" /> </map>

顯然,CheckBoxPreference要比ListPreference簡(jiǎn)單多了。


四、EditTextPreference

效果圖如下:


當(dāng)我們點(diǎn)擊主頁(yè)面的輸入名稱時(shí),就會(huì)彈出該對(duì)話框,讓我們輸入文字。

MainActivity仍保持不變:

package com.plusjun.preference;import android.os.Bundle; import android.preference.PreferenceActivity;public class MainActivity extends PreferenceActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);addPreferencesFromResource(R.xml.mylistperference);} }
res/xml/checkbox.xml

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"android:key="edittext_screen"android:summary="屏幕簡(jiǎn)要說明"android:title="屏幕標(biāo)題" ><EditTextPreferenceandroid:dialogTitle="輸入您的名稱:"android:key="editWord"android:defaultValue="im human"android:summary="簡(jiǎn)要說明"android:title="輸入名稱" ></EditTextPreference></PreferenceScreen>

五、Preferences分組

目的很明顯的,就是為了更美觀。把不同類型的選項(xiàng)進(jìn)行歸類,提高用戶體驗(yàn)。

首先第一種,就是制造二(多)級(jí)頁(yè)面。只有點(diǎn)進(jìn)去才會(huì)看到詳細(xì)選項(xiàng),如圖:


MainActivity仍保持不變,res/xml/checkbox.xml:

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"android:key="edittext_screen"android:summary="屏幕簡(jiǎn)要說明"android:title="屏幕標(biāo)題" ><!-- 第一組 --><PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android"android:key="edittext_screen"android:summary="點(diǎn)擊進(jìn)入第一組首選項(xiàng)"android:title="第一組" ><EditTextPreferenceandroid:dialogTitle="輸入您的名稱:"android:key="editTitlePreference1"android:summary="簡(jiǎn)要說明"android:title="輸入名稱" ></EditTextPreference></PreferenceScreen><!-- 第二組 --><PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android"android:key="edittext_screen"android:summary="點(diǎn)擊進(jìn)入第二組首選項(xiàng)"android:title="第二組" ><EditTextPreferenceandroid:dialogTitle="輸入您的名稱:"android:key="editTitlePreference2"android:summary="簡(jiǎn)要說明"android:title="輸入名稱" ></EditTextPreference></PreferenceScreen><!-- 第三組 --><PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android"android:key="edittext_screen"android:summary="點(diǎn)擊進(jìn)入第三組首選項(xiàng)"android:title="第三組" ><EditTextPreferenceandroid:dialogTitle="輸入您的名稱:"android:key="editTitlePreference3"android:summary="簡(jiǎn)要說明"android:title="輸入名稱" ></EditTextPreference></PreferenceScreen></PreferenceScreen>
可以看出,PreferenceScreen本質(zhì)上就是一個(gè)層次標(biāo)簽。

如果我們首選項(xiàng)的數(shù)目較少,但是我們依舊想為他們分組下,怎么辦呢?

我們可以將上面代碼中的嵌套PreferenceScreen改為PreferenceCategory,就這么簡(jiǎn)單!代碼就不上了,效果如下:



以上部分內(nèi)容轉(zhuǎn)載或參考來(lái)源如下:

http://www.eoeandroid.com/thread-5305-1-1.html

http://www.pocketdigi.com/20110405/231.html

http://blog.csdn.net/flowingflying/article/details/6671548

http://blog.csdn.net/chenzheng_java/article/details/6285966

http://blog.csdn.net/chenzheng_java/article/details/6286037

http://blog.csdn.net/chenzheng_java/article/details/6286115

http://blog.csdn.net/chenzheng_java/article/details/6286195

在此表示感謝。
轉(zhuǎn)載請(qǐng)注明來(lái)源,版權(quán)歸原作者所有,未經(jīng)同意嚴(yán)禁用于任何商業(yè)用途。
微博:http://weibo.com/theworldsong
郵箱:theworldsong@foxmail.com

總結(jié)

以上是生活随笔為你收集整理的PreferenceActivity(首选项设置页)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。