Android源码--Settings之Preference布局的详解

最近在研究Android源码Settings应用的时候发现里面使用了大量了的Preference布局,那么这个perference布局有什么特点呢。
Preference翻译为偏好,但理解为首先项更为合适,他可以把值用sharedPreference保存。
<一> Preference布局中常用的标签:
Android源码--Settings之Preference布局的详解_第1张图片
最近在研究Android源码Settings应用的时候发现里面使用了大量了的Preference布局,那么这个perference布局有什么特点呢。
Preference翻译为偏好,但理解为首先项更为合适,他可以把值用sharedPreference保存。
<一> Preference布局中常用的标签:
PreferenceScreen:布局中的根节点,有点类似于LinearLayout,如果PreferenceScreen中嵌套PreferenceScreen,点击嵌套的PreferenceScreen会跳到另一个Screen。
PreferenceCategory:让布局更有层次感,比如图片中的红色字体部分。
<二> 常见的有CheckBoxPreference、EditextPreference、ListPreference等等。
<三> Preference的属性
key:每个preference的唯一标识,类似于view空间的ID,通过这个可以找到这个Preference控件

mListPreference=(ListPreference)findPreference("list");

title:Preference控件的标题,比如“语言”
summary:Preference控件的子标题,比如“中国(简体)”
defaultValue 默认值。例如,CheckBoxPreference 默认值可选“true”,表示默认选中状态; EditTextPreference 默认值写“110”,弹出的edit框中默认值为“110”
enabled 表示该Preference控件是否可用状态
persistent 表示Preference所对应的值是否写入sharedPreference的文件中,true表示写入,false表示不写入
dependency 表示一个Preference(用A表示)的可用状态依赖另外一个Preference(用B表示)。B可用,则A可用;B不可用,则A不可用。写入的值为其他preference的key
<四、Preference监听事件>
Android源码--Settings之Preference布局的详解_第2张图片
Preference在activity中继承PreferenceActivity(API 11以后推荐PreferenceFragment ),PreferenceActivity中有一个总要的监听方法
onPreferenceTreeClick( )
两个重要的监听接口:
Preference.OnPreferenceChangeListener:onPreferenceChange( )
Preference.OnPreferenceClickListener: onPreferenceClick( )

那么这三个监听方法的执行顺序和区别又是什么呢?

当你点击Preference控件时首先会执行onPreferenceClick()方法,它的返回值是boolean类型的,如果返回值为:
true,该点击事件被消费掉,将不执行onPreferenceTreeClick( )方法
false,该点击事件没有被消费掉,将继续执行onPreferenceTreeClick( )方法

onPreferenceTreeClick( )的返回值也为Boolean类型,如果为:
true:事件已经被成功消费,不用返回上一层继续执行,比如不会执行Preference里面的Intent跳转。
false:事件没有被消费,需要返回上一层继续执行,比如执行intent跳转。

onPreferenceChange( ) ,当preference控件的value改变时会触发这个监听方法,返回值为true就保存新值到sharedpreference中,返回值为false则不保存新值。

<五、preference布局的添加已经控件的初始化>
Android源码--Settings之Preference布局的详解_第3张图片

你可能感兴趣的:(Android源码,Setting)