PreferenceActivity实现参数设置文件
来源:互联网 发布:网络最短路径算法 编辑:程序博客网 时间:2024/06/06 08:29
必须得说选项设置在之前进行pc端的开发中往往是一件很简单但是boring的事情,并不了解android开发的情况下我本来准备用之前那些粗暴方式解决的。但是在书上学到了preferenceActivity,看起来很赞,所以先写个demo练习一下。
PreferenceActivity并不是一个不同的activity,它不再使用普通的界面布局文件,而是使用选项配置的布局文件。选项设置的布局文件以preferenceScreen作为根元素——它表示定义一个参数设置的界面布局。
创建PreferenceActivity之前得先创建一个选项设置的布局文件,我使用的是android studio,在res/xml下面直接创建一个xml resource file即可得到一个空的选项配置文件。此处创建的文件会直接以preferencescreen为根元素。但是Android 3.0以后,摒弃了传统的preferencescreen嵌套方法,即不再推荐让activity直接加载选项配置布局文件,而是采用了preference-headers方法,该方法的要点是:在主屏中通过headers xml文件布局列出所有的主题设置项,而每个主题设置的详细设置则由各自指定的PreferenceFragment负责,而各自的PreferenceFragment可以如传统的PreferenceActivity一样布局自身的preferencescreen,即加载选项配置布局文件。
PreferenceActivity的选项配置列表的布局文件如下:
<?xml version="1.0" encoding="utf-8"?><preference-headers xmlns:android="http://schemas.android.com/apk/res/android"> <!--启动指定fragement的列表项--> <header android:fragment="com.example.preference.MainActivity$Fragment1" android:icon="@color/colorAccent" android:title="程序选项设置" android:summary="设置相关选项"></header> <header android:fragment="com.example.preference.MainActivity$Fragment2" android:icon="@color/colorPrimary" android:title="程序选项设置" android:summary="设置相关选项"></header></preference-headers>
而后是创建fragment对应布局文件:
<?xml version="1.0" encoding="utf-8"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"><RingtonePreference android:ringtoneType="all" android:title="设置铃声" android:summary="test RingtonePreference" android:showDefault="true" android:key="ring_key" android:showSilent="true"></RingtonePreference><PreferenceCategory android:title="个人信息设置"> <EditTextPreference android:key="name" android:title="username" android:summary="test EditTextPreference" android:dialogTitle="您的用户名为:"/> <ListPreference android:key="gender" android:title="性别" android:summary="test ListPreference" android:dialogTitle="ListPreference" android:entries="@array/gender_options" android:entryValues="@array/gender_options_values"/> <CheckBoxPreference android:key="autoSave" android:title="自动保存进度" android:summaryOn="自动保存:开启" android:summaryOff="自动保存:关闭" android:defaultValue="true"/></PreferenceCategory></PreferenceScreen>
里面的ListPreference需要在/res/values/array.xml文件中创建字符串数组后使用,android:entries用于展示给用户,而android:entryValues则是对应后台默认值。
<?xml version="1.0" encoding="utf-8"?><resources> <string-array name="gender_options"> <item>男</item> <item>女</item> <item>中性。。。</item> </string-array> <string-array name="gender_options_values"> <item>0</item> <item>1</item> <item>2</item> </string-array></resources>
然后创建对应activity:
package com.example.preference;import android.os.Bundle;import android.preference.PreferenceActivity;import android.preference.PreferenceFragment;import android.support.annotation.Nullable;import android.widget.Button;import java.util.List;public class MainActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(hasHeaders()){ Button button = new Button(this); button.setText("设置操作"); setListFooter(button); } } //重写该方法,负责加载界面布局文件 @Override public void onBuildHeaders(List<Header> target) { loadHeadersFromResource(R.xml.preference_header,target); } @Override protected boolean isValidFragment(String fragmentName) { return true; } public static class Fragment1 extends PreferenceFragment { @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } } public static class Fragment2 extends PreferenceFragment { @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } }}嗯,跑出来比我之前血炸的自己乱写的东西强多了,默哀。。。
最后在跑完之后还可以在DDMS中去查看选项设置生成的xml文件信息。
嗯,最近看了不少android中的布局,组件,觉得很多之前觉得很难以搞定的东西在前辈们精巧构思基础上变得其实很,嗯。。。平易近人?好吧,写一篇自己学到的PreferenceAcitivity实现参数设置文件的文章,更近于学习记录。嗯,就是这样了,好困,歇会儿。。。
- PreferenceActivity实现参数设置文件
- PreferenceActivity结合PreferenceFragment实现参数设置界面
- android PreferenceActivity结合PreferenceFragment实现参数设置界面学习实例
- PreferenceActivity-android 参数设置
- PreferenceActivity参数设置界面
- PreferenceActivity 参数设置UI的使用
- PreferenceActivity 参数设置UI的使用
- PreferenceActivity 参数设置UI的使用
- Android学习--PreferenceActivity UI实现
- Android设置Settings实现:PreferenceActivity
- Android设置Settings实现:PreferenceActivity
- PreferenceActivity
- PreferenceActivity
- PreferenceActivity
- PreferenceActivity
- PreferenceActivity
- PreferenceActivity
- PreferenceActivity
- 配置一个基于myeclipse的工程
- 除法2
- js好东西,大家一起分享
- hdu 1510-O(n^3)枚举
- java基础
- PreferenceActivity实现参数设置文件
- Web前端学习(1)_html
- Java多线程
- 《FreeSWITCH: VoIP实战》:FreeSWITCH 初步
- Android关于易源数据网络接口的使用
- [Spark]Spark RDD 指南三 弹性分布式数据集(RDD)
- Warning:The `android.dexOptions.incremental` property is deprecated and it h
- next_permutation进行全排列
- 合并排序(java)