Android之PreferenceActivity
2012-09-11 15:45
281 查看
现有某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>
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
- android PreferenceActivity结合PreferenceFragment实现参数设置界面学习实例
- Android 完美解决自定义preference与ActivityGroup UI更新的问题
- Android之PreferenceActivity 详解
- Android之PreferenceActivity
- Android之PreferenceActivity
- [Android开发]Android数据保存之PreferenceActivity
- Android之PreferenceActivity
- Android_UI:PreferenceActivity PreferenceFragment
- android PreferenceActivity
- Android之PreferenceActivity
- Android之PreferenceActivity
- Android之PreferenceActivity
- Android 指定SD卡上一首歌作为程序的背景音乐(进阶篇之PreferenceActivity的使用)
- Android软件开发之PreferenceActivity中的组件(二十八)
- Android PreferenceActivity 学习笔记
- Android之PreferenceActivity的讲解(系统设置界面)
- Android之PreferenceActivity
- android 不同Activity使用一个SharedPreference
- Android之PreferenceActivity