目前Android手机上的应用,大部分都带有设置功能,即在里面选择一些本应用的自定义设置,便于用户的定制化。
但如果自己写一个Activity来实现,未免过于复杂,而且浪费时间。
Android框架已经为我们提供了一个简单的方式来实现设置页面,即使用PreferenceActivity。
首先,在res/xml下新建一个preference.xml文件,用于定义首选项页面的布局。
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="PreferenceCategory 1"> <CheckBoxPreference android:key="CheckBox1" android:title="CheckBox" android:summaryOn="某功能: 开启" android:summaryOff="某功能: 关闭" android:defaultValue="true" /> </PreferenceCategory> <PreferenceCategory android:title="PreferenceCategory 3"> <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>
通用属性:
title:第一张图中的”删除旧信息”、”短信设置”
key:用于检索该首选项,可以在代码中利用PreferenceManager.getDefaultSharedPreferences(context).getXXX(key,valueNotExist)方法获得该首选项的值。也可以利用PreferenceActivity的getPreference(key)获取该Preference对象,进而设置相应的值。
defaultValue:默认值,当继承了PreferenceActivity的页面打开时,通常会在onCreate中调用addPreferencesFromResource方法加载首选项。此时,若设置了defaultValue,且之前未设置过该项的值,系统会自动将其设为defaultValue,并写入该应用的首选项文件中。这样,若要实现一键恢复默认值,只要调用addPreferencesFromResource即可。
summary:第一张图中”达到数量上限时删除旧信息”
dependency:其余Preference的key(通常为某个CheckBoxPreference的),若设置了该项,当依赖项选中时才可以设置本项。
persistent:为true时,系统会帮助我们去保存该设置。默认为true。
标签:
PreferenceScreen:设置页面,可嵌套形成二级设置页面,用Title参数设置标题。目前没怎么用过,以后用到再补充。
PreferenceCategory是一个首选项组,通常把一类的设置项用一个PreferenceCategory包起来。如下图中的存储设置所示。
CheckBoxPreference就是选择框,只有两种值,true或false,可用Title参数设置标题,用summaryOn和summaryOff参数来设置控件选中和未选中时的提示。
ListPreference:下拉框选择控件,用Title参数设置标题,用Summary参数设置说明,点击后出现下拉框,效果如下图所示。用dialogTitle设置下拉框的标题,下拉框内显示的内容和具体的值需要在res/values/array.xml(可以是自定义的文件,建议单独建一个来存储字符串数组)中设置两个array来表示,在preference.xml中用android:entries指定显示内容的id,android:entryValues指定相应内容的值的id。如下图所示。
<string-array name="entries_list_preference"> <item>始终</item> <item>仅在静音时</item> <item>一律不</item> </string-array> <string-array name="entriesvalue_list_preference"> <item>1</item> <item>2</item> <item>3</item> </string-array>
注:当你的应用要支持多语言时,建议将entryValues对应的数组中的值用数字表示,这样就可以很好的避免翻译时不小心把值也给改了,造成不同语言切换时,丢失之前的设置(比如说在中文对应的文件里,用值_始终表示,而在英文文件中却是value_always。这样当从中文切换到英文时,因为之前在preference文件中存的是值_始终,在英文情况下,系统无法找到值_始终对应的显示内容,就会造成打开该ListPreference时没有选项被选中)。
RingtonePreference:铃声选择框,点击后可选择系统铃声。Title参数设置标题,Summary参数设置说明,dialogTitle参数设置铃声选择框的标题。
EditTextPreference:输入框控件,点击后可输入字符串设置。用Title参数设置标题,Summary参数设置说明,dialogTitle参数设置输入框的标题。
以上这几种Preference,当你对其中的值修改后,系统都会自动将其存入data\data\你的包名\shared_prefs\ 下的preferences文件中(具体起名规则目前还没搞懂,不过一看就知道是哪个文件)。然后每次PreferenceActivity启动时,都会通过addPreferencesFromResource来加载。如果没有对应的值,则设为默认值。如果没有默认值,则不设置。
当然,很多情况下,以上提供的几种往往不能满足我们的需求,这就需要对首选项进行自定义。可以自己实现一个继承自Preference的类,也可以使用默认的Preference,然后对它的点击进行一些处理,如弹出自定义对话框,转到自定义的Activity等等。
建好了preference.xml,就可以新建一个类,继承PreferenceActivity。
在onCreate中可以加一些自定义Preference的初始化代码,调用addPreferencesFromResource来加载preference.xml文件。
在onPreferenceTreeClick中判断点击的是哪个Preference。并进行一些自定义的操作,如弹出自定义的窗口。最后记得调用super. onPreferenceTreeClick。
public class MyPreferenceActivity extends PreferenceActivity{ /** Called when the activity is first created. */ CheckBoxPreference checkbox; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference); checkbox=(CheckBoxPreference) findPreference("CheckBox1"); } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if(preference==checkbox) //做一些自定义的事 ; return super.onPreferenceTreeClick(preferenceScreen, preference); } }
相关推荐
通过使用PreferenceActivity,开发者可以方便地创建出具有标准Android风格的设置界面,而无需手动设计布局。它将XML定义的偏好项与Activity中的代码逻辑关联起来,使得UI元素的操作变得简单易行。 要使用...
使用 PreferenceActivity设置个性信息, 参考:android 设置类PreferenceActivity http://blog.csdn.net/xiaobijia/article/details/41479235
PreferenceActivity用法简介 Android X
在Android应用开发中,PreferenceActivity是用于创建设置界面的一个特殊Activity。它允许开发者以XML方式定义用户界面元素,...通过熟练掌握这些组件,你可以轻松创建出符合Android设计规范且用户体验良好的设置页面。
它使得开发者可以轻松地构建具有各种设置选项的界面,如开关、单选按钮、复选框等,而无需从头编写大量的XML和Java代码。本文将深入探讨`PreferenceActivity`的实现及其相关知识点。 首先,`PreferenceActivity`是...
标题中的“继承PreferenceActivity”指的是在Android开发中,利用`PreferenceActivity`类来构建设置界面。`PreferenceActivity`是Android SDK提供的一种特殊类型的Activity,它主要用于创建和展示一系列的偏好设置,...
然而,标准的`PreferenceActivity`样式可能无法满足所有设计需求,因此开发者有时需要自定义`PreferenceActivity`来实现特定的UI效果。 自定义`PreferenceActivity`主要包括以下几个方面: 1. **布局文件定制**: ...
总之,"仿IOS的PreferenceActivity界面"是一个结合了Android原生组件和UI设计技巧的实践案例,旨在为用户提供接近iOS体验的设置界面。通过深入理解并应用上述知识点,开发者可以创建出美观且易用的设置界面。
总结一下,PreferenceActivity是Android中处理设置界面的重要工具,它通过XML定义偏好设置,自动保存用户的选择,并提供了丰富的自定义选项。理解并熟练掌握PreferenceActivity的使用,对于构建用户友好的设置界面至...
android PreferenceActivity中的组件源码~
然而,系统默认的PreferenceActivity样式可能无法满足所有设计需求,这时我们就需要自定义它的样式和界面,以提供更符合应用特色的用户体验。 首先,我们来了解如何自定义PreferenceActivity的布局。默认情况下,...
8. **Material Design兼容**:随着Android版本的更新,`PreferenceActivity`也逐渐与Material Design设计语言兼容。现在,你可以使用`PreferenceFragmentCompat`来替代`PreferenceActivity`,以获得更好的视觉效果和...
### Android之PreferenceActivity详解 #### 一、PreferenceActivity概述 **PreferenceActivity** 是Android系统提供的一种专门...此外,合理利用SharedPreferences进行数据持久化存储也是构建高质量应用的关键之一。
标题与描述均提及了《Android中PreferenceActivity详解》,这一主题涉及了Android开发中关于用户偏好设置的核心组件——PreferenceActivity的深入解析。以下是基于标题、描述、标签以及部分内容的关键知识点总结,...
它允许开发者通过XML定义UI元素,如开关、单选按钮、复选框等,并在活动中动态加载这些元素,简化了构建用户设置界面的过程。本篇文章将深入探讨PreferenceActivity的使用方法以及相关知识点。 首先,我们了解`...
PreferenceActivity是Android系统中用于构建设置界面的一种特殊Activity,它简化了创建具有各种开关、选择器和输入字段的设置布局的过程。这篇博文可能是关于如何优化PreferenceActivity的UI,以提高用户体验和性能...
首先,PreferenceActivity是Android SDK提供的一种特殊类型的Activity,它允许开发者快速构建具有可配置选项的界面,类似于系统设置应用中的各种设置页面。通过使用PreferenceScreen和各种Preference子类(如...