使用Preference构造设置界面

以前都是自己写的应用设置界面,但是总觉得有些丑,然后又有很多数据要在SharePreference中存取,相对的麻烦,然后很久之前也在Android Studio中看见过SettingActivity的模板,他的效果和原生安卓是一致的,那就从模板入手学一下怎么弄一个自动保存的设置界面。

PreferenceActivity

模板活动中有这个方法,看起来像是从xml中加载了头进来

public void onBuildHeaders(List
target) { loadHeadersFromResource(R.xml.pref_headers, target); }

R.xml.pref_headers.xml:



    

    

嗯,这就是活动中显示的三个设置选项,那么就是说每一个header对应一个选项。

header中用到的一些属性:

  • android:fragment 击时要跳转的碎片
  • android:icon 显示在左边的图标

  • android:title 对应的标题

  • android:summary 副标题

header的主要作用就是分类,太多的设置项聚集在一起会眼花缭乱。

PreferenceFragment

那上面那些指定的碎片又是什么东西,进去看一看:

class GeneralPreferenceFragment extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
          //有同样引入了一个xml
            addPreferencesFromResource(R.xml.pref_general);
         //...
        }
    }

R.xml.pref_general.xml



    

    
    
    

    
    
    



终于看见了文章的主角Preference,但是貌似有很多种Preference,这些都是他的子类,有着不同的功能

Preference

这是和sharePreference一起协作的类,他保存着一个键值对,全职可视化管理着这个键值对,通常这个键值对就是应用的一些配置,下面是一些常用的属性

  • title 标题

  • summary 副标题,就是显示时第二行小字

  • key 键值对的键,和存入SharePreference时的键是一致的

  • defaultValue 默认值,就是应用该选项的默认配置

  • dependency 该选项依赖于某个选项,就比如音量选项依赖于是否静音的选项,当用户选择静音时,音量选项变灰色不可用

  • enabled 是否可用,不可用为灰色

  • fragment 点击时跳转到某个碎片

  • icon 对应的图标

其中跳转页面不一定是碎片,也可以是指定的活动,这就要通过intent标签来实现了。

其他Preference
  • CheckBoxPreference 带复选框的设置项

  • ListPreference 有列表视图的设置项

  • EditTextPreference 有编辑框的设置项

  • SwitchPreference 带开关的设置项

  • MultiSelectListPreference 多项选择设置项

  • PreferenceCategory 可以把设置项分组

  • PreferenceScreen 被这个标签保住的Preference会单屏显示

自定义Preference

不说了,这里说的非常详细

你可能感兴趣的:(使用Preference构造设置界面)