当前位置: 首页 > ds >正文

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

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的形式弹出,区别在于弹出的界面构成和其他的特性,这些在我们以后在开发中经常使用到,具体属性需要进一步解析!

http://www.xdnf.cn/news/11676.html

相关文章:

  • HTML-8
  • 【面经】字节跳动大数据开发面经
  • 如何在电脑中使用微信?pc版微信和手机版有什么区别
  • 图文并茂教您安装Exchange Server 2003
  • php简单商城小程序系统源码
  • 黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖Spring+MyBatis+SpringMVC+SpringBoot等)
  • 系统服务与应用程序相关性的分析
  • 【微信小程序开发】开发框架与工具的使用详解
  • 用word2007自动生成目录的两种方法
  • 第一次失效_爱搞机官方出品!永不失效的看片神器,第一次使用就爱上了
  • 按国家归类的海淘网站大全
  • iOS 中支付宝 ’openssl/asn1.h' file not found问题 和 objc-class-ref in AlipaySDK问题解决方法
  • 急什么,这个时侯不能急!
  • 英:英语面试常用口语900句
  • androidstudio配置,基于android的app开发详细步骤
  • 全球 42 亿 IPv4 地址宣告耗尽!
  • Nginx七大应用场景及配置
  • 分享106个图片JS特效,总有一款适合您
  • HTML5网页设计制作基础大二dreamweaver作业、使用HTML+CSS技术制作博客网站(5个页面)
  • LAMP框架的架构与环境配置
  • 游戏引擎?
  • SSH免密登录详细操作步骤
  • 程序员必知的10大经典基础实用算法
  • 微服务之服务网关介绍及(Spring Cloud Gateway搭建)
  • Centos7部署SVN
  • Spark2.3.2源码解析: 4.3.Yarn cluster 模式 Executor 注册/启动源码 分析
  • 史上最全 Activiti 学习教程,一文搞定最强工作流引擎!
  • 哪些域名后缀在国内可以进行备案?_允许备案通过的域名
  • 虚拟试衣技术发展综述:从应用到开源资源
  • c#copyto_String.CopyTo()方法以及C#中的示例