Android settings中SwitchPreference的简单处理
2016-01-23 12:07
483 查看
在settings(设置)中使用了大量的SwitchPreference,这是一个开关,用户通过开关进行系统设置。
SwitchPreference在settings中是这样布局的:
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自定义dialog简单实现方法
- 【同行说技术】Android从小白到大神必读资料汇总(二)
- 什么时候使用 android:configChanges="keyboardHidden|orientation"
- Android闪屏效果实现方法
- Android系统之路(初识MTK) ------ (详细精华)添加客供系统壁纸去除系统动态壁纸/Camera默认fine/remove android beam
- Android用户界面基础之CheckBox(复选按钮)、RadioButton(单选按钮)学习
- Android DigitalClock组件用法实例
- android高级框架xUtils之ViewUtils
- android gridview布局,实现长按某一个,所有项都显示删除的图标
- Android 用Canvas 画几何图形,画出小黄人
- Android AnalogClock简单使用方法实例
- Android ViewFlipper用法实例分析
- Android的用户界面基础之View的学习
- 聊一聊Android 6.0的运行时权限
- Android基本概念总结
- Android用户界面基础之TextView控件,EditText控件,Button控件的学习
- Android使用系统签名以及安装
- Android用户界面基础之Chronometer控件学习
- android 常用工具库 备份
- 获取工程路径