Android Preference 设置看图说话之基础篇(5分钟掌握)

[TOC]

前言

自己独立开发过了比较多的app,发现关于设置的UI和相关的处理自己写不旦增加类开发工作量,而且常常会使整个代码层次和逻辑会变的相当混乱,让人头痛,在不考虑自己花时间弄一个设置管理类管理好设置代码,及自己处理各种UI控件的前提下,使用官方提供的Preference是最优也是最高效的选择;

Android Preference 提供的控件

这里只列举常用的support.v7,其他的也大同小异
引入方式,gradle 下配置

com.android.support:preference-v7:27.1.1
Android Preference 设置看图说话之基础篇(5分钟掌握)_第1张图片
image

官方总结-科学上网, 使用的时候查询对应属性设置

↳ android.support.v7.preference.Preference
↳ Known Direct Subclasses
DialogPreference,PreferenceGroup,SeekBarPreference,TwoStatePreference
Known Indirect Subclasses
CheckBoxPreference,DropDownPreference,EditTextPreference,ListPreference, MultiSelectListPreference,PreferenceCategory,PreferenceScreen, SwitchPreference, SwitchPreferenceCompat

Xml案例(For example:):



    
    

Java 案例:

public class SettingsActivity extends PreferenceActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }
}
public class SettingsActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Display the fragment as the main content.
        getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new SettingsFragment())
                .commit();
    }
}

不同版本大致区别

  • v14 Preference Support Library com.android.support:preference-v14:27.1.1
    增加了 PreferenceFragment.OnPreferenceStartFragmentCallback 和PreferenceFragment.OnPreferenceStartScreenCallback, 更新了一些类, 如:`MultiSelectListPreference and PreferenceFragment
  • v17 Preference 主要是增加了对TV的支持;

具体流程

Android Preference 设置看图说话之基础篇(5分钟掌握)_第2张图片
image

注意: findPreference/onPreferenceTreeClick 等方法在android.preference.PreferenceActivity Api16 (4.1) 中被弃用,在PreferenceFragmentCompat中能正常使用,故官方推荐使用PreferenceFragmentCompat;

新建xml

使用组(Group)

案例:


    
        
        
        
    
    ...

Android Preference 设置看图说话之基础篇(5分钟掌握)_第3张图片
效果如图

使用子屏幕(subscreens)

案例代码:


    
    
        
        
        
            ...
        
        
        ...
    
    ...

Android Preference 设置看图说话之基础篇(5分钟掌握)_第4张图片
效果如图

请注意:上面的设置已经够日常使用

处理

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String syncConnPref = sharedPref.getString(SettingsActivity.KEY_PREF_SYNC_CONN, "");

监听

  • findPreference里面的参数就是我们使用android:key所定义
  • onPreferenceTreeClick Prefs tree点击时调用
    注册方式:
@Override
protected void onResume() {
    super.onResume();
    getPreferenceScreen().getSharedPreferences()
            .registerOnSharedPreferenceChangeListener(this);
}

@Override
protected void onPause() {
    super.onPause();
    getPreferenceScreen().getSharedPreferences()
            .unregisterOnSharedPreferenceChangeListener(this);
}

设置监听方式:

SharedPreferences.OnSharedPreferenceChangeListener listener =
    new SharedPreferences.OnSharedPreferenceChangeListener() {
  public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
    // listener implementation
  }
};
prefs.registerOnSharedPreferenceChangeListener(listener);

使用小案例

还原初始设置

PreferenceManager.setDefaultValues(Context, R.xml.advanced_preferences, false);
  • false : 首次调用生效;(true 每次调用都生效)

面包原材料

  • Develop Guide Settings 【主要.科学上网】
  • Android Preference 设置全攻略 其实看这个也可以

你可能感兴趣的:(Android Preference 设置看图说话之基础篇(5分钟掌握))