Android应用Preference相关及源码浅析(Preference组件家族篇)

本文详细解析了Android中的Preference相关组件,包括独立控件如EditTextPreference、ListPreference、SwitchPreference、RingtonePreference等,以及组合控件如PreferenceScreen、PreferenceCategory。文章深入探讨了各组件的属性、使用方法和显示控制API,还涉及了PreferenceActivity和PreferenceFragment的源码分析,是理解Android偏好设置界面实现的重要参考资料。
摘要由CSDN通过智能技术生成

CheckPreference类似常见控件的CheckBox,一个item,右侧有一个CheckBox,用于通过SharePreferences存储操作的设置值,具体翻墙点我

如下是CheckPreference的相关属性介绍:

| attr | description |

| — | — |

| android:disableDependentsState | 与android:dependency相反;B可用,则A不可用;B不可用,则A可用。 |

| android:summaryOff | 选项未选中时显示的摘要。 |

| android:summaryOn | 选项被选中时显示的摘要。 |

2-2-3 独立控件EditTextPreference

EditTextPreference类似常见控件的EditText,一个item,点击弹出一个EditText的对话框,用于通过SharePreferences存储操作的设置值,具体翻墙点我

该控件无自有属性。具体不再介绍,相关方法查看官方API。

2-2-4 独立控件ListPreference

ListPreference类似常见控件的ListView,一个item,点击弹出一个ListView的Dialog,用于通过SharePreferences存储操作的设置值,具体翻墙点我

如下是ListPreference的相关属性介绍:

| attr | description |

| — | — |

| android:entries | list要显示的item数组名字。 |

| android:entryValues | list要显示的item数组值。 |

2-2-5 独立控件MultiSelectListPreference

MultiSelectListPreference类似常见控件的ListView,一个item,点击弹出一个多选的ListView的Dialog,用于通过SharePreferences存储操作的设置值,具体翻墙点我

MultiSelectListPreference的相关属性同上ListPreference。

2-2-6 独立控件SwitchPreference

SwitchPreference类似常见控件的Switch,一个item,右侧有一个Switch控件,用于通过SharePreferences存储操作的设置值,具体翻墙点我

如下是SwitchPreference的相关属性介绍:

| attr | description |

| — | — |

| android:disableDependentsState | 与android:dependency相反;B可用,则A不可用;B不可用,则A可用。 |

| android:summaryOff | 选项未选中时显示的摘要。 |

| android:summaryOn | 选项被选中时显示的摘要。 |

| android:switchTextOff | 关闭状态的文字提示。 |

| android:switchTextOn | 打开状态的文字提示。 |

2-2-7 独立控件RingtonePreference

RingtonePreference就是一个铃声选择item,点击弹出铃声选择list的dialog,用于通过SharePreferences存储操作的设置值,具体翻墙点我

如下是RingtonePreference的相关属性介绍:

| attr | description |

| — | — |

| android:ringtoneType | 铃声类型。ringtone/notification/alarm/all |

| android:showDefault | 选项中默认的铃声。 |

| android:showSilent | 是否显示静音项。 |

2-2-8 组合控件PreferenceScreen

PreferenceScreen就Preference hierarchy的root节点,实例化他可以使用createPreferenceScreen(Context)方法;这个类可以依附于两个地方,当一个preferenceactivity指向他时用来作为根布局显示偏好,当他嵌套出现在另一个Preference hierarchy内部时他会启动一个新的界面来显示子项Preference或者设置的intent;综上也就是说它不仅可以作为设置界面显示,而且还能够启动activity,具体翻墙点我

如下展示了作为根布局及子布局的两种情况:

<–! 作为根及子项展示设置界面>

<PreferenceScreen

xmlns:android=“http://schemas.android.com/apk/res/android”

android:key=“first_preferencescreen”>

<CheckBoxPreference

android:key=“wifi enabled”

android:title=“WiFi” />

<PreferenceScreen

android:key=“second_preferencescreen”

android:title=“WiFi settings”>

<CheckBoxPreference

android:key=“prefer wifi”

android:title=“Prefer WiFi” />

… other preferences here …

<–! 内嵌intent的模式>

<intent

android:targetPackage=“com.test.main”

android:targetClass=“com.test.main.activity”

2-2-9 组合控件PreferenceCategory

PreferenceCategory类似于LinearLayout,用于组合一组可设置标题的Preference,使布局更具备层次感,具体翻墙点我

这个类也没有啥特殊的东西介绍,详细参考API。

到此常用的Preference组件xml属性介绍完毕,对应的java方法就不再说明了,还有就是他们的protect方法也不再详细介绍,具体参见API。

2-3 新增Headers相关基础组件属性说明

上面我们简单介绍了PreferenceScreen相关xml的属性,这些其实是老版本的处理方式;自从Android 3.0引入Fragment之后,Preference相关的控件也有了变化。

由于PreferenceActivity在3.0开始也需要能够处理多屏幕碎片化问题,所以Android 3.0之前采用PreferenceScreen嵌套的方法来跳转分类细则,而Android 3.0及之后使用了Preference Headers的方法来适配多屏幕碎片化问题。

他的核心就是在主屏中通过headers的xml布局列出所有的主题设置项,每个主题设置的详细设置由各自指定的PreferenceFragment负责,而各自的PreferenceFragment可以如传统的PreferenceActivity 一样布局自身的PreferenceScreen。

preference-headers就是他们的root,既然这样,那我们就来看看Headers相关的组件及方法吧。

2-3-1 PreferenceActivity.Header相关属性方法使用基础

点我翻墙查看。Header继承自Object,实现了Parcelable,用来展示一个item的header。

相关属性如下:

| attr | description |

| — | — |

| android:icon | |

| android:breadCrumbShortTitle | 在fragment显示的短标题文字。 |

| android:breadCrumbTitle | 在fragment显示的标题文字。 |

| android:fragment | 当选择该头文件时,将显示该fragment的全名称。 |

| android:id | 唯一识别id。 |

| android:summary | item描述信息。 |

| android:title | item头名称。 |

如下是一个简单展示:

<?xml version="1.0" encoding="utf-8"?>

android:summary=“test 1”

android:title=“Name1”>

android:summary=“test”

android:title=“Name” >

<extra

android:name=“type”

android:value=“first” />

关于Header的用法下面会详细演示,基本情况就介绍到这里。

2-4 Preference相关组件显示操作控制API解释

有了上面Preference组件基本概念及属性介绍以后就相当于我们有了砖瓦,接下来就是咋盖房子了,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值