Android学习笔记(十四)方便实用的首选项-PreferenceActivity
突然发现已经好多天没更新博客了,最近公司项目正在进行一个大跨度的重构,又碰上有新需求,一连好多天都是很晚才到家。其实这篇博文在草稿箱里面也存了很久了,本来想着不发了,不过感觉PreferenceActivity在使用起来还是非常方便与实用的,再加上介绍PreferenceActivity的貌似不太多,还是发出来吧,以备自己和其他人后期参考。
Android提供了一个XML驱动的框架,用于为应用程序创建系统样式的Preferences Screen。通过使用该框架,能够确保应用程序中的PreferenceActivity与本地和其他第三方应用程序中所使用的一致。当然,如果对PreferenceActivity深入研究起来还是有一定复杂度的,这里只介绍一些最常用的。
一、创建Preference Screen布局。
首先需要在xml文件中创建Preference Screen布局以供PreferenceActivity调用。与标准UI布局不同,首选项定义存储在res/xml资源文件夹中。方便的时,有很多控件都已经定义好,我们直接添加到Preference Screent中使用就可以了,一些原生的首选项控件如下:
· CheckBoxPreference :一个标准的首选项复选框空GIA你,用于将首选项设置为真或者假。
· EditTextPreference :允许用户输入一个字符串作为一个首选项。在运行时选择首选项文本将会显示一个输入对话框。
· ListTextPreference :该首选项是一个包含了可供选择的值的列表。可以定义不同的数组用于包含显示文本和选项值。
· MultiSelectPreference :在Activity 3.0(API level 11)中引入的首选项,类似于复选框列表。
· RingtonePreference : 一个专用的列表首选项,显示可供用户选的可用铃声列表。
除了一些原生的首选项控件外,还可以通过扩展Preference类自定义首选项控件。
下面在res/xml下创建preference_activity.xml,在里面添加几个控件,代码如下:(注意:在创建时注意将Resource Type选为 Preference类型,file要小写)
- <?xml version="1.0" encoding="utf-8"?>
- <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
- <CheckBoxPreference
- android:key="checkbox"
- android:title="开关"
- android:summaryOn="开"
- android:summaryOff="关"/>
- <ListPreference
- android:key="list"
- android:title="选择"
- android:summary="请选择"
- android:entries="@array/entries"
- android:entryValues="@array/values"/>
- <EditTextPreference
- android:key="edit"
- android:title="title"
- android:summary="summary"
- android:dialogTitle="dialogTitle"
- android:dialogMessage="dialogMessage"/>
- </PreferenceScreen>
其中ListPreference控件用到得entries和values如下(在res/values/list_pf.xml):
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string-array
- name="entries">
- <item >一</item>
- <item >二</item>
- <item >三</item>
- </string-array>
- <string-array name="values">
- <item >第一项</item>
- <item >第二项</item>
- <item >第三项</item>
- </string-array>
- </resources>
二、创建PreferenceActivity的子类
类似于创建一个Activity,可以通过继承PreferenceActivity创建一个其子类,并通过addPreferencesFromResource(R.xml.preference_activity)方法加载Preference Screen文件。各控件的具体用法,请参考注释。
- /**
- *
- * @author liuwei
- * @data 2015/11/08
- */
- public class MyPreferenceActivity extends PreferenceActivity {
- PreferenceManager pm;
- CheckBoxPreference checkbox;
- ListPreference listP;
- EditTextPreference editP;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.preference_activity);
- // 获取PreferenceManager对象
- pm = getPreferenceManager();
- /**************** 绑定checkbox控件 *******************/
- checkbox = (CheckBoxPreference) pm.findPreference("checkbox");
- // 获取控件状态
- boolean n = checkbox.isChecked();
- Toast.makeText(getApplicationContext(), "当前状态为:" + n, 0).show();
- /**************** 绑定listP控件 **********************/
- listP = (ListPreference) pm.findPreference("list");
- // 获取listP控件的key和value
- CharSequence e = listP.getEntry();
- String v = listP.getValue();
- Toast.makeText(getApplicationContext(), e + ":" + v, 0).show();
- /**************** 绑定editP控件 **********************/
- editP = (EditTextPreference) pm.findPreference("edit");
- // 获取控件内容
- String edit = editP.getText();
- Toast.makeText(getApplicationContext(), "编辑内容:" + edit, 0).show();
- }
- }
别忘了AndroidManifest.xml中配置,如下:
- <activity
- android:name=".MyPreferenceActivity">
- </activity>
最后试试效果,还是挺棒的。
Android学习笔记(十四)方便实用的首选项-PreferenceActivity的更多相关文章
- 【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版
目录(?)[-] 设置横排和竖排的不同排版风格 改写代码 对于fragment,经常涉及不同屏幕尺寸和不同的排版风格.我们在基础小例子上做一下改动,在横排的时候,仍是现实左右两个fragment,在竖 ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- 【转】 Pro Android学习笔记(四二):Fragment(7):切换效果
目录(?)[-] 利用setTransition 利用setCustomAnimations 通过ObjectAnimator自定义动态效果 程序代码的编写 利用fragment transactio ...
- 【转】Pro Android学习笔记(四):了解Android资源(下)
处理任意的XML文件 自定义的xml文件放置在res/xml/下,可以通过R.xml.file_name来获取一个XMLResourceParser对象.下面是xml文件的例子: <rootna ...
- Android学习笔记(四)——再探Intent
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 我们可以使用 Intent 来启动一个活动, 还可以在启动活动的时候传递数据的,下面一起来看一下: 一.向下一 ...
- (C/C++学习笔记) 十四. 动态分配
十四. 动态分配 ● C语言实现动态数组 C语言实现动态数组,克服静态数组大小固定的缺陷 C语言中,数组长度必须在创建数组时指定,并且只能是一个常数,不能是变量.一旦定义了一个数组,系统将为它分配一个 ...
- Android学习笔记_3_四种布局
Android布局是应用界面开发的重要一环,在Android中,共有四种布局方式, 分别是:FrameLayout( 帧布局 ).LinearLayout (线性布局).TableLayout(表格布 ...
- 【转】 Pro Android学习笔记(四八):ActionBar(1):Home图标区
目录(?)[-] Home Icon 源代码 TextView的滚动 返回主activity或指定activity ActionBar在Android 3.0 SDK中为平板引入,在4.0中也 ...
- 【转】 Pro Android学习笔记(四七):Dialog(4):一些补充和思考
目录(?)[-] 编程思想封装接口 fragment和activity以其他fragment之间的通信 编程思想:封装接口 在小例子中,fragment会调用activity的onDialogDone ...
随机推荐
- Lua数组排序
代码 network = { {name = "grauna", IP = "210.26.30.34"}, {name = "arraial&quo ...
- 【原创】Android多个xml文件的使用
Android中经常会使用多个xml文件,但在Mainactivity中使用的setContentView(R.layout.main)只加载main.xml文件,其他xml文件不加载进当前视图,当我 ...
- JavaScript入门介绍(一)
JavaScript入门介绍 [经常使用的调试工具][w3school.com.cn在线编辑] [Chrome浏览器 开发调试工具]按F121.代码后台输出调试:console.log("t ...
- svn-添加忽略文件
svn ps svn:ignore '文件夹名|文件名(不能是文件夹/文件名)' . svn pe svn:ignore . export SVN_EDITOR=/usr/bin/vim #设置环境变 ...
- MySQL事务隔离级别初探
MySQL有四种隔离级别,分别是: READ UNCOMMITTED(未提交读) READ COMMITTED(提交读) REPEATABLE READ (可重复读) SERIALIZABLE(可串行 ...
- php练习2——乘法表,变量的使用
目标:输出九九乘法表 程序: 结果: 目标: 程序variable01.html和variable01.php 结果:
- 【 java版坦克大战--事件处理】 键盘控制小球上下左右移动
上一节已经学习了事件处理,这一节需要完成通过键盘的上下左右键控制小球移动. 然后再通过应用到我们绘制的坦克上. /** * 加深对事件处理机制的理解 * 通过光标的上下左右键,控制小球的左右上下移动. ...
- ubuntu下的软件安装
1.软件安装 最近开始将个人电脑由windows换成linux,第一步就是会装一些个人软件,以前玩linux都是用yum或者apt-get来进行安装. 下面介绍一下如何从官网下载文件并且安装的方法. ...
- VS2013发布web项目到IIS上遇到的问题总结
vs2010发布网站到本地IIS的步骤 http://blog.csdn.net/cx_wzp/article/details/8805365 问题一:HTTP 错误 403.14 - Forbid ...
- UIImageView 的 contentMode
UIViewContentModeScaleToFill, // 按设置尺寸 - 填充 UIViewContentModeScaleAspectFit, // 按设置尺寸 - 等比例填充, 有边界 U ...