最近换了一个新业务,做设置,满篇都是Preference的东西,这部分基本属于盲区,快速入门了一下。
网上的使用方法很多,我这里就不赘述了,可以参考这个帖子:http://www.cnblogs.com/tianjian/archive/2012/11/29/2795091.html 个人认为这个说的还是很详细的。
我这里要说的是这个Preference设计的结构。
先来看看这个包里面主要的一些类的关系
这里就是主要的一些类了,为什么我中间只列出来了这么少的成员变量和方法呢,那是因为我主要就针对其中的两条主线进行分析。首先这里有一个组合模式的体现,那是Preference和PreferenceGroup,小伙伴们应该对这个模式不陌生吧,Android里面有一个更出名的是View和ViewGroup。这个图还有一个问题就是,PreferenceFragment不是必须的,没有它结构也是差不多的。
刚刚我说的两条主线,其一就是View的显示。使用这个框架设置视图的起点是addPreferencesFromResource()方法,其实呢,通过源码的堆栈调用可以看出,就是将PreferenceScreen跟listview绑定起来了,在PreferenceScreen里面又将所有的树形Preference的组织结构变成了一个list,这样就相当于用一个ListAdapter来充当ListView的视图容器,每个Preference为其提供item View和item click响应。这就是为什么这个架构中有一个PreferenceGroupAdapter的原因。另外一条主线是Click的响应过程,这个体系会将这个事件从下到上传递,直到做出对应的操作。