Android settings中SwitchPreference的简单处理
来源:互联网 发布:qq飞车s车数据 编辑:程序博客网 时间:2024/05/17 04:28
在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为例。
接下来自然是初始化了:
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来获取分享数据。
0 0
- Android settings中SwitchPreference的简单处理
- Android settings中SwitchPreference的简单处理
- android开发中Settings结构简单分析
- setting中switchpreference问题
- Android Settings 系统设置中 PreferenceActivity点击Header是如何处理的?
- Android中Settings.System的使用
- android.provider.Settings中常见的Action
- Android中Settings.System的使用
- Android中Settings.System的使用
- Android M中Settings的启动流程
- Android中简单的图形处理
- ios开发中 应用设置的简单开发 (Settings.bundle)
- ios开发中 应用设置的简单开发 (Settings.bundle)
- [Android L or M ]解除SwitchPreference与Preference的绑定事件
- android4.1上去除SwitchPreference中Switch控件与Preference的绑定响应
- android settings的常见问题
- 自定义SwitchPreference时遇到的问题
- SwitchPreference遇到的坑及解决
- 【Hibernate】Hibernate中的数据库方言(Dialect)
- 优先队列的用法
- swift手记-3
- Ubuntu与Win7双系统安装黑屏
- Android自定义控件简介一
- Android settings中SwitchPreference的简单处理
- ASPxGridView控件常用示例二:添加和初始化新行
- 获取版本号
- Object-C--->Swift之(七)函数重载
- ZOJ1078-Palindrom Numbers
- cvMorphologyEx() 多种图像形态学
- View测量模式
- FragmentTabHost的简单使用
- 【Hibernate】hbm2ddl.auto 参数的配置