本文主要介绍Android应用中preference preferences的编写方法。或许苹果翻译成‘偏好设置’更直观,也就是给用户的一些个性化调整菜单。有需要的朋友可以参考一下。
最近在研究android的时候,发现很多书都有介绍preference,但是大部分都是直接讲怎么用,没有提到它的用途和来历。我非常鄙视这种做法。
在这里,我给大家简单描述一下,可能不严谨,但至少可以帮助大家了解喜好是什么:
preference这个词是从preference翻译过来的。至于是什么,我用一句话来概括:preference是android提供的一个方便的存储数据的工具。
分析一下这句话:
首先,我们明确偏好与数据存储有关。
其次,它可以帮助我们方便地存储数据!为什么这个地方一定要强调方便二字?原因是我们根本不能使用它。我们有另外N种方法来实现同样的功能!它的出现相当于给我们提供了一个便捷的工具。当然,这个工具不是必须的。
preference都应用在什么场景呢?
这还得从android对preference的实现说起。实际上,preference中存储的数据最后都会以xml文件格式保存,它只能保存一些基本格式的数据。例如字符串/布尔型。xml文件存储在application /shared_prefs文件夹的data/data/package名称中。
各种限制和实现机制说明preference非常适合参数设置。事实上,它确实做到了这一点。通过使用preference,我们可以快速地将一些值保存到xml文件中,然后我们可以读取设置信息并执行相应的操作。
为了简化与偏好相关的应用程序开发,android为我们提供了一系列API来帮助我们。主要有PreferenceActivity、listpreference、edittextpreference、checkbox preference和铃声preference。
下面我们简单的介绍下ListPreference的用法:
最终效果图:
当我们点击这个选项时,就会弹出这样一个选择页面。
我们选择了山东,然后页面会自动关闭,山东对应的值已经写入后台xml文件。
活动代码:
包cn . com . Chen Zheng _ Java . pref;
导入Android . OS . bundle;
导入Android . preference . list preference;
导入Android . preference . preference activity;
导入Android . preference . preference manager;
导入Android . util . log;
/**
* @描述对偏好的研究
* @作者陈正_java
* @从2011/03/29开始
*继承了PreferenceActivity,我们可以方便地操作preference。
*例如,您可以通过getPreferenceManager获得首选项管理器。
*那么,我们可以不继承PreferenceActivity吗?当然,你还记得吗,事实上,在活动课上
*有一个共享的preferences getSharedPreferences(string name,int mode)方法。我们使用它
*您也可以对偏好进行操作。当然,如果我们没有继承PreferenceActivity,那么我们必须手动完成。
*数据已保存。而不是像现在这样根据你的选项自动保存数据。
*那么,这里的preference是如何自动保存的呢?答案很简单,就是在addPreferencesFromResource方法的具体实现中!
*/
公共类MyPreferencesActivity扩展PreferenceActivity {
@覆盖
public void on create(Bundle saved instancestate){
super . oncreate(savedInstanceState);
addPreferencesFromResource(r . XML . mylist preference);
/**
* getPreferenceManager返回首选项管理器对象。
*/
preference manager manager=getPreferenceManager();
//根据android:key中指定的名称(相当于id)获取首选项
list preference list preference=(list preference)manager . find preference(' mylist preference ');
Log.i('存储的值为,' '列表首选项。getvalue());
}
}
res/xml/mylistperference.xml布局文件
?可扩展标记语言版本='1.0 '编码='utf-8 '?
!-
对于该文件需要注意以下几点
第一:位置。该文件的位置是在res/xml/下的。
第二:格式,首选屏幕为根标签,列表首选项为子标签
第三:标签属性含义
安卓:关键唯一标识符,和android:id相类似,首选经理可以以其为参数通过查找首选项获取指定的偏爱
安卓:标题整个屏幕的标题
安卓系统:摘要选项的简单说明
安卓系统:条目弹出的对话框中,列表显示的文本内容,注意哦,这里指定的是一个数组哦
android:entryValues与安卓系统:条目相对应的值
安卓系统:默认值当对应值不存在时的默认值
安卓:对话标题弹出的对话框中的标题信息
-
首选屏幕
xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
android:key='screen_list '
android:title='标题'
android:summary='说明摘要'
列表首选项
android:key='myListPreference '
android:title='标题'
android:summary='说明摘要'
Android:entries=' @ array/list _ entries '
Android:entry values=' @ array/list _ entries _ value '
Android:dialog title=' dialog title '
Android:默认值=' @ array/list _ entries _ value 2 '
/ListPreference
/首选屏幕
res/values/arrays.xml为我们的目录提供了初始化数据哦
?可扩展标记语言版本='1.0 '编码='utf-8 '?
资源
字符串数组名称='list_entries '
项目山东/项目
项目福建/项目
项目北京/项目
项目河北/项目
/字符串数组
字符串数组名称='列表条目值'
项目山东1/项目
项目福建1/项目
项目北京1/项目
项目河北1/项目
/字符串数组
字符串数组名称='列表条目值2 '
项目山东2/项目
项目福建2/项目
项目北京2/项
项目河北2/项目
/字符串数组
/资源
当我们运行,并选择了福建时,我们可以查看在共享_首选项下的可扩展标记语言文件如下:
?可扩展标记语言版本='1.0 '编码='utf-8 '独立='是?
地图
string name='我的列表首选项'福建1/string
/地图
我们可以看到,我的列表首选项就是我们指定的那个安卓:关键的值,而福建一号就是我们在数组中定义的某个值!
EditTextPreference:
效果图:
当我们点击主页面的输入名称时,就会弹出该对话框,让我们输入名称。
代码:
?可扩展标记语言版本='1.0 '编码='utf-8 '?
首选屏幕
xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
android:key='edittext_screen '
android:title='屏幕标题'
android:summary='屏幕简要说明'
编辑文本首选项
android:dialogTitle='输入您的名称:'
Android:key=' editTitlePreference '
android:summary='简要说明'
android:title='输入名称'
/EditTextPreference
/首选屏幕
RingtonePreference:
效果图
代码:
?可扩展标记语言版本='1.0 '编码='utf-8 '?
首选屏幕
xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
android:key='edittext_screen '
android:title='屏幕标题'
android:summary='屏幕简要说明'
!-
安卓系统:铃声类型设置响铃模式,主要包括铃声、通知、闹钟、全部
安卓:显示无声是否显示静音
注意,如果模拟器中没有铃声的话,我们可以自己添加。将音乐复制到南达科他州卡上,然后转到机器人媒体播放器应用程序,选择该音乐,
单击菜单,然后选择用作铃声
-
铃声偏好
android:key='铃声偏好'
android:summary='简要说明'
android:title='选择系统铃声'
android:ringtoneType='闹钟'
安卓:showSilent='true '
/铃声首选项
/首选屏幕
我们看看后台的可扩展标记语言中是如何存储的
?可扩展标记语言版本='1.0 '编码='utf-8 '独立='是?
地图
string name='铃声首选项' content://settings/system/alarm _ alert/string
/地图
这里我们可要注意了哦,铃声偏好的值是一个上呼吸道感染字符串。
组织首选项
何谓组织首选项啊,实际上就是为首选项分组!
分组之后,我们首页只显示组名,当我们点击进去的时候,才会显示具体的首选项列表。如图:
代码:
?可扩展标记语言版本='1.0 '编码='utf-8 '?
首选屏幕
xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
android:key='edittext_screen '
android:title='屏幕标题'
android:summary='屏幕简要说明'
!-第一组-
首选屏幕
xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
android:key='edittext_screen '
android:title='第一组'
android:summary='点击进入第一组首选项'
铃声偏好
android:key='铃声偏好'
android:summary='简要说明'
android:title='选择系统铃声'
android:ringtoneType='闹钟'
安卓:showSilent='true '
/铃声首选项
/首选屏幕
!-第二组-
首选屏幕
xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
android:key='edittext_screen '
android:title='第二组'
android:summary='点击进入第二组首选项'
编辑文本首选项
android:dialogTitle='输入您的名称:'
Android:key=' editTitlePreference '
android:summary='简要说明'
android:title='输入名称'
/EditTextPreference
/首选屏幕
!-第三组-
首选屏幕
xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
android:key='edittext_screen '
android:title='第三组'
android:summary='点击进入第三组首选项'
编辑文本首选项
android:dialogTitle='输入您的名称:'
Android:key=' editTitlePreference '
android:summary='简要说明'
android:title='输入名称'
/EditTextPreference
/首选屏幕
/首选屏幕
以上的这种方法适合首选项的数目较多时使用。
如果我们首选项的数目较少,但是我们依旧想为他们分组下,怎么办呢?
我们可以将上面代码中的嵌套首选屏幕改为首选类别,就这么简单!
?可扩展标记语言版本='1.0 '编码='utf-8 '?
首选屏幕
xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
android:key='edittext_screen '
android:title='屏幕标题'
android:summary='屏幕简要说明'
!-第一组-
偏好类别
xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
android:key='edittext_screen '
android:title='第一组'
android:summary='点击进入第一组首选项'
铃声偏好
android:key='铃声偏好'
android:summary='简要说明'
android:title='选择系统铃声'
android:ringtoneType='闹钟'
安卓:showSilent='true '
/铃声首选项
/首选类别
!-第二组-
偏好类别
xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
android:key='edittext_screen '
android:title='第二组'
android:summary='点击进入第二组首选项'
编辑文本首选项
android:dialogTitle='输入您的名称:'
Android:key=' editTitlePreference '
android:summary='简要说明'
android:title='输入名称'
/EditTextPreference
/首选类别
!-第三组-
偏好类别
xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
android:key='edittext_screen '
android:title='第三组'
android:summary='点击进入第三组首选项'
编辑文本首选项
android:dialogTitle='输入您的名称:'
Android:key=' editTitlePreference '
android:summary='简要说明'
android:title='输入名称'
/EditTextPreference
/首选类别
/首选屏幕
效果图可就大变样了:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。