网站推广策划书 精品,做php网站用什么软件,给我一个网站吧,昆明做网站公司一,概要
Preference作为setting核心框架,笔者对此框架做一个简单的解析,androidx.preference本质是对设置领域提供了一层View封装,以android view本身的策略模式进行二次开发,将常用的一些设置样式封装到不同的Preference中,以达到快速开发设置相关功能。并且,此风格与…一,概要
Preference作为setting核心框架,笔者对此框架做一个简单的解析,androidx.preference本质是对设置领域提供了一层View封装,以android view本身的策略模式进行二次开发,将常用的一些设置样式封装到不同的Preference中,以达到快速开发设置相关功能。并且,此风格与原生setting保持了一致,给用户提供了一致性体验。 以下是该框架类图, 二,入门
1,创建一个空Activity,如下, 2,创建SettingFragment,继承PreferenceFragmentCompat 3,重写onCreatePreferences,方法,此方法在Fragment#onCreate回调,并且通过setPreferenceFromResource解析preference的xml资源。
4,创建prefer_setting.xml,如下,
?xml version="1.0" encoding="utf-8"?
androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"PreferenceCategory app:title="DJI账户"Preferenceapp:key="login_dji_account"app:summary="点击事件"app:title="点我呀" /Preferenceapp:enabled="false"app:key="logout_dji_account"app:title="不可点击" //PreferenceCategoryPreferenceCategoryapp:initialExpandedChildrenCount="0"app:title="Dialog类型组件"EditTextPreferenceapp:enableCopying="true"app:key="rtmp_url_pre"app:summary="请设置"app:title="直播推流地址"app:useSimpleSummaryProvider="true" /ListPreferenceapp:enableCopying="true"app:entries="@array/finishedAction"app:entryValues="@array/finishedAction_values"app:key="uav_finishedAction"app:summary="返航"app:title="任务结束动作"app:useSimpleSummaryProvider="true" /MultiSelectListPreferenceapp:entries="@array/failSafe"app:entryValues="@array/failSafe_values"app:key="multi_select_list"app:summary="悬停"app:title="失控动作" //PreferenceCategoryPreferenceCategory app:title="其他的组件"Preferenceapp:summary="点击可以跳转到百度欸"app:title="跳转Preference"intentandroid:action="android.intent.action.VIEW"android:data="http://www.baidu.com" //PreferenceSwitchPreferenceCompatapp:key="uav_maxFlightRadiusEnabled"app:selectable="true"app:summary="设置无人机最大可飞行半径距离"app:summaryOn="建议关闭此功能,否则将限制设备最大飞行距离"app:title="限远开关" /EditTextPreferenceapp:dependency="uav_maxFlightRadiusEnabled"app:key="uav_maxFlightRadius"app:summary="2000"app:title="限远(米)"app:useSimpleSummaryProvider="true" /Preferenceapp:icon="@mipmap/ic_launcher"app:key="icon"app:summary="可以带Icon的Preference"app:title="图标" /Preferenceapp:key="single_line_title"app:singleLineTitle="true"app:summary="但是下面的summary就不行了,它依然还是可以换行的,毕竟是注释信息嘛"app:title="这个超级长,并且他不会换行,自带省略号的Preference" /DropDownPreferenceapp:entries="@array/finishedAction"app:entryValues="@array/finishedAction_values"app:key="dropdown"app:title="点我!点我!点我!"app:useSimpleSummaryProvider="true" /SeekBarPreferenceapp:defaultValue="20"app:key="seekbar"app:title="基本飞行速度(m/s)" //PreferenceCategory
/androidx.preference.PreferenceScreen
效果如下图, 三,深度解析
1,PreferenceFragmentCompat
笔者暂且从入口PreferenceFragmentCompat#onCreate讲起,如下 首先,创建一个PreferenceManager,关于此类作用见下文。随后,调用onCreatePreferences方法,这是一个abstract方法,子类必须实现,主要来加载xml文件,解析view-tree,笔者跟进。 跟进setPreferenceFomResource, 从xml文件中膨胀出PreferenceScreen,可知,PreferenceScre