持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
接下来会对
Preference Library
官方库进行一个系列讲解,本篇文章是Preference Library
系列的第一篇,主要是介绍Preference Library
是个啥以及其基本用法。
文章所用到的依赖如下:
implementation("androidx.preference:preference-ktx:1.2.0")
Preference Library
是干什么用的?
先看一段官方的解释:
简而言之,就是为了快速实现一个设置界面,并且默认通过SharedPreference
将设置相关的配置数据保存到本地文件中。
比如Android Studio中自带的AVD模拟器,设置中的开发人员选项
界面就是通过Preference Library
实现的:
Preference
是Preference Library
的基础构建元素,通过各种各样的Preference
构成一个个设置项来显示在设置界面。这个设置项的定义可以在xml中定义,也可以通过代码动态创建添加。
本文主要是通过在xml中构建Preference
的层次结构,来快速实现简单的设置界面。
Preference Library
基本使用
首先创建一个settings.xml
文件,然后通过SwitchPreferenceCompat
创建一个开关样式的设置项:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<SwitchPreferenceCompat
app:icon="@drawable/ic_launcher_background"
app:summary="显示一些内容"
app:key="display"
app:title="显示" />
</PreferenceScreen>
这里说下SwitchPreferenceCompat
几个基本属性(其他的各种Preference
也会有相同的属性):
-
app:key
:设置项的标识,同时也是设置项配置写入到SharedPreference
中的key
值 -
app:title
: 设置项标题 -
app:summary
:设置项内容描述 -
app:icon
:设置项图标
我们可以看下预览界面的显示效果:
接下来我们看下如何将该xml
配应用到显示界面上。
创建一个SettingsFragment
,并继承Preference Library
提供的PreferenceFragmentCompat
,重写onCreatePreferences()
方法:
class SettingsFragment: PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.settings, rootKey)
}
}
调用setPreferencesFromResource()
方法将上面定义的settings.xml
设置进去。
接下来添加Fragment
到Activity
中即可:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBinding = ActivityDialogBinding.inflate(layoutInflater)
setContentView(mBinding.root)
supportFragmentManager.commit {
replace(mBinding.contentFl, SettingsFragment())
}
}
commit()
是官方core-ktx
提供的扩展库,使得我们不用关心commit()
操作:
最终我们看下在界面中的显示效果:
其他Preference
瞥一眼
上面我们只是单独介绍了一个SwitchPreferenceCompat
,接下来我们看一看其他的Preference
设置项:
EditTextPreference
<EditTextPreference
app:summary="请输入一些内容吧"
app:key="edit"
app:title="编辑内容" />
点击这个设置项弹出编辑弹窗:
2.CheckBoxPreference
显示一个单选按钮:
<CheckBoxPreference
app:key="select"
app:summary="请选择一些内容"
app:title="选择" />
对应下面界面:
SeekBarPreference
显示一个进度条:
<SeekBarPreference
app:key="seekbar"
app:summary="显示进度条"
app:title="进度条" />
对应下面显示内容:
ListPreference
显示列表:
<ListPreference
app:entryValues="@array/list"
app:entries="@array/list"
app:key="list"
app:summary="下面是一个列表"
app:title="列表"/>
通过app:entryValues
和app:entries
引用列表数据:
<string-array name="list">
<item>列表第一条内容</item>
<item>列表第二条内容</item>
<item>列表第三条内容</item>
<item>列表第四条内容</item>
</string-array>
看下显示效果:
点这个设置项,会弹出下面弹窗:
上面主要是介绍几个常用的Preference
组件,其实还有其他的几个Preference
组件没有介绍,感兴趣的可以自行实践。
总结
本篇文章主要是介绍Preference Library
是干什么用的,以及其基本用法,最终补充了一些常见的Preference
组件的使用,希望能对你所有帮助。
Preference Library
还很多其他的用法,接下来的文章我们会一步步的展开讲解,最终通过实践,完成一个AVD模拟器中开发人员选项的界面。