PreferenceActivity用法

在开发应用程序的过程中我们有很大的机会需要用到参数设置功能,那么在Android应用中,我们如何实现参数设置界面及参数存储呢,下面我们来介绍一下Android中的一个特殊Activity–PreferencesActivity。PreferencesActivity是Android中专门用来实现程序设置界面及参数存储的一个Activity,我们用一个实例来简介如何使用PreferencesActivity。

下图是一个参数设置界面:

以此为例我们来介绍一下如何实现这个界面。首先建立一个xml来描述这个界面,文件为res/xml/preferences.xml
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen

xmlns:android="http://schemas.android.com/apk/res/android">

<PreferenceCategoryandroid:title="PreferenceCategory1">

<CheckBoxPreference

android:key="CheckBox1"

android:title="CheckBox"

android:summaryOn="某功能:开启"

android:summaryOff="某功能:关闭"

android:defaultValue="true"

/>

</PreferenceCategory>

<PreferenceCategoryandroid:title="PreferenceCategory2">

<PreferenceScreenandroid:title="二级PreferenceScreen">

<CheckBoxPreference

android:key="CheckBox2"

android:title="CheckBox"

android:summaryOn="某功能:开启"

android:summaryOff="某功能:关闭"

android:defaultValue="true"

/>

</PreferenceScreen>

</PreferenceCategory>

<PreferenceCategoryandroid:title="PreferenceCategory3">

<ListPreference

android:key="ListPreference"

android:title="ListPreference"

android:summary="ListPreference测试"

android:dialogtitle="ListPreference"

android:entries="@array/entries_list_preference"

android:entryValues="@array/entriesvalue_list_preference"

/>

<EditTextPreference

android:key="EditTextPreference"

android:title="EditTextPreference"

android:summary="点击输入"

android:dialogtitle="输入设置"

/>

<RingtonePreference

android:key="RingtonePreference"

android:title="RingtonePreference"

android:summary="选择铃声"

/>

</PreferenceCategory>

</PreferenceScreen>

这个例子中包括了PreferenceActivity中常见的几种组件,以下为具体介绍及用法:

PreferenceScreen:设置页面,可嵌套形成二级设置页面,用Title参数设置标题。

PreferenceCategory:某一类相关的设置,可用Title参数设置标题。

CheckBoxPreference:是一个CheckBox设置,只有两种值,true或false,可用Title参数设置标题,用summaryOn和summaryOff参数来设置控件选中和未选中时的提示。

PreferenceActivity用法

ListPreference:下拉框选择控件,用Title参数设置标题,用Summary参数设置说明,点击后出现下拉框,用dialogTitle设置下拉框的标题,下拉框内显示的内容和具体的值需要在res/values/array.xml中设置两个array来表示。图中的array.xml设置如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string-arrayname="entries_list_preference">

<item>test1</item>

<item>test2</item>

<item>test3</item>

</string-array>

<string-arrayname="entriesvalue_list_preference">

<item>1</item>

<item>2</item>

<item>3</item>

</string-array>

</resources>

PreferenceActivity用法

EditTextPreference:输入框控件,点击后可输入字符串设置。用Title参数设置标题,Summary参数设置说明,dialogTitle参数设置输入框的标题。

PreferenceActivity用法

RingtonePreference:铃声选择框,点击后可选择系统铃声。Title参数设置标题,Summary参数设置说明,dialogTitle参数设置铃声选择框的标题。

PreferenceActivity用法

以上是PreferenceActivity的xml描述,那么在程序中我们只需要新建一个继承自PreferenceActivity的Activity,然后在主程序中调用就可以了。这个PreferenceActivity中的设置存储是完全自动的,你不需要再用代码去实现设置的存储,PreferenceActivity创建后会自动创建一个配置文件/data/data/you_package_name/shared_prefs/you_package_name_you_xml_name.xml。上例中自动生成的配置文件如下:

1

2

3

4

5

6

7

8

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>

<map>

<stringname="EditTextPreference">12332312</string>

<stringname="ListPreference">2</string>

<stringname="RingtonePreference">content://settings/system/ringtone</string>

<booleanname="CheckBox1"value="true"/>

<booleanname="CheckBox2"value="true"/>

</map>

相关推荐