• setting-在设置中添加新的选项


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

    具体实现如下

    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);
      }  
    }
  • 相关阅读:
    u
    华为OJ:数字颠倒
    Unity3D &amp; C# 设计模式--23
    Cocos2d-x学习笔记(12)(CCControlSwitch开关、CCControlSlider滑动条、CCControlButtonbutton)
    hdu5299 Circles Game
    asp.net webform中使用async,await实现异步操作
    Restful风格wcf调用4——权限认证
    Restful风格wcf调用3——Stream
    Restful风格wcf调用2——增删改查
    Restful风格wcf调用
  • 原文地址:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_setting_150407094.html
Copyright © 2020-2023  润新知