一种构建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系(一)相关推荐

  1. Android Preference详解之初识Preference及Preference系(一)

    Android Preference详解之初识Preference及Preference系(一) 转载:https://blog.csdn.net/google_huchun/article/deta ...

  2. Android进阶——Preference详解之初识Preference及Preference系(一)

    引言 很久没来得及更新博客了,时间总是不够,以前的知识还没来得及总结完毕,新的知识又源源不断地接触到,工作也很忙,但还是没有忘记自己最低点目标每个月至少四篇.好了,废话就到这里啦,开始进入正文,这篇文 ...

  3. android preference属性,Android进阶——Preference详解之Preference系的基本应用和管理(二)...

    并非我们第一次打开相应界面之后就会自动创建对应的SharedPreferences文件,而是在我们改变了原有状态时候喎�"/kf/ware/vc/" target="_b ...

  4. Android进阶——Preference详解之Preference系的基本应用(三)

    引言 前面一篇文章Android进阶--Preference详解之Preference系的基本应用和管理(二)介绍了二级Preference的使用和特点,接下来进入系统给我提供的底级Preferenc ...

  5. 【转】Android菜单详解——理解android中的Menu--不错

    原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...

  6. Android菜单详解——理解android中的Menu

    前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...

  7. Android LayoutInflater详解

    Android LayoutInflater详解 在实际开发中LayoutInflater这个类还是非常有用的,它的作用类 似于findViewById().不同点是LayoutInflater是用来 ...

  8. android Fragments详解

    android Fragments详解一:概述 android Fragments详解二:创建Fragment 转载于:https://my.oschina.net/liangzhenghui/blo ...

  9. android WebView详解,常见漏洞详解和安全源码(下)

    上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑.  上篇:android WebView详解,常见漏洞详解和安全源码(上)  转载请注明出处:http ...

最新文章

  1. CentOS 7安装使用Github
  2. mac terminal
  3. python PILLOW
  4. opencv python 图像去噪
  5. Oracle 创建主键自增表
  6. python赋值语句对错_深入理解Python中变量赋值的问题
  7. 卷积神经网络(高级篇) Inception Moudel
  8. C#学习基础---BrowsableAttribute.Browsable属性
  9. signature=c9b7b92b79e9a32ac6be9993bfe5df5a,GBA金手指
  10. JAVA JVM优化总结
  11. windows server 2008百度网盘下载
  12. 俺的web课设大作业
  13. 怎么打开unity tweak tool
  14. 深度linux显示方块,在Deepin下用Wine运行文华财经赢顺的经验,附字体显示方框的解决...
  15. Java8使用jdeps —— Java类依赖性分析器
  16. 一个链表L 一个链表P 包含升序排列的整数 操作PrintLots(L,P)将打印L中那些由P所指定的位置上的元素
  17. TensorFlow学习笔记(二)把数字标签转化成onehot标签
  18. 在Android手机上将Minecraft国际版地图存档导入中国版(亲测有效)
  19. 开发中的技术选型调研总结
  20. Qt使用OpenCv

热门文章

  1. STM32外部中断干扰解决方案
  2. python中调用linux命令报错cat: -: Bad file descriptor
  3. ADFS 概念与基本开发介绍 (1)
  4. ext3文件系统基础
  5. 训练网络时,loss损失的问题
  6. 6 zabbix警报邮件发送配置
  7. css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
  8. armel、armhf和arm64
  9. 安装autoconf
  10. uni-app前端开发(零)