如下图的“通知栏调出方式”

具体实现如下

1.在

res/xml/settings_headers.xml

文件中添加如下内容

<preference-headers
xmlns:android="http://schemas.android.com/apk/res/android">
<header
android:id="@+id/quick_pulldown"
android:fragment="com.android.settings.QuickPullDown"
android:title="@string/quick_pulldown"
android:icon="@drawable/ic_quick_pulldown" />
</preference-headers>

2.关联的fragment类如下

public class QuickPullDown extends SettingsPreferenceFragment implements
OnPreferenceClickListener { private Context mContext; private AudioProfilePreference mOffPressPref;
private AudioProfilePreference mRightPressPref;
private AudioProfilePreference mLeftPressPref;
private static final int QS_QUICK_PULLDOWN_DEFAULT_VALUE = 0;
private static final String OFF = "off";
private static final String RIGHT = "right";
private static final String LEFT = "left"; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = getActivity();
addPreferencesFromResource(R.xml.quick_pulldown); mOffPressPref = (AudioProfilePreference) findPreference(OFF);
mRightPressPref = (AudioProfilePreference) findPreference(RIGHT);
mLeftPressPref = (AudioProfilePreference) findPreference(LEFT);
mOffPressPref.isShowDetailsView = false;
mRightPressPref.isShowDetailsView = false;
mLeftPressPref.isShowDetailsView = false;
mOffPressPref.setOnPreferenceClickListener(this);
mRightPressPref.setOnPreferenceClickListener(this);
mLeftPressPref.setOnPreferenceClickListener(this);
refreshPressState();
} @Override
public void onResume() {
super.onResume();
getListView().setDivider(null);
getListView().setBackgroundResource(R.drawable.funui_background);
getListView().setSelector(android.R.color.transparent);
new BackgroundChooser().justDoIt(getPreferenceScreen());
} @Override
public boolean onPreferenceClick(Preference preference) {
if (preference instanceof AudioProfilePreference) {
if (preference == mOffPressPref) {
Settings.System.putInt(mContext.getContentResolver(), QS_QUICK_PULLDOWN, 0);
} else if (preference == mRightPressPref) {
Settings.System.putInt(mContext.getContentResolver(), QS_QUICK_PULLDOWN, 1);
} else if (preference == mLeftPressPref) {
Settings.System.putInt(mContext.getContentResolver(), QS_QUICK_PULLDOWN, 2);
}
refreshPressState();
}
return true;
} public void refreshPressState() {
int value = Settings.System.getInt(
getContentResolver(), QS_QUICK_PULLDOWN, QS_QUICK_PULLDOWN_DEFAULT_VALUE); mOffPressPref.setRadioButtonClickable(false);
mRightPressPref.setRadioButtonClickable(false);
mLeftPressPref.setRadioButtonClickable(false);
switch (value) {
case 0:
mOffPressPref.setChecked();
break;
case 1:
mRightPressPref.setChecked();
break;
case 2:
mLeftPressPref.setChecked();
break;
default:
break;
}
}
}

3.这个类中用到的布局文件如下

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <com.android.settings.FunuiPreferenceCategory
android:key="quick_pulldown_setting"
android:persistent="false"
android:title="@string/quick_pulldown"> <com.mediatek.audioprofile.AudioProfilePreference
android:key="off"
android:layout="@layout/funui_switch_preference_full"
android:title="@string/quick_pulldown_off"
android:summary="@string/quick_pulldown_off_describe"/> <com.mediatek.audioprofile.AudioProfilePreference
android:key="right"
android:layout="@layout/funui_switch_preference_full"
android:title="@string/quick_pulldown_right"
android:summary="@string/quick_pulldown_right_describe"/> <com.mediatek.audioprofile.AudioProfilePreference
android:key="left"
android:layout="@layout/funui_switch_preference_full"
android:title="@string/quick_pulldown_left"
android:summary="@string/quick_pulldown_left_describe"/>
</com.android.settings.FunuiPreferenceCategory> </PreferenceScreen>

这些其实就是setting这个模块的基本实现框架了

如何设定它的显示跟隐藏呢,主要是在这个

src/com/android/settings/Settings.java

类中实现的,代码如下

public void updateHeaderList(List<Header> target) {

  if (id == R.id.quick_pulldown) {
target.remove(header);
}
}

最新文章

  1. Windows Server 2008 R2 添加且制成“NFS服务器”角色后与Unix客户端匿名访问常见问题
  2. web前端之HTML的大框架(body元素与frameset元素)
  3. 在input中实现点点点与当鼠标移上去时显示剩余的字
  4. hdu1212(大数取模)
  5. Ubuntu16.04安装配置Eclipse 以及opencv的使用
  6. /Users/alamps/AndroidStudioProjects/Demo10ScrollView
  7. XML 解析 -- IE ,Chrome
  8. 越狱Season 1-Episode 20: Tonight
  9. grails的插件
  10. 04_过滤器Filter_04_Filter生命周期
  11. win7 32/64bit VS2010 OpenCV 2.4.9 环境配置
  12. .NetCore上传多文件的几种示例
  13. wordcloud2.js
  14. 批处理脚本+adb命令
  15. Zookeeper-watcher机制源码分析(二)
  16. caffe中的卷积
  17. 51nod 1667 概率好题
  18. 机器学习算法整理(一)线性回归与梯度下降 python实现
  19. 基于visual studio 2017 以及cubemx 搭建stm32的开发环境(1)
  20. 【IdentityServer4文档】- 打包和构建

热门文章

  1. LINQ查询基础
  2. mybatis :与Spring MVC 的集成
  3. 分析一下jquery中的ajax操作
  4. 联想 Thinkserver TS250服务器RAID1 重建测试
  5. DENON AVR-X510BT 功放设置记录
  6. vue.js 第一课:实例化vue
  7. HDU——T 1506 Largest Rectangle in a Histogram|| POJ——T 2559 Largest Rectangle in a Histogram
  8. Oracle-02-数据库概述
  9. 知名游戏开发者称 C++ 是一种非常糟糕、可怕的语言(C++不是一门可怕的语言,可怕的是一群没有耐心的程序员来使用C++这门语言)
  10. 机器学习Python实现AdaBoost