一.PreferenceActivity简介
PreferenceActivity继承自ListActivity,用来与用户交互,保存一些用户设置信息。PreferenceActivity的功能有些类似SharedPreferences,将用户设置的信息保存到
/data/data/you_package_name/shared_prefs/you_package_name_you_xml_name.xml
,区别在于SharedPreferences会自动保存用户的设置信息,不像SharedPreferences那样开发人员去保存
。保存的设置信息以key-value形式保存,可以通过如下方法获取value;
SharedPreferences
prefs = PreferenceManager
.getDefaultSharedPreferen
ces(this);
value = prefs.getString(”
key
”, “unset”);
应用的类有:
包类:
本例的demo展示如下:
二.创建PreferenceActivity布局
PreferenceActivity的布局不是在res/layout/目录下创建的,而是在res/xml/名字
.xml。
如下所示:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
// 根标签
xmlns:android="http://schemas.android.com/apk/res/android">
// 命名空间
<PreferenceCategory >
//
类型1
需要设置的同一类属性都可以放到该
PreferenceCategory标签下
<CheckBoxPreference
// 类型1下只放置一个checkbox
android:key="checkBox1索引键"
// 该属性即是上面所说的
key
值
android:title="CheckBox的标题"
android:summaryOn="某功能: 开启"
android:summaryOff="某功能: 关闭"
android:defaultValue="true"
android:summary="如何保用"
android:enabled="true"
android:persistent="true" />
<!-- android:enabled="true" 默认选择 -->
</PreferenceCategory>
<PreferenceCategory >
//
类型2
<EditTextPreference
android:title="EditText标题"
android:key="EditText的索引
android:dialogTitle="EditText对话框的标题"
android:dialogMessage="要显示信息"
android:dialogIcon="@drawable/icon"
android:positiveButtonText="确定"
android:negativeButtonText="cancel"
android:summary="点击弹出编辑框"
//
如图2
android:dependency="checkBox1索引键"
/>
<!-- android:dependency="checkBox1索引键" 类型2有 enable受类型1的控制 -->
</PreferenceCategory>
<PreferenceCategory android:title="类型 3">
//
类型3
<PreferenceScreen android:title="二级页面"
android:summary="点击显示另一个设置页面"
//
如图3
>
<CheckBoxPreference
android:key="checkBox2的索引键"
android:title="CheckBox2"
android:summaryOn="某功能: 开启"
android:summaryOff="某功能: 关闭"
android:defaultValue="true"
android:summary="同上"
android:enabled="false"
android:persistent="true" />
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory android:title="类型4">
//
类型4
<ListPreference
android:key="list的键"
android:title="listPreference"
如图4
android:dialogTitle="对话框标示"
android:entries="@array/list_name"
// 在列表中显
数组entryValues
键数组
android:entryValues="@array/value"
// entries与entryValues一一对应关系
></ListPreference>
<!-- android:entries对应于key,android:entryValues对应于value,两个数组的数目一致 -->
</PreferenceCategory>
</PreferenceScreen>
三. 定义PreferenceActivity
以上是PreferenceActivity的xml描述,那么在程序中我们只需要新建一个继承自PreferenceActivity的Activity,然后在主程序中调用就可以了;并在Activity的onCreate()方法中使用xml描述即可。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResour
ce(R.xml.mypreferenceactivity);
四.定制自己PreferenceActivity
1>
theme
在value文件夹下新建一个名字.xml文件,名字.xml内容
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="sys_set_preacitivity">
<item name="android:windowBackground">@drawable/background</item> // 背景
<item name="android:focusable">false</item>
<item name="android:textColor">#ff000000</item>
<item name="android:cacheColorHint">#ffffffff</item>
<item name="android:windowNoTitle">false</item> <!-- 用来设定是否显示标题 -->
</style>
</resources>
2、在AndroidManifest.xml调用
<activity android:name="SystemSetAcitivity" android:theme="@style/sys_set_preacitivity"></activity>
2>自定义
在res/xml/名字.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="自定义布局"
android:key="preference_key">
<Preference
android:layout="@layout/preferencestyle"
//
在res/layout/定制自己的布局
android:title="加载了一张自定义布局A"
android:key="
pref_key_0
"
><!-- 加载自定义的布局 -->
</Preference>
<Preference
android:layout="@layout/preferencestyle"
android:title="加载了一张自定义布局B"
android:key="
pref_key_1
"
>
</Preference>
</PreferenceCategory>
</PreferenceScreen>
在继承自PreferenceActivity类的onCreate()方法中加入
Preference preference1 = findPreference("
pref_key_1
");
Preference preference2 = findPreference("
pref_key_2
");
preference1.setOnPreferenceClickList
ener();
// 注册监听
五。展示如下
图片2
图片3
图片4
PreferenceFragment .PreferenceActivity
包类:
package
android.preference

二.创建PreferenceActivity布局
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
</PreferenceScreen>
三. 定义PreferenceActivity
四.定制自己PreferenceActivity
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="sys_set_preacitivity">
</resources>
2、在AndroidManifest.xml调用
<activity android:name="SystemSetAcitivity" android:theme="@style/sys_set_preacitivity"></activity>
2>自定义
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
</PreferenceScreen>
preference1.setOnPreferenceClickList
五。展示如下

图片2

图片3

图片4
附:数据定义 在res/value/array.xml <?xml version="1.0" encoding="UTF-8"?> <resources> <string-array name="list_name"> <item>data1</item> <item>data2</item> <item>data3</item> </string-array> <string-array name="value"> <item>1</item> <item>3</item> <item>5</item> </string-array> </resources> |