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

转载:https://blog.csdn.net/google_huchun/article/details/70194876

一种构建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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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系(一)

    一种构建UI的方式--通过Preference去构建UI,而不是直接通过layout方式(或许说得不够准确,因为Preference系也是间接通过Activity去展示的,只不过对于很多新人来说这种方 ...

  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. android 数据库索引,SQLite数据库提供警告自动索引(列)升级Android L后
  2. Udacity机器人软件工程师课程笔记(二十八) - 卷积神经网络实例 - Fashion-MNIST数据集
  3. 按ctrl+shift 无法切换输入法了
  4. qc linux mysql 安装教程_linux下安装mysql
  5. startActivity( ) 与startActivityForResult( )的区别
  6. 使用Fiddler对android应用抓包 专题
  7. 我对软件开发的一点思考
  8. 微课|《Python编程基础与案例集锦(中学版)》第4章例题讲解(3)
  9. 2016年最好的15个Web设计和开发工具
  10. docker 代码中的文件路径_docker修改默认存储路径
  11. 蓄电池单格电压多少伏_直流屏蓄电池电压的常见问题小结
  12. 转:不同的行业和工作的真实情况是怎样的?
  13. 斐讯路由器使用说明,校园网破解,breed控制台,华硕固件
  14. 利用官方预训练模型快速计算Inception Score和FID
  15. 0203逻辑卷管理、RAID磁盘阵列、VD0、管理运行级别
  16. Nginx模块开发系列1--预备知识
  17. 2019CCPC女生专场赛_K - Tetris_打表/模拟_暴力之王
  18. 蓝牙系统中的主机与控制器
  19. 【后端教程】低代码起势,为什么它有希望“干掉”开发? | 甲子光年
  20. Java编写程序实现计算租赁价

热门文章

  1. flask-day3:模板引擎jinja2|JsonResponse|页面url_for|
  2. java四个数打擂_Java语言逻辑 数组
  3. 云盘2t服务器真的要2t硬盘吗,阿里要做云盘了,只要注册就送2T容量,振奋人心!...
  4. 廖雪峰Git学习笔记2-时光机穿梭
  5. 2020牛客暑期多校训练营(第一场)J、Easy Integration (数学、分部积分)
  6. 3884: 上帝与集合的正确用法 —— 欧拉降幂
  7. AI 选择、移动、对齐
  8. 小程序 - 图片左右列表展示
  9. ios keychain 不被清理_清理iPhone内存【超实用】
  10. 非我族类其心必异--咱们一起骂老板(5)