Android 中Preference作为布局的应用
2015-12-16 22:15
375 查看
java.lang.Object
↳ java.util.prefs.Preferences
目前在Android系统源码中,Setting模块中使用的就是Preference布局,而不是常用的View布局结构。现在我们来学习Preference在布局中的应用。
Preference
控件
它的应用效果与TextView 有点相似。但是使用方法却完全不同。
1.加载Preference布局:
首先要使我们自定义的类去继承PreferenceActivity或PreferenceFragment(建议),然后在onCreate()方法中调用
addPreferencesFromResource(R.xml.mypreferences);
注意:mypreferences是我们自定的Preference布局,
在res/xml/mypreferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<Preference
android:key="preference"
android:summary="123"
android:title="preference" >
</Preference>
</PreferenceScreen>
2.Preference属性说明:
android:key
每个Preference控件唯一标识,通过它找到对应的Preference,相当于View中的“id”
android:defaultValue 默认值。例如,CheckBoxPreference 默认值可选“true”,表示默认选中状态;
EditTextPreference 默认值写“110”,弹出的edit框中默认值为“110”
android:enabled 表示该Preference控件是否可用状态
android:title 表示该Preference显示的大标题
android:summary 表示该Preference显示的小标题
android:persistent 表示Preference所对应的值是否写入sharedPreference的文件中,true表示写入,false表示不写入
android:dependency
表示一个Preference(用A表示)的可用状态依赖另外一个Preference(用B表示)。
B可用,则A可用;B不可用,则A不可用。写入的值为其他preference的key
3.[b]Preference的跳转[/b]
在Preference布局中存在两种方法进行跳转:
A:在配置每个Preference控件的属性时,我们可以设置点击它时跳转的Intent。在xml中配置如下:
<Preference
android:key="preference"
android:summary="小标题"
android:title="大标题" >
<intent
android:targetClass="com.example.swiperefreshlayoutdemo.MainActivity"
android:targetPackage="com.example.swiperefreshlayoutdemo" >
</intent>
</Preference>
B:在方法onPreferenceTreeClick(),创建新的跳转Intent;
注意:当上述两种方式同时存在时,则看onPreferenceTreeClick()的返回值,如果为true,表示消费该事件使用onPreferenceTreeClick()中的,如果为false时,表示不消费该事件,使用xml中配置的intent。
4.Preference的事件分析
1:重写父类方法onPreferenceTreeClick(),点击时执行该方法。
2:注册监听事件setOnPreferenceClickListener(),重写onPreferenceClick(),点击时执行该方法;
当onPreferenceClick()返回为false,那么会先执行onPreferenceClick(),后执行onPreferenceTreeClick().
当onPreferenceClick()返回为true,表示消费该事件,只会执行onPreferenceClick();
注册监听事件setOnPreferenceChangeListener(),重写onPreferenceChange().
当Preference的元素值发生改变时,执行该方法。当返回为false时,则不将新值写入sharedPreference文件,返回为true时,将新值写入sharedPreference文件中。
补充:点击某个Preference控件后,会先回调onPreferenceChange()方法,即是否保存值,然后再回调onPreferenceClick以及onPreferenceTreeClick()方法,因此在onPreferenceClick/onPreferenceTreeClick方法中我们得到的控件值就是最新的Preference控件值。
// 得到存储在Preferences值的对象,然后对其进行相应操作
SharedPreferences shp = PreferenceManager.getDefaultSharedPreferences(this);
boolean apply_wifiChecked = shp.getBoolean("apply_wifi", false);
↳ java.util.prefs.Preferences
目前在Android系统源码中,Setting模块中使用的就是Preference布局,而不是常用的View布局结构。现在我们来学习Preference在布局中的应用。
Preference
控件
它的应用效果与TextView 有点相似。但是使用方法却完全不同。
1.加载Preference布局:
首先要使我们自定义的类去继承PreferenceActivity或PreferenceFragment(建议),然后在onCreate()方法中调用
addPreferencesFromResource(R.xml.mypreferences);
注意:mypreferences是我们自定的Preference布局,
在res/xml/mypreferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<Preference
android:key="preference"
android:summary="123"
android:title="preference" >
</Preference>
</PreferenceScreen>
2.Preference属性说明:
android:key
每个Preference控件唯一标识,通过它找到对应的Preference,相当于View中的“id”
android:defaultValue 默认值。例如,CheckBoxPreference 默认值可选“true”,表示默认选中状态;
EditTextPreference 默认值写“110”,弹出的edit框中默认值为“110”
android:enabled 表示该Preference控件是否可用状态
android:title 表示该Preference显示的大标题
android:summary 表示该Preference显示的小标题
android:persistent 表示Preference所对应的值是否写入sharedPreference的文件中,true表示写入,false表示不写入
android:dependency
表示一个Preference(用A表示)的可用状态依赖另外一个Preference(用B表示)。
B可用,则A可用;B不可用,则A不可用。写入的值为其他preference的key
3.[b]Preference的跳转[/b]
在Preference布局中存在两种方法进行跳转:
A:在配置每个Preference控件的属性时,我们可以设置点击它时跳转的Intent。在xml中配置如下:
<Preference
android:key="preference"
android:summary="小标题"
android:title="大标题" >
<intent
android:targetClass="com.example.swiperefreshlayoutdemo.MainActivity"
android:targetPackage="com.example.swiperefreshlayoutdemo" >
</intent>
</Preference>
B:在方法onPreferenceTreeClick(),创建新的跳转Intent;
注意:当上述两种方式同时存在时,则看onPreferenceTreeClick()的返回值,如果为true,表示消费该事件使用onPreferenceTreeClick()中的,如果为false时,表示不消费该事件,使用xml中配置的intent。
4.Preference的事件分析
1:重写父类方法onPreferenceTreeClick(),点击时执行该方法。
2:注册监听事件setOnPreferenceClickListener(),重写onPreferenceClick(),点击时执行该方法;
当onPreferenceClick()返回为false,那么会先执行onPreferenceClick(),后执行onPreferenceTreeClick().
当onPreferenceClick()返回为true,表示消费该事件,只会执行onPreferenceClick();
注册监听事件setOnPreferenceChangeListener(),重写onPreferenceChange().
当Preference的元素值发生改变时,执行该方法。当返回为false时,则不将新值写入sharedPreference文件,返回为true时,将新值写入sharedPreference文件中。
补充:点击某个Preference控件后,会先回调onPreferenceChange()方法,即是否保存值,然后再回调onPreferenceClick以及onPreferenceTreeClick()方法,因此在onPreferenceClick/onPreferenceTreeClick方法中我们得到的控件值就是最新的Preference控件值。
// 得到存储在Preferences值的对象,然后对其进行相应操作
SharedPreferences shp = PreferenceManager.getDefaultSharedPreferences(this);
boolean apply_wifiChecked = shp.getBoolean("apply_wifi", false);
相关文章推荐
- android 多级下拉菜单实现教程
- 设计模式1—策略模式
- 关于 android 中 postDelayed方法的讲解
- Android获取系统屏幕亮/灭屏状态
- android四大组件
- Android- 第一个Android 计算器程序
- Android Studio——点击事件监听
- 《Android群英传》读书笔记(5)第六章:Android绘图机制与处理技巧之一
- Android NDK使用之--用pthread实现多线程
- 深入理解Android 编译系统
- android studio 中去除应用标题栏
- Android下手动挂载分区
- Android学习之Spinner
- android之文件存储路径
- Android Studio for Ubuntu 14.04 无法输入中文解决办法
- SpannableString中的LinkMovementMethod和ClickableSpan的实现安卓可点击有颜色文字使用
- android 使用String.format("%.2f",67.876)自已定义语言(俄语、西班牙语)会把小数点变为逗号
- android按两次返回键退出程序
- Android TextView查看更多
- Log.d and Log.v for Android