已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基础在Ap中有时需要设置一些配置参数,这些参数通过配置文件保存。为了设置这些参数,需要提供一个UI,针对这种需求,Android提供了preferenceActivity。 PreferenceActivity通过读取预先定义的xml文件来生成界面,并能够自动的根据用户的操作来修改参数,并保存到配置文件中供读取。 1.MainActivity: 按下Menu按键弹出菜单,点击菜单启动SettingActivity。 2.SettingActivity继承自PreferenceActivity:Java代码Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);addPreferencesFromResource(R.xml.settings);在onCreate函数中加载参数定义文件。Java代码1. publicvoidonSharedPreferenceChanged(SharedPreferencessharedPreferences,Stringkey);当参数值被改变时会调用此Listener,可以在此Listener中作一些界面刷新工作,比如当前参数值改变为新的值。Java代码1. Preferenceandroid.preference.PreferenceActivity.findPreference(CharSequencekey);获取指定key所对应的preference对象,即使此key在配置文件中尚未保存,也能够得到preference对象,而不会是null。3.settings.xml:保存在xml目中的参数定义文件,在创建Android XML文件时选择Preference即可创建一个空的参数定义文件。Xml代码添加一个CheckBoxPreference子项,并设置属性:Key:checkbox_keyTitle:CheckBox ItemSummary:test check box itemXml代码key是用来访问此参数的值的关键字,保存后的配置文件类似如下内容:Xml代码启动Ap,点击菜单,即可看到参数设置界面,并且当用户点击操作改变了参数值后,也会被自动保存。4.使用参数值:SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); boolean check_test = sp.getBoolean(checkbox_key, false);进阶:1.保存参数文件的路径:/data/data/包名/shared_prefs/包名_preferences.xml如果想指定保存文件名,可使用:getPreferenceManager().setSharedPreferencesName(配置文件名);2.其他的参数配置项:2.1 EditTextPreference:Xml代码此参数设置项会弹出一个文本输入对话框,并在配置文件中生成类似以下内容:this is a good text弹出对话框的图标、标题、提示信息、Icon、以及两个按钮的文本都可以设定。至于自定义对话框的布局,虽然有这个属性,但是自定义布局后就不能自动保存值了,本来以为只要放一个ID和原来一样的EditText就能,但是查看源代码,发现其EditText是new出来的,没法替代。2.2 PreferenceCategory:一个分类分隔条。只有title属性有效。2.3 PreferenceScreen:此项包含的所有子项在新屏幕上显示,就好像进入二级菜单。2.4 ListPreference:会弹出一个列表对话框供选择。2.5 RingtonePreference:会弹出系统铃声列表供选择。2.6 Preference:通用参数项。点击后需要程序自己响应事件。3.自定义选项:系统的提供的界面有时不能满足需要,这时就需要自定义选项了。有两种方法可以实现自定义选项,一是用Preference作为选项,并重新实现onPreferenceTreeClick函数。一是自定义一个类,类似于EditTextPreference这种系统内置的类,然后引用。3.1使用一个Preference占位,然后重新实现onPreferenceTreeClick()函数:Java代码public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) String key = preference.getKey();if( key != null )if(key.equals(some_key) showDialog(DIALOG_SOME_KEY);return super.onPreferenceTreeClick(preferenceScreen, preference);当点击指定key的Preference时,就会弹出对话框,然后在合适的时机使用如下代码保存参数即可。Java代码1. SharedPreferences.Editoreditor=preference.getEditor();2. editor.putLong(ttt,123);3. mit();SharedPreferences.Editor editor = preference.getEditor(); editor.putLong(ttt, 123); mit();此种方法如果要触发onSharedPreferenceChanged(),可以通过preference.getOnPreferenceChangeListener()获取listener然后来呼叫。3.2自定义选项类:此处以一个选择时间的对话框选项为例。3.2.1 从DialogPreference继承一个类:Java代码public class TimePreference extends DialogPreference3.2.2 构造函数:Java代码public TimePreference(Context context, AttributeSet attrs) super(context, attrs);setDialogLayoutResource(R.layout.time_preference);/加载布局文件3.3.3 布局文件:Xml代码定义了一个id为timePicker_preference的TimePicker。3.3.4 界面初始化:在dialog的函数中通过id找到TimePicker,然后使用已经存储的值或者默认值,再设置到TimerPicker中。Java代码Overrideprotected void onBindDialogView(View view) super.onBindDialogView(view);mPicker = (TimePicker)view.findViewById(R.id.timePicker_preference);if(mPicker != null) mPicker.setIs24HourView(true);long value = mValue;Date d = new Date(value);mPicker.setCurrentHour(d.getHours();mPicker.setCurrentMinute(d.getMinutes();3.3.5 保存值:在对话框关闭时保存值。Java代码Overrideprotected void onDialogClosed(boolean positiveResult) super.onDialogClosed(positiveResult);if(positiveResult) Date d = new Date(0, 0, 0, mPicker.getCurrentHour(), mPicker.getCurrentMinute(), 0);long value = d.getTime();if(callChangeListener(value) setValue(value);3.3.6 使用此preference:在参数定义文件中增加:Xml代码类似于使用自定义控件。运行即可看到效果:3.3.7 使用默认值:在参数定义文件中增加一个定义:Xml代码并且自定的preference类中要实现两个函数:Java代码Overrideprotected Object onGetDefaultValue(TypedArray a, int index) return a.getString(index);以及Java代码Overrideprotected void onSetInitialValue(boolean restorePersistedValue,Object defaultValue) long value;if(restorePersistedValue) value = getPersistedLong(0);else value = Long.parseLong(defaultValue.toString(); setValue(value);当Pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 质量光临自查制度
- 财务共享运营相关制度
- 落实工作责任,严格执行值班制度
- 用电检查与稽查培训课件
- 2026海南三亚崖州湾国家实验室玉米基因组育种团队人员招聘备考考试题库附答案解析
- 2026江苏南京市秦淮区朝天宫街道食品安全执法辅助人员招聘1人参考考试题库附答案解析
- 2026浙江宁波市升力同创科技咨询服务有限公司招聘1人备考考试试题附答案解析
- 2026年上海理工大学附属中学春季招聘参考考试试题附答案解析
- 成都传媒集团集团管理媒体单位副职招聘备考考试试题附答案解析
- 2026年福建莆田第十五中学代课教师招聘若干人备考考试试题附答案解析
- 电力系统调频辅助服务市场交易实施细则
- 风电、光伏项目前期及建设手续办理流程汇编
- DB41T 1522-2018 可燃气体和有毒气体报警仪检查检测技术规范
- QBT 1815-2002 指甲钳行业标准
- 医疗机构岗位聘用合同
- DZ∕T 0219-2006 滑坡防治工程设计与施工技术规范(正式版)
- 2021修订《城市规划设计计费指导意见》
- 《建筑施工模板安全技术规范》JGJ162-2024解析
- 吕梁职业技术学院单招《英语》考试复习题库(含答案)
- 服装店股权众筹项目计划书
- 西班牙语专业本科论文模板
评论
0/150
提交评论