我最近接到一个新需求,为 App 新增一个设置页面。该页面布局算是比较复杂,自己实现起来既略显繁琐又浪费时间。于是,自己设想是否有系统 API 来快速实现该功能。最后我在 Google Android 官网文档发现 PreferenceActivity 这神奇的类。
1
介绍
PreferenceActivity 简单理解为是一个自带 SharedPreferences 的 Activity,用于做设置界面的类。
由于系统版本不同的原因,我们需要做好兼容性工作。
1)如果系统版本低于 Android 3.0 (API 级别 10),需要使用 PreferenceActivity。
2)如果系统版本高于 Android 3.0 ,建议使用 Activity 和 PreferenceFragment 来搭配显示界面。
2
Preference 分类
3
扩展 ActivityPreference 类
一般的 Activity 通过调用 setContentView 来加载布局视图,而 PreferenceActivity 则例外。
它使用 addPreferencesFromResource() 以将在 XML 文件中声明的首选项添加到 Activity。
4
使用 PreferenceFragment
同样在 rex/xml 中新建 XML 文件
SettingsActivity 集成普通的 Activity 即可,其主要工作就是加载启动事务来加载 Fragment。
那么 SettingsFragment 就需要通过加载 XML 文件来显示视图。
5
自定义 Preference 布局
通过 Preference 的属性 android:layout = "@layout/preference_layout" 设置自定义的layout文件
6
支持标题栏
细心的你也许会发现怎么设置标题栏呢?难道要在 Activity 布局文件中设置?有没有更加简便的办法呢?答案是肯定的。
SettingActivity 需要集成 PreferenceActivity。然后在 SettingActivity 中利用 AppCompatDelegate (代理)来操作。
7
监听变化
当你在界面改变选项的时候,系统会自动保存你的修改的。但是你需要处理选项被修改之后的逻辑,你需要设置一个 OnSharedPreferenceChangeListener 来监听变化。
作者:猴哥,公众号:极客猴。爱好读书,喜欢钻研技术,梦想成为文艺青年的IT Boy。