Android settings中SwitchPreference的简单处理
2016-07-19 10:29
656 查看
在settings(设置)中使用了大量的SwitchPreference,这是一个开关,用户通过开关进行系统设置。
SwitchPreference在settings中是这样布局的:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/display_settings" xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<PreferenceCategory
android:key="display_system"
android:title="@string/ali_display_system">
<Preference
android:key="ali_lock_screen_more"
android:title="@string/ali_lock_screen_settings_more_tile" >
<intent
android:action="android.intent.action.MAIN"
android:targetClass="com.android.keyguard.ConfigActivity"
android:targetPackage="com.android.keyguard" />
</Preference>
<SwitchPreference
android:key="mistake_touch_mode_key"
android:summary="@string/mistake_touch_mode_setting_summary"
android:title="@string/mistake_touch_mode_setting" />
</PreferenceCategory>
</PreferenceScreen>
PreferenceCategory可以放入一些Preference,SwitchPreference,形成具有条理性的布局。本次以mistake_touch_mode_key为例。
接下来自然是初始化了:
SwitchPreference的默认值存在“sys.mistaketouch.switch”中,=0为开关关闭。
其状态变化的处理在onPreferenceChange方法中:
至于开关的变化要引起什么操作,只要判断sys.mistaketouch.switch的值从而进行处理即可。
应用程序间通过 ContentResolver来获取分享数据。
SwitchPreference在settings中是这样布局的:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/display_settings" xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<PreferenceCategory
android:key="display_system"
android:title="@string/ali_display_system">
<Preference
android:key="ali_lock_screen_more"
android:title="@string/ali_lock_screen_settings_more_tile" >
<intent
android:action="android.intent.action.MAIN"
android:targetClass="com.android.keyguard.ConfigActivity"
android:targetPackage="com.android.keyguard" />
</Preference>
<SwitchPreference
android:key="mistake_touch_mode_key"
android:summary="@string/mistake_touch_mode_setting_summary"
android:title="@string/mistake_touch_mode_setting" />
</PreferenceCategory>
</PreferenceScreen>
PreferenceCategory可以放入一些Preference,SwitchPreference,形成具有条理性的布局。本次以mistake_touch_mode_key为例。
接下来自然是初始化了:
private SwitchPreference mMistakeTouchPreference; private static final String MISTAKE_TOUCH_MODE_KEY = "mistake_touch_mode_key";
private void initMistakeTouchPreference() { mMistakeTouchPreference = (SwitchPreference)findPreference(MISTAKE_TOUCH_MODE_KEY); if(REMOVE_MISTAKETOUCH ){ //getPreferenceScreen().removePreference(mMistakeTouchPreference); ((PreferenceCategory)findPreference(KEY_DISPLAY_SYSTEM)).removePreference(mMistakeTouchPreference);//屏蔽此开关 return; } int mistake_touch_mode_on = Settings.System.getInt(AliDisplaySettings.this.getContentResolver(),"sys.mistaketouch.switch",0); mMistakeTouchPreference.setChecked(mistake_touch_mode_on == 1); mMistakeTouchPreference.setOnPreferenceChangeListener(this); }
SwitchPreference的默认值存在“sys.mistaketouch.switch”中,=0为开关关闭。
其状态变化的处理在onPreferenceChange方法中:
public boolean onPreferenceChange(Preference preference, Object objValue) { final String key = preference.getKey(); if (MISTAKE_TOUCH_MODE_KEY.equals(key)){ if (mMistakeTouchPreference.isChecked() != (Boolean)objValue) { AliUserTrackUtils.click("AliDisplaySettings", preference.getKey(), (Boolean)objValue); boolean value = (Boolean)(objValue); mMistakeTouchPreference.setChecked(value); Settings.System.putInt(AliDisplaySettings.this.getContentResolver(), "sys.mistaketouch.switch", value? 1:0); } } return true; }
至于开关的变化要引起什么操作,只要判断sys.mistaketouch.switch的值从而进行处理即可。
应用程序间通过 ContentResolver来获取分享数据。
相关文章推荐
- Android内存泄漏 ——检测、解决和避免
- android之AlarmManager 全局定时器
- android黑科技——完美解决界面逻辑的数据框架DataBinding(最新)的使用(二)
- Android绘图那些事儿(上)
- 一分钟教会你如何在Android Studio中使用Gradle打包Jar
- Android概览屏幕基础之添加任务和删除任务
- Android Studio若干小问题
- android ExpandableListView三级菜单的使用
- android 的自我学习
- Android学习笔记031之Fragment
- android.content.res.Resources$NotFoundException: Unable to find resource ID 0#0xffffffff
- Android自定义View的实现方法,带你一步步深入了解View(四)
- Android视图状态及重绘流程分析,带你一步步深入了解View(三)
- 透明色的16进制
- Android视图绘制流程完全解析,带你一步步深入了解View(二)
- android 实现Activity的右滑返回效果
- AndroidTextView在xml初始化的问题
- Android与js交互的设置
- 用textView 画圆 更换颜色 动态添加到布局里面
- Android好用且常用的插件及工具