Android基础知识--Preference的使用
来源:互联网 发布:宝山行知幼稚园 编辑:程序博客网 时间:2024/04/29 21:52
在Android系统源码中,绝大多数应用程序的UI布局都有可能采用了Preference的布局结构,如Setting模块。Preference布局结构和View的布局结构相似,Preference的优点在于布局界面的可控性和高效率以及可存储值的简洁性(每个PreferenPreferencece存储在相对应下的SharedPreference文件夹下)。
1) 对比Preference和View下得各个子控件的区别与联系如下表。
Preference控件家庭View控件家庭
控件的含义PreferenceTextView文本框EditTextPreference
EditText
编辑框ListPreferenceListview列表框CheckPreference/SwitchPreference
CheckBox
单选框DialogPreferenceAlertDialog对话框RingtonePreference __________
铃声
2) Preference中常见的组合控件:
(1) PreferenceCategory :类似于LinearLayout、RelativeLayout,用于组合一组Preference,使布局更具备层次感 。
(2)PreferenceScreen : 所有Preference元素的根节点。
3)显示Preference布局结构
首先让Activity继承PreferenceActivity,在onCreate()方法中通 过addPreferencesFromResource(R.xml.custom_preference) (我们自定义的Preference 布局)。
4) Preference元素的通用XML Attributes说明:
android:key每个Preference控件独一无二的”ID”,唯一表示此Preferenceandroid:title整个屏幕的标题android:summary选项的简单说明android:defaultValue
对应值不存在时的默认值,常用于checkpreference控件中android:enabled表示该Preference是否可用状态android:entries
弹出的对话框中,列表显示的文本内容,注意哦,这里指定的是一个数组android:entryValues与android:entries相对应的值android:persistent表示Preference元素所对应的值是否写入sharedPreferen文件中,如果是true,则表示写入;否则,则表示不写入该Preference元素的值android:dependency表示一个Preference(用A表示)的可用状态依赖另外一个Preference(用B表示)。B可用, 则A可用;B不可用,则A不可用android:disableDependentsState与android:dependency相反。B可用,则A不可用;B不可用,则A可用
5)常用的方法:
getKey() setKey()
getSummary() setSummary()
getText() setText()
getXXX()代表取得xxx属性的值。
6)常用的Preference控件所包含的属性和方法说明
方法:
getEditText():返回的是我们在该控件中输入的文本框值;
getText() :返回的是我们之前sharedPreference文件保存的值;
2、ListPreference
XML Attributes:
android:dialogTitle弹出控件对话框时显示的标题android:entries类型为array,控件欲显示的文本android:entryValues类型为array,与文本相对应的key-value键值对,value保存至sharedPreference文件说明entries和entryValue属性使用的数组为定义在资源文件arrays.xml的数组名
方法:CharSequence[] getEntries(): 返回的是控件显示文本的一个”key”数组,对应于属性android:entries
CharSequence[] getEntryValues():返回的一个”value”数组,对应于属性android: entryValues;
CharSequence getEntry(): 返回当前选择文本;
String getValue() :返回当前选中文本选中的value 。与之对应的还有它们所对应的setXXX()方法。
3、RingtonePreference
XML Attributes:
android:ringtoneType响铃的铃声类型,主要有:ringtone(音乐)、notification(通知)、alarm(闹铃) /all(所有可用声 音类型);android:showDefault默认铃声,可以使用系统(布尔值---true,false)的或者自定义的铃声android:showSilent
指定铃声是否为静音。指定铃声包括系统默认铃声或者自定义的铃声 4、DialogPreference
XML Attributes:
android:dialogIcon 对话框的图标android:dialogLayout 用来承载对话框的布局文件android:dialogMessage 对话框的消息android:dialogTitle 对话框的标题android:negativeButtonText The negative button text for the dialog. android:positiveButtonText The positive button text for the dialog. 方法:getDialog()/getDialogIcon()/getDialogLayoutResource()/getDialogMessage()/getDialogTitle()/getNegativeButtonText()/getPositiveButtonText()等方法;。。。。。。
7)较为重要的几个知识点剖析:
public booleanonPreferenceTreeClick (PreferenceScreen preferenceScreen, Preference preference)
说 明 : 当Preference控件被点击时,触发该方法。
参数说明: preference 点击的对象。
返回值: true 代表点击事件已成功捕捉,不需要执行默认的动作或者返回上层调用;false 代表执行默认的动作并且返回上层调用。
2、 Preference.OnPreferenceChangeListener 该监听器的一个重要方法如下:
boolean onPreferenceChange(Preference preference,Object objValue)
说明: 当Preference的元素值发送改变时,触发该事件。
返回值: true 代表将新值写入sharedPreference文件中。
false 则不将新值写入sharedPreference文件
3、 Preference.OnPreferenceClickListener 该监听器的一个重要方法如下:
public booleanonPreferenceClick(Preference preference)
说明:当点击控件时触发发生,可以做相应操作。
8)实例操作:
1 创建Preference布局文件:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory
android:title="Settings">
<CheckBoxPreference
android:key="checkbox_preference"
android:title="CheckBox大标题"
android:summary="CheckBox小标题" />
</PreferenceCategory>
<PreferenceCategory
android:title="PreferenceCategory_2">
<EditTextPreference
android:key="edittext_preference"
android:title="EditText的大标题"
android:summary="EditText的小标题"
android:dialogTitle="这是对话框的大标题" />
<!-- <ListPreference
android:key="list_preference"
android:title="ListPreference的大标题"
android:summary="ListPreference的小标题"
android:entries="@array/entries_list_preference"
android:entryValues="@array/entryvalues_list_preference"
android:dialogTitle="ListPreference对话框Title" /> -->
</PreferenceCategory>
<PreferenceCategory
android:title="点击这个Category将启动新的Preference">
<PreferenceScreen
android:key="screen_preference"
android:title="新的PreferenceScreen的Title"
android:summary="PreferenceScreen的Summary">
<CheckBoxPreference
android:key="next_screen_checkbox_preference"
android:title="新的CheckBoxPreference的Title"
android:summary="新的CheckBoxPreference的Summary" />
</PreferenceScreen>
<PreferenceScreen
android:title="intent的Title"
android:summary="启动Intent的Summary">
<intent android:action="android.intent.action.VIEW"
android:data="http://www.android.com" />
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory
android:title="PreferenceCategory属性">
<CheckBoxPreference
android:key="parent_checkbox_preference"
android:title="CheckBoxPreference的Title"
android:summary="Summary,下个Item依赖这个CheckBox的选择" />
<!-- 在XML中定义CheckBoxPreference属性 -->
<CheckBoxPreference
android:key="child_checkbox_preference"
android:dependency="parent_checkbox_preference"
android:layout="?android:attr/preferenceLayoutChild"
android:title="这个Item依赖上个Item的选择"
android:summary="Summary,这个Item依赖上个Item的选择" />
</PreferenceCategory>
</PreferenceScreen>
2)创建一个Activity
public class PrefActivity extends PreferenceActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefdemo);
}
}
3)效果图:
- Android基础知识--Preference的使用
- Android--Preference的使用
- Android-------Preference的使用
- Android Preference的使用
- Android中Preference的使用
- Android中preference的使用
- Android的Preference使用-1
- Android中preference的使用
- Android中preference的使用
- Android中preference的使用
- Android中preference的使用
- android中Preference的使用
- Android中Preference的使用
- android Preference视图的使用
- Android的设置界面及Preference使用
- Android的设置界面及Preference使用
- Android中preference的使用(一)
- Android中preference的使用(二)
- qml TypeError: Cannot read property 'xxx' of undefined 错误处理
- 【风宇冲】Unity3D教程宝典之Shader篇:目录
- HTML5主体结构元素
- Get Post请求方式的乱码问题处理
- expect实现脚本中ssh密码输入
- Android基础知识--Preference的使用
- 写博客计划
- stl string常用函数
- 关于绝对定位一些讨论
- mysql group by 查询语句
- 项目管理与platform
- Android6.0权限管理依赖库的介绍和使用
- js 继承拷贝
- 给 Linux 系统“减肥”,系统垃圾清理