Android Preference详解之初识Preference及Preference系(一)
一种构建UI的方式——通过Preference去构建UI,而不是直接通过layout方式(或许说得不够准确,因为Preference系也是间接通过Activity去展示的,只不过对于很多新人来说这种方式会和普通的有点不一样),android4.4以来,修改了很多Preference属性,学习Preference框架,就从这节开始.
一 Preference家族概述
如下图所示Preference作为该家族的终极基类,直接继承Object,其他子类Preference直接或者间接继承于Preference。他们的作用就是定义要显示的UI(其实作用类似于普通的Layout布局文件),特殊之处在于定义好了UI之后再在PreferenceActivity里以ListView的形式整体布局,每一个子Preference相当于是一个列表项。另外Preference还提供了一个SharedPreference用于保存/读取数据,以其key属性作为SharedPreference的键。还有一点Preference所存储的数据最后都会以xml文件格式的形式进行保存,而且其只能 保存一些基本格式的数据。例如string/boolean等等。该xml文件存放的位置在data/data/你应用的包名/shared_prefs 文件夹下。
二 Preference重要的家族成员
1、Preference
1.1、重要的回调接口和方法
这是Preference点击事件
1.2、重要的方法和属性
这些重要的公开方法或者接口都将被继承到其子类Preference下发挥重要的作用,所以又必要去眼熟下(我们都知道JavaBean中一般都是getter和setter成对出现的,为了节约篇幅就没有把所有的都列出来,还有父类的一些属性也没有全部列出,下同)
2、PreferenceGroup
PreferenceGroup是直接继承于Preference,起到的是一个容器作用,类似于ViewGroup的功能,我们在日常开发中接触最多的是他的子类 PreferenceCategory 和PreferenceScreen,这两个直接继承PreferenceGroup所以在开发中起的作用也是容器,用于”安置“其他子Preference的容器。值得注意的是除了继承一些来自Preference及其他父类公共的方法还继承了一些公共属性。
3、public final class PreferenceScreen
以上两个家族成员,我们在普通的开发中一般都是不会直接使用的,当人如果自定义Preference可能会涉及到,我们看到做多的应该是PreferenceScreen和PreferenceCateGory,首先按照官网描述,PreferenceScreen在一个Preference的层级结构中是作为top-level顶级层次的,类似于普通布局中的各种Layout,LinearLayout、RelativeLayout等等,他继承于PreferenceGroup,所以同样起的容器的作用。同样的我们除了可以通过xml方式构造PreferenceScreen还可以通过createPreferenceScreen(Context)(后面文章再说具体用法)。
3.1、PreferenceScreen的功能
作为一个PreferenceAcitivity的基本布局的根容器:和其他根Layout一样,是不可见的容器,只是把容器内的Preference呈现出来
嵌套插入在其他PreferenceScreen容器里
<PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android"android:key="first_preferencescreen">
<CheckBoxPreferenceandroid:key="wifi enabled"android:title="WiFi" />
<PreferenceScreenandroid:key="second_preferencescreen"android:title="WiFi settings"><CheckBoxPreferenceandroid:key="prefer wifi"android:title="Prefer WiFi" />... other preferences here ...
</PreferenceScreen>
</PreferenceScreen>
3.2、重要的方法和属性
4、public class PreferenceCategory
PreferenceCategory也是继承于PreferenceGroup,所以他也具有容器的功能,不过一般不用做顶级容器,可用于二级容器嵌套在PreferenceScreen里提供分组的作用,和数据库SQL中的group by差不多。
5、public abstract class DialogPreference
DialogPreference直接继承自Preference,它的独特之处在于它是基于Dialog的,也就是说但我们点击对应的DialogPreference系时是以Dialog形式展现的,又因它是一个abstract抽象类,所以更多的时候我们直接使用它的子类:EditTextPreference、ListPreference和MultiSelectListPreference。
5、public abstract class TwoStatePreference
TwoStatePreference和DialogPreference同级,都是直接继承自Preference。TwoStatePreference如字面意思,是基于两种可选状态的首选项基类,在SharedPreferences里通过维护一个布尔值来设置当前状态的启用和禁止的一种Preference。
6、EditTextPreference、ListPreference和MultiSelectListPreference
作为DialogPreference的直接子类,这些子类Preference肯定拥有了DialogPreference的一切共性和特点,第一个肯定还是以Dialog的形式弹出,区别在于弹出的界面构成和其他的特性,这些在我们以后在开发中经常使用到,具体属性需要进一步解析!
如有继续交流,请关注我的公众号!
Android Preference详解之初识Preference及Preference系(一)相关推荐
- Android Preference详解之初识Preference及Preference系(一)
Android Preference详解之初识Preference及Preference系(一) 转载:https://blog.csdn.net/google_huchun/article/deta ...
- Android进阶——Preference详解之初识Preference及Preference系(一)
引言 很久没来得及更新博客了,时间总是不够,以前的知识还没来得及总结完毕,新的知识又源源不断地接触到,工作也很忙,但还是没有忘记自己最低点目标每个月至少四篇.好了,废话就到这里啦,开始进入正文,这篇文 ...
- android preference属性,Android进阶——Preference详解之Preference系的基本应用和管理(二)...
并非我们第一次打开相应界面之后就会自动创建对应的SharedPreferences文件,而是在我们改变了原有状态时候喎�"/kf/ware/vc/" target="_b ...
- Android进阶——Preference详解之Preference系的基本应用(三)
引言 前面一篇文章Android进阶--Preference详解之Preference系的基本应用和管理(二)介绍了二级Preference的使用和特点,接下来进入系统给我提供的底级Preferenc ...
- 【转】Android菜单详解——理解android中的Menu--不错
原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...
- Android菜单详解——理解android中的Menu
前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...
- Android LayoutInflater详解
Android LayoutInflater详解 在实际开发中LayoutInflater这个类还是非常有用的,它的作用类 似于findViewById().不同点是LayoutInflater是用来 ...
- android Fragments详解
android Fragments详解一:概述 android Fragments详解二:创建Fragment 转载于:https://my.oschina.net/liangzhenghui/blo ...
- android WebView详解,常见漏洞详解和安全源码(下)
上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑. 上篇:android WebView详解,常见漏洞详解和安全源码(上) 转载请注明出处:http ...
最新文章
- CentOS 7安装使用Github
- mac terminal
- python PILLOW
- opencv python 图像去噪
- Oracle 创建主键自增表
- python赋值语句对错_深入理解Python中变量赋值的问题
- 卷积神经网络(高级篇) Inception Moudel
- C#学习基础---BrowsableAttribute.Browsable属性
- signature=c9b7b92b79e9a32ac6be9993bfe5df5a,GBA金手指
- JAVA JVM优化总结
- windows server 2008百度网盘下载
- 俺的web课设大作业
- 怎么打开unity tweak tool
- 深度linux显示方块,在Deepin下用Wine运行文华财经赢顺的经验,附字体显示方框的解决...
- Java8使用jdeps —— Java类依赖性分析器
- 一个链表L 一个链表P 包含升序排列的整数 操作PrintLots(L,P)将打印L中那些由P所指定的位置上的元素
- TensorFlow学习笔记(二)把数字标签转化成onehot标签
- 在Android手机上将Minecraft国际版地图存档导入中国版(亲测有效)
- 开发中的技术选型调研总结
- Qt使用OpenCv