昨天,开始尝试了PreferenceActivity的使用,缘由是因为之前做过的一款产品,《翻转静音》,效果太差了,最近很无意之间看到了PreferenceActivity的使用,我想用它来重新对产品进行一番设计应该会效果不错。
不多说了,现在就来进行PreferenceActivity的一些简单的介绍,然后我们在来着手进行一个示例所需软件界面的开发。
先介绍一下关于PreferenceActivity中的常用组件:
PreferenceScreen:设置页面,可嵌套形成二级设置页面,用Title参数设置标题。
PreferenceCategory:某一类相关的设置,可用Title参数设置标题。
CheckBoxPreference:是一个CheckBox设置,只有两种值,true或false,可用Title参数设置标题,用summaryOn和summaryOff参数来设置控件选中和未选中时的提示。
ListPreference:下拉框选择控件,用Title参数设置标题,用Summary参数设置说明,点击后出现下拉框,用dialogTitle设置下拉框的标题,下拉框内显示的内容和具体的值需要在res/values/array.xml中设置两个array来表示。
EditTextPreference:输入框控件,点击后可输入字符串设置。用Title参数设置标题,Summary参数设置说明,dialogTitle参数设置输入框的标题。
RingtonePreference:铃声选择框,点击后可选择系统铃声。Title参数设置标题,Summary参数设置说明,dialogTitle参数设置铃声选择框的标题。
以上是关于PreferenceActivity中布局文件Preference中的元素的描述,建立完布局文件后,在类中addPreferencesFromResource(R.xml. preference );即可。
则来建立一个比较简单的PreferenceActivity的设置程序吧。
1.建立一个App工程,如取名为PreferenceTestActivity。
2.在res文件夹下新建一个xml的文件,并新建文件Android XML File,选择其类型为Preference即可。
3.根据不同的需求编写Preference的布局文件,我们以最全面的设置为背景,包含以上提到的各种控件,为大家提供方便。
4.关于Preference布局文件的编写,分析布局的需求,我们发现,需要CheckBoxPreference、Preference、ListPreference、EditTextPreference等。
(1)在preference.xml中建立所需要的PreferenceCategory,并可以为其设置key(类似于id)和title(标题)等相关属性。
(2)在PreferenceCategory中添加自己所想要添加的控件,如在本例中,作者想添加CheckBoxPreference、EditBoxPreference、ListPreference的控件, 并为其详细设置相关的信息,其中xml的文件内容在稍后将会给出。
(3)在PreferenceScreen中新建另外一个PreferenceCategory,显示选择音乐的RingtonePreference,实现音乐的选择功能。
(4)在PreferenceScreen中新建另外一个Preference,其作用是为软件的使用者传达相关的信息,如开发者简介和帮助使用等。
5.详细的xml文件如下所示:
<?xml version="1.0" encoding= "utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:key= "preferencecategory_normal"
android:title="常规设置"
>
<CheckBoxPreference
android:key="checkboxpreference_open"
android:title="打开软件"
android:summaryOn="XX软件:已打开"
android:summaryOff="XX软件:已关闭"
android:defaultValue="true"
></CheckBoxPreference>
<EditTextPreference
android:key="edittextpreference_name"
android:title="输入信息"
android:summary="点此输入信息"
android:dialogTitle="在下面的输入框中输入信息"
></EditTextPreference>
<ListPreference
android:key="listpreference_choose"
android:entries="@array/list_preference_name"
android:entryValues="@array/list_preference_value"
android:title="选择内容"
android:summary="在此选择您想要的信息"
/>
</PreferenceCategory >
<PreferenceCategory android:title= "音乐设置" >
<RingtonePreference
android:key = "ringselect"
android:title="音乐选择"
android:summary="选择您喜欢的音乐"
/>
</PreferenceCategory >
<PreferenceCategory android:title= "软件使用说明" >
<Preference
android:key="preference_about"
android:title="软件说明"
android:summary="软件使用说明和帮助文档"
></Preference>
</PreferenceCategory >
</PreferenceScreen>