- 浏览: 426870 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
yehuiyan8002:
支持中文查询
快熟查找联系人 -
lehehe:
现成的接口,免费试用,http://www.haoservic ...
天气Widget -
D.Z:
android:focusable="false&q ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
freecode:
碰到该问题,CheckBox的android:focusabl ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
echohfut:
哥们,新博客是不是在墙外啊?不能访问。还有你怎么进行博客迁移的 ...
博客 迁移
PreferenceActivity
为了引入这个概率 首先从需求说起 即:现有某Activity专门用于手机属性设置 那么应该如何做呢?
根据已学知识 很快一个念头闪过 即:Activity + Preference 组合 前者用于界面构建 后者用于设置数据存放 其实 这是正确的 但是 这会比较繁琐 因为 每个设置选项 都要建立与其对应的Preference
所以 现在有更好的选择了 那就是本文的主角:PreferenceActivity
从名字应该可以看出 其实 Activity 与 Perference 的混合物
还是从需求说起 常见属性设定 有哪几种方式:
1. CheckBox 用于 确定/取消 某项功能 如:是否静音 对应于:CheckBoxPreference 其在Preference 有一个选项与其自动绑定 下同
2. ListView 用于列出所有选择 如:铃声选择 列出所有声音供选择使用 对应于:ListPreference
3. 属性结合 用于列出一系列相关属性 如:所有与短消息有关的功能 对应于:PreferenceScreen 该项仅用于界面 故与Preference无关
界面 其实 讨论这个 比较鸡肋 大家自己试着运行就一目了然了 所以 觉得还是以步骤为主
鉴于PreferenceActivity使用 网络很多 故此略过 为了给自己备份 防止以后用到 大致叙述一下
[代码 步骤]
1. PreferenceActivity 界面比较特别 在 res/xml/setting.xml
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <CheckBoxPreference android:key="autoBack" android:title="自动回复" android:summaryOn="开启" android:summaryOff="关闭" android:defaultValue="true" /> <PreferenceCategory android:title="SMS 助手"> <CheckBoxPreference android:key="smsSilence" android:title="静音" android:summaryOn="开启" android:summaryOff="关闭" android:defaultValue="false" /> <PreferenceScreen android:title="更多选项"> <CheckBoxPreference android:key="cb21" android:title="功能1" android:summaryOn="开启" android:summaryOff="关闭" android:defaultValue="true" /> <CheckBoxPreference android:key="cb22" android:title="功能2" android:summaryOn="使用" android:summaryOff="停用" android:defaultValue="true" /> <ListPreference android:key="list1" android:title="android forum" android:summary="开发论坛" android:dialogTitle="请选择论坛" android:entries="@array/entries_list_preference" android:entryValues="@array/entriesvalue_list_preference" /> <EditTextPreference android:key="et1" android:title="EditTextPreference Sample" android:summary="点击输入" android:dialogTitle="输入设置" android:defaultValue="Hello EditTextPreference" /> </PreferenceScreen> </PreferenceCategory> <PreferenceCategory android:title="其他选项"> <RingtonePreference android:key="rt1" android:title="RingtonePreference Sample" android:summary="选择铃声" /> </PreferenceCategory> </PreferenceScreen>
2. 导入setting.xml
addPreferencesFromResource(R.xml.settings);
emulator 运行截图:
点开"更多选项"
具体 请大家自己尝试之
3. 其实 关于PreferenceActivity 问题 基本结束了 但是 初次使用 会碰到一些坎坷 现一一讨论
4. 监听设定变化问题 普通布局里的监听 比较简单 先通过findViewById()获得目标View 再在其上注册监听器即可
但是 PreferenceActivity 并没有提供findViewById() 也就无法监听 那么 怎么做呢?
- 得到SharedPreferences 句柄
sp = PreferenceManager.getDefaultSharedPreferences(this);
- 在 sp 之上注册改变监听器
sp.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener(){ @Override //sharedPreferences:句柄 //key: 改变 键值 public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) { // TODO Auto-generated method stub if(key.equals("autoBack")){ Boolean autoBack = sharedPreferences.getBoolean("autoBack", false); if(autoBack){ Log.d("TAG","autoBack: true!"); } else { Log.d("TAG","autoBack: false!"); } } } });
5. Preference 异地使用 即:PreferenceActivity 在一个应用程序 而别处应用程序可能也想改变该数据 怎么做呢?
- 通过getSharedPreferences() 得到SharedPreferences实例
spc = this.getSharedPreferences("com.android.PreferenceActivity.Usage_preferences.xml", MODE_WORLD_READABLE );
- 取值
Boolean autoBack = spc.getBoolean("autoBack", false);
- 赋值
public void putValue(String key, Boolean value){ spe = spc.edit(); spe.putBoolean(key, value); spe.commit(); }
就这样结束 似乎感觉不爽 所以决定加点料
- ListPreference 使用
<ListPreference android:key="list1" android:title="android forum" android:summary="开发论坛" android:dialogTitle="请选择论坛" android:entries="@array/entries_list_preference" android:entryValues="@array/entriesvalue_list_preference" />
- EditTextPreference 使用
<EditTextPreference android:key="et1" android:title="EditTextPreference Sample" android:summary="点击输入" android:dialogTitle="输入设置" android:defaultValue="Hello EditTextPreference" />
评论
android:entryValues="@array/entriesvalue_list_preference"
都用到了xml定义的数组,而一般情况下是在arrays文件夹下定义数组的,而现在在array文件夹下定义数组,这个数组和一般的定义的数组一样吗?能否给个例子!
sorry 忘记贴 array.xml 内容如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="entries_list_preference"> <item>www.anddev.org</item> <item>www.eoeandroid.com</item> <item>developer.android.com</item> </string-array> <string-array name="entriesvalue_list_preference"> <item>1</item> <item>2</item> <item>3</item> </string-array> </resources>
补充说明:
entries_list_preference 是显示选项之用
entriesvalue_list_preference 则显示存放在Perference之用
二者是不同的 但是可以公用呢? 猜测应该是可以的
android:entryValues="@array/entriesvalue_list_preference"
都用到了xml定义的数组,而一般情况下是在arrays文件夹下定义数组的,而现在在array文件夹下定义数组,这个数组和一般的定义的数组一样吗?能否给个例子!
不是 是系统提供的
发表评论
-
滑动抽屉 另一种解决办法
2010-07-09 17:43 0滑动抽屉 -
Spinner 定制化 增强版
2010-07-09 14:34 2571Spinner 作为下拉选 ... -
ListView 内容之分批显示
2010-06-25 20:38 5861ListView 内容循环显示 大家试想 假如 ... -
MediaScanner 研究
2010-06-23 15:21 3103MediaScanner 之所以拿MediaSc ... -
CheckBox在ListView 而导致其OnItemClickListener不会被触发
2010-06-22 20:55 18878CheckBox在ListView 而导致其OnItemCli ... -
获取Launcher 启动列表
2010-06-22 10:09 3096获取Launcher 启动列表 即 列出所有Launc ... -
android src 下载 编译 安装 全接触
2010-06-12 14:44 0android src - download install ... -
Intent.createChooser() 妙用
2010-06-12 11:14 5916Intent.createChooser(ntent targ ... -
SMS管理:收信箱 发信息 编写新信息
2010-06-07 08:14 14364SMS管理 [功能] 1. 收信箱:显示 ... -
求 android 手机 帮忙测试sms服务系统 谢谢
2010-06-05 08:25 1409Hi guys, 最近一段时间没有更新blog 因为一 ... -
流媒体 播放 理论篇
2010-05-28 14:42 2122流媒体播放 之所以为理论篇 因为该篇仅实现了播放功能 ... -
NDK 搭建与HelloWorld
2010-05-19 09:48 3151NDK [前提] 1. Cygwin 用于安装 ... -
自定义字体
2010-05-15 10:49 1162自定义字体: []代码 步骤] 1 ... -
模糊查找 再深入
2010-05-15 09:41 3096模糊查找 再深入 应某位大哥要求 再次对 SQLite ... -
快捷方式Bar + ViewGroup - 自定义
2010-05-09 09:20 2379TabActivity - 自定义 其实 这篇感觉极鸡 ... -
View 拖动&插入 研究
2010-05-09 07:14 3927View 拖动&插入 即: ... -
带图标 快捷键 Menu - 终极版
2010-05-04 20:23 1783Menu 改头换面 扩展如下: 1. 图标化文字 2 ... -
*.gif 解码 - 实践
2010-05-02 18:58 1650*.gif decode 前面已经说过 今天不打算再说了 ... -
*.gif 解码 - 理论
2010-05-01 21:11 1484我们知道Android 默认是不支持*.gif 的 但是 ... -
shortcut+livefolder
2010-04-19 13:08 1456shortcut+livefolder Live ...
相关推荐
PreferenceActivity用法简介 Android X
使用 PreferenceActivity设置个性信息, 参考:android 设置类PreferenceActivity http://blog.csdn.net/xiaobijia/article/details/41479235
雨松MOMO带你做软件 Android软件开发之PreferenceActivity中组件的使用 ,欢迎大家下载阅读 哇咔咔~~
android PreferenceActivity中的组件源码~
NULL 博文链接:https://2528.iteye.com/blog/1049177
自定义PreferenceActivity,达到自己想要的ui效果
仿IOS的PreferenceActivity界面,素材来自新浪微博,相关博文:http://www.cnblogs.com/tianzhijiexian/p/3893504.html
自定义PreferenceActivity的样式,相关博客:http://www.cnblogs.com/tianzhijiexian/p/3892506.html
Android之PreferenceActivity简介,Android之PreferenceActivity简介
这个示例 PreferenceActivity 类的用法,它可以保存设置
NULL 博文链接:https://topmanopensource.iteye.com/blog/1291071
android中PreferenceActivity详解
看到很多书中都没有对PreferenceActivity做介绍,而我正好又在项目中用到,所以就把自己的使用的在这总结一下,也方便日后查找。PerferenceActivity是什么,看下面的截图: Android系统截图(左) ...
NULL 博文链接:https://justwyy.iteye.com/blog/1338864
android 开发者指南 ,我们看到Android系统本身就大量用到了PreferenceActivity来对系统进行信息配置和管理,那么它是怎么保存数据的呢,如何创建PrefenceActivity的呢,更关键是怎样触发相应事件的呢。 先看第一个...
android老知识了,有个老项目回顾一个PreferenceActivity
该资源包含了一个android自定义的preferenceActivity简单易懂,喜欢的下载!
这个是我将设置中的PreferenceActivity修改成Activity的过程,本dome是以 WifidisplayActivity为例子。