Android之PreferenceActivity应用详解
2023-06-13 09:14:40 时间
为了引入这个概率首先从需求说起即:现有某Activity专门用于手机属性设置那么应该如何做呢?
根据已学知识很快一个念头闪过即:Activity+Preference组合前者用于界面构建后者用于设置数据存放其实这是正确的但是这会比较繁琐因为每个设置选项都要建立与其对应的Preference
所以现在有更好的选择了那就是本文的主角:PreferenceActivity
从名字应该可以看出其实Activity与Perference的混合物
还是从需求说起常见属性设定有哪几种方式:
1.CheckBox用于确定/取消某项功能如:是否静音对应于:CheckBoxPreference其在Preference有一个选项与其自动绑定下同
2.ListView用于列出所有选择如:铃声选择列出所有声音供选择使用对应于:ListPreference
3.属性结合用于列出一系列相关属性如:所有与短消息有关的功能对应于:PreferenceScreen该项仅用于界面故与Preference无关
界面其实讨论这个比较鸡肋大家自己试着运行就一目了然了所以觉得还是以步骤为主
鉴于PreferenceActivity使用网络很多故此略过为了给自己备份防止以后用到大致叙述一下
[代码步骤]
1.PreferenceActivity界面比较特别在res/xml/setting.xml
复制代码代码如下:
根据已学知识很快一个念头闪过即:Activity+Preference组合前者用于界面构建后者用于设置数据存放其实这是正确的但是这会比较繁琐因为每个设置选项都要建立与其对应的Preference
所以现在有更好的选择了那就是本文的主角:PreferenceActivity
从名字应该可以看出其实Activity与Perference的混合物
还是从需求说起常见属性设定有哪几种方式:
1.CheckBox用于确定/取消某项功能如:是否静音对应于:CheckBoxPreference其在Preference有一个选项与其自动绑定下同
2.ListView用于列出所有选择如:铃声选择列出所有声音供选择使用对应于:ListPreference
3.属性结合用于列出一系列相关属性如:所有与短消息有关的功能对应于:PreferenceScreen该项仅用于界面故与Preference无关
界面其实讨论这个比较鸡肋大家自己试着运行就一目了然了所以觉得还是以步骤为主
鉴于PreferenceActivity使用网络很多故此略过为了给自己备份防止以后用到大致叙述一下
[代码步骤]
1.PreferenceActivity界面比较特别在res/xml/setting.xml
<?xmlversion="1.0"encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="autoBack"
android:title="自动回复"
android:summaryOn="开启"
android:summaryOff="关闭"
android:defaultValue="true"
/>
<PreferenceCategoryandroid:title="SMS助手">
<CheckBoxPreference
android:key="smsSilence"
android:title="静音"
android:summaryOn="开启"
android:summaryOff="关闭"
android:defaultValue="false"
/>
<PreferenceScreenandroid:title="更多选项">
<CheckBoxPreference
android:key="cb21"
android:title="功能1"
android:summaryOn="开启"
android:summaryOff="关闭"
android:defaultValue="true"
/>
<CheckBoxPreference
android:key="cb22"
android:title="功能2"
android:summaryOn="使用"
android:summaryOff="停用"
android:defaultValue="true"
/>
<ListPreference
android:key="list1"
android:title="androidforum"
android:summary="开发论坛"
android:dialogTitle="请选择论坛"
android:entries="@array/entries_list_preference"
android:entryValues="@array/entriesvalue_list_preference"
/>
<EditTextPreference
android:key="et1"
android:title="EditTextPreferenceSample"
android:summary="点击输入"
android:dialogTitle="输入设置"
android:defaultValue="HelloEditTextPreference"
/>
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategoryandroid:title="其他选项">
<RingtonePreference
android:key="rt1"
android:title="RingtonePreferenceSample"
android:summary="选择铃声"
/>
</PreferenceCategory>
</PreferenceScreen>
2.导入setting.xml
addPreferencesFromResource(R.xml.settings);
emulator运行截图:
点开"更多选项"
具体请大家自己尝试之
3.其实关于PreferenceActivity问题基本结束了但是初次使用会碰到一些坎坷现一一讨论
4.监听设定变化问题普通布局里的监听比较简单先通过findViewById()获得目标View再在其上注册监听器即可
但是PreferenceActivity并没有提供findViewById()也就无法监听那么怎么做呢?
-得到SharedPreferences句柄
sp=PreferenceManager.getDefaultSharedPreferences(this);
-在sp之上注册改变监听器
sp.registerOnSharedPreferenceChangeListener(newOnSharedPreferenceChangeListener(){
@Override
//sharedPreferences:句柄
//key:改变键值
publicvoidonSharedPreferenceChanged(
SharedPreferencessharedPreferences,Stringkey){
//TODOAuto-generatedmethodstub
if(key.equals("autoBack")){
BooleanautoBack=sharedPreferences.getBoolean("autoBack",false);
if(autoBack){
Log.d("TAG","autoBack:true!");
}
else{
Log.d("TAG","autoBack:false!");
}
}
}
});
5.Preference异地使用即:PreferenceActivity在一个应用程序而别处应用程序可能也想改变该数据怎么做呢?
-通过getSharedPreferences()得到SharedPreferences实例
spc=this.getSharedPreferences("com.android.PreferenceActivity.Usage_preferences.xml",MODE_WORLD_READABLE);
-取值
BooleanautoBack=spc.getBoolean("autoBack",false);
-赋值
publicvoidputValue(Stringkey,Booleanvalue){
spe=spc.edit();
spe.putBoolean(key,value);
spe.commit();
}
就这样结束似乎感觉不爽所以决定加点料
-ListPreference使用
<ListPreference
android:key="list1"
android:title="androidforum"
android:summary="开发论坛"
android:dialogTitle="请选择论坛"
android:entries="@array/entries_list_preference"
android:entryValues="@array/entriesvalue_list_preference"
/>
<?xmlversion="1.0"encoding="utf-8"?>
<resources>
<string-arrayname="entries_list_preference">
<item>www.anddev.org</item>
<item>www.eoeandroid.com</item>
<item>developer.android.com</item>
</string-array>
<string-arrayname="entriesvalue_list_preference">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>
</resources>
EditTextPreference使用
<EditTextPreference
android:key="et1"
android:title="EditTextPreferenceSample"
android:summary="点击输入"
android:dialogTitle="输入设置"
android:defaultValue="HelloEditTextPreference"
/>
相关文章
- android scaleanimation动画,【Android动画九章】-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画)…[通俗易懂]
- android 混淆规则作用,Android代码混淆详解
- android退出app代码,Android应用退出代码各种方式
- iphone4装android,iPhone4可安装Android实现双系统启动.pdf
- Android触摸事件_android设置按钮点击事件
- 【Android 应用开发】Android游戏音效实现
- 【Android 应用开发】BluetoothDevice详解
- 【Android 应用开发】BluetoothServerSocket详解
- 【Android 应用开发】自定义View 和 ViewGroup
- 【Android 应用开发】Android 数据存储 之 SQLite数据库详解
- 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)
- 【Android 应用开发】 FastJson 使用详解
- 【Android 应用开发】Android 组件 位置坐标 属性 ( 组件位置属性 | 父容器坐标系坐标 | 窗口坐标系坐标 | 屏幕坐标系坐标 | 触摸坐标 )
- 【Android 应用开发】Android 工程修改包名流程 ( 修改 applicationId | 修改 package | 修改 R 资源引用 | 修改 BuildConfig 引用 )
- Android开发中遇到的问题(三)——eclipse创建android项目无法正常预览布局文件详解手机开发
- 谷歌发Android福利:不装应用就能收听播客或订阅频道内容详解手机开发
- android Universal Image Loader for Android 说明文档 (1)详解手机开发
- Android Studio 导入项目 出现安装Error:Cause: failed to find target with hash string ‘android-23’ 等错误详解手机开发
- Android中的ProgressBar的android:indeterminate详解手机开发
- 并非所有Android应用都能够在Windows 11上运行
- Android笔记之:App应用之发布各广告平台版本的详解
- 为Android应用增加渠道信息自动化不同渠道的打包过程的使用详解
- Android开发笔记之:用Enum(枚举类型)取代整数集的应用详解