Android源码--Settings之Preference布局的详解

Android(12)浅析 偏好设置 Preference(一) 安卓12 Preference源码浅析,自定义Preference 阅读详情

最近在研究Android源码Settings应用的时候发现里面使用了大量了的Preference布局,那么这个perference布局有什么特点呢。
Preference翻译为偏好,但理解为首先项更为合适,他可以把值用sharedPreference保存。
<一> Preference布局中常用的标签:
仿Settings语言设置Preference布局
最近在研究Android源码Settings应用的时候发现里面使用了大量了的Preference布局,那么这个perference布局有什么特点呢。
Preference翻译为偏好,但理解为首先项更为合适,他可以把值用sharedPreference保存。
<一> Preference布局中常用的标签:
PreferenceScreen:布局中的根节点,有点类似于LinearLayout,如果PreferenceScreen中嵌套PreferenceScreen,点击嵌套的PreferenceScreen会跳到另一个Screen。
PreferenceCategory:让布局更有层次感,比如图片中的红色字体部分。
<二> 常见的有CheckBoxPreference、EditextPreference、ListPreference等等。
<三> Preference的属性
key:每个preference的唯一标识,类似于view空间的ID,通过这个可以找到这个Preference控件

mListPreference=(ListPreference)findPreference("list");

title:Preference控件的标题,比如“语言”
summary:Preference控件的子标题,比如“中国(简体)”
defaultValue 默认值。例如,CheckBoxPreference 默认值可选“true”,表示默认选中状态; EditTextPreference 默认值写“110”,弹出的edit框中默认值为“110”
enabled 表示该Preference控件是否可用状态
persistent 表示Preference所对应的值是否写入sharedPreference的文件中,true表示写入,false表示不写入
dependency 表示一个Preference(用A表示)的可用状态依赖另外一个Preference(用B表示)。B可用,则A可用;B不可用,则A不可用。写入的值为其他preference的key
<四、Preference监听事件>
这里写图片描述
Preference在activity中继承PreferenceActivity(API 11以后推荐PreferenceFragment ),PreferenceActivity中有一个总要的监听方法
onPreferenceTreeClick( )
两个重要的监听接口:
Preference.OnPreferenceChangeListener:onPreferenceChange( )
Preference.OnPreferenceClickListener: onPreferenceClick( )

那么这三个监听方法的执行顺序和区别又是什么呢?

当你点击Preference控件时首先会执行onPreferenceClick()方法,它的返回值是boolean类型的,如果返回值为:
true,该点击事件被消费掉,将不执行onPreferenceTreeClick( )方法
false,该点击事件没有被消费掉,将继续执行onPreferenceTreeClick( )方法

onPreferenceTreeClick( )的返回值也为Boolean类型,如果为:
true:事件已经被成功消费,不用返回上一层继续执行,比如不会执行Preference里面的Intent跳转。
false:事件没有被消费,需要返回上一层继续执行,比如执行intent跳转。

onPreferenceChange( ) ,当preference控件的value改变时会触发这个监听方法,返回值为true就保存新值到sharedpreference中,返回值为false则不保存新值。

<五、preference布局的添加已经控件的初始化>
这里写图片描述

Android8.0 Settings Preference圆角风格 效果图这里以设置界面里的关于手机界面的UI布局添加圆角风格,在设置中,Preference(首选项)是一种常用的元素。通过分析 Preference 源码发现了默认布局文件为 preference.xml,文件路径位于从源代码中我们分析可以看到对应 Preference 基本属性 icon、title、summary,最外层布局为 LinearLayout,可以通过修改LinearLayout 的 background 属性来实现,因为 Preference 中提供了修改 layoutid 方法。 阅读详情

相关推荐

Android 10.0 Settings源码分析之主界面加载(一)

本篇主要记录AndroidQ Settings源码主界面加载流程,方便后续工作调试其流程。由于篇幅较长,本篇主要记录主界面xml静态加载。 代码路径: packages/app/Settings/ 主界面加载: 从清单文件AndroidManifest.xml中入手: <!-- Alias for launcher activity only, as this belongs to each profile. --> <activity-alias andr

Otaku_627的博客 6726

Android自定义Preference控件实现Settings界面个性化定制

Android提供了许多内置的Preference控件,如CheckBoxPreference、ListPreference和EditTextPreference等,但有时候这些默认的控件无法满足我们的需求,因此我们需要自定义各种Preference控件来满足特定的功能和样式要求。除了SeekBarPreference,我们还可以根据自己的需求自定义其他类型的Preference控件,如SwitchPreference、ColorPreference等。

DevPhantom的博客 507

Android Framework在原生Settings设置中添加界面

Android设置中Preference是构建交互界面的核心组件,用于创建开关、列表选择、文本输入等设置项。常用子类包括SwitchPreferenceCompat、ListPreference和EditTextPreference等。实现步骤包括创建PreferenceFragmentCompat、定义XML布局以及在Activity中加载片段。 实战部分演示了在Android 13设备"关于手机"页面添加"认证信息"选项的方法:先在AndroidManifest.

zmlovelx(帅得不敢出门 程序员群31843264) 828

android8.0 Settings之自定义各种Preference控件

以前使用android.preference包里面的类创建出来的偏好设置界面是没有兼容低版本的,后来发现com.android.support:preference库有对低版本做兼容,在低版本上面也可以有Material Design风格,于是对其作了一番研究。 1、应用的主题需要继承自Theme.AppCompat系列: 2、在build.gradle中添加以下依赖: compile ‘com...

安卓兼职framework和app工程师的博客 2001

Android SettingsPreference的理解以及使用

Android SettingsPreference的理解以及自定义修改Preference

hhbstudy的博客 4241

Android SettingsPreferences)开发

Android的app开发中,很多时候我们的app需要提供用户一个用户体验统一的,友好的setting界面,也就是设置界面。在android系统中,就有一个settings设置的系统应用,专门用户设置系统的一些用户属性。那么这样的setting界面我们怎么开发呢?android为我们提供了一个程序员非常友好的preferences开发包:android.preference。这个开发包中,包含了众

Android Fans 5852

Android8.0 Settings源码 Preference详解

Android 设置是每个App必不可小的东西,看似很简单,但是初学不熟悉的很花时间去研究,特别样式兼容方面,以及有自定义设置的需求,下面是对用法做一个总结 Preference结构 界面结构看下图 界面主要由PrefercenScreen、PreferenceCategory和Preference三个主要部分组成 PrefercenScreen最根的部分; PreferenceCategory是...

安卓兼职framework和app工程师的博客 1270

Android8.0 settings源码Preference的使用以及监听事件分析

Android系统源码中,绝大多数应用程序的UI布局采用了Preference布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局。当然,凡事都有例外,FMRadio应用程序中则使用了View布局结构(可能是该应用程序是marvel公司提供的,如果由google公司做,那可说不准)。归根到底,Preference布局结构和View的布局结构本质...

安卓兼职framework和app工程师的博客 706

学习笔记之Android Settings

Setting作为安卓一个比较重要的系统级应用,为用户提供一些系统项的设置。原生android系统的源码路径:/packages/apps/Settings。但MTK厂商的源码包中对该应用进行了重构其源码路径:/vendor/mediatek/proprietary/packages/apps/MtkSettings。 一、Setting 1、Setting函数入口 android应用程序的入口比较简单,可以直接查看AndroidManifest.xml,里面有配置应用的包名、版本、权限、四大组件等。

qq_27672101的博客 9590

Settings源码分析1

Settings的主Activity实质实现是在SettingsHomepageActivity.java内;Settings的主界面设置item的显示是在fragment上,fragment为TopLevelSettings.java,加载显示的布局为top_level_settings.xml;Settings主界面设置项item的加载显示主要分为两部分,一部分是xml定义的静态加载,xml为top_level_settings.xml;一部分是dashboardCategory来获取动态加载。

peng狗头的博客 2144

Android Settings解析

Android设置应用是Android系统中一个非常重要的系统应用,它允许用户调整和设置系统的各种参数和功能(系统设置/自定义设置/控制应用权限/开发者选项/系统信息等),使用户获得更好的使用体验。同时它一般也是Android系统开发者了解深入的第一个系统级应用,也是用户使用最频繁的系统应用。 本文以Android 13 Settings源码进行分析

八归少年 3739

从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-5.设置(Settings))...

第5章 设置(Settings) 本章不同于通常网络上经常使用的SharedPreference,而是从底层了解Preference。FAQ QQ群213821767 应用程序通常包括允许用户修改应用程序的特性和行为的设置功能。例如,一些应用程序允许用户指定通知是否启用或指定多久使用云同步数据。如果你想要为你的应用程序提供设置,你应该使用AndroidPreference APIs来构建统一...

weixin_34009794的博客 399

Android 10 Settings应用如何自定义Preference

一、创建一个TestPreference.java类,然后继承Preference,TestPreference类的构造函数中通过setLayoutResource()方法来加载布局,然后重写父类onBindViewHolder()方法,然后通过holder中holder.itemView来访问子View,示例见代码 package com.android.settings.system; import java.io.FileWriter; import java.io.IOException; imp

wq892373445的博客 1011

preference android:layout,自定义PreferenceScreen的布局

我的要求注意:我需要支持Android API 15及更高版本。在我的PreferenceFragment中,我正在将PreferenceScreen动态添加到PreferenceCategory。PreferenceScreen as = mgr.createPreferenceScreen(context); as.setTitle(name); myCategory.addPreferenc...

weixin_30118071的博客 1813

Android进阶——Preference详解之初识PreferencePreference系(一)

Preference作为该家族的终极基类,直接继承Object,其他子类Preference直接或者间接继承于Preference。他们的作用就是定义要显示的UI(其实作用类似于普通的Layout布局文件),特殊之处在于定义好了UI之后再在PreferenceActivity里以ListView的形式整体布局,每一个子Preference相当于是一个列表项。

最美不过,心中有梦,身旁有你! 1万+

Android 如何在关于手机界面添加个图片

前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net          雨季o莫忧离:http://blog.csdn.net/luckkof 正文   需要在设置-->关于手机 界面定制一个界面类似下图。即需要在preference

奥特曼 3842

【IDEA】IDEA常用设置Settings/Preference(持续更新)

文章目录前言1 开启鼠标滑轮更改代码字体大小2 显示鼠标悬停提示3 设置自动导包4 显示行号与方法分隔符5 忽略大小写提示(这个超有用~)6 多行显示代码标签页面7 设置字体与大小8 设置文件头信息9 设置文字编码参考资料 前言 本文使用的IDEA版本是2019.2的ultimate版本。不同的版本的设置内容不太一样,以实际情况为准。 如果有的设置无效,建议重启IDEA后,再来查看设置是否生效。 1 开启鼠标滑轮更改代码字体大小 勾选该选项 2 显示鼠标悬停提示 将鼠标放在一个类名或者方法名上

Awt_FuDongLai的博客 7312

android 自定义Preferecne布局

1.PreferenceActivity 介绍 PreferenceActivity 继承ListActivity 它是以一个列表的形式在展现内容,它最主要的特点是添加Preference可以让控件的状态持久化储存,举个例子 比如用户选中checkbox后 退出应用然后在进入应用,这时用户希望看到的是checkbox被选中,所以软件须要记录用户每次操作的过程并且持久储存,在进入应用的时候须要判断...

移动开发记录 358
上一篇: 修改SD卡被移除的notification,获取权限,去除Google应用,隐藏Launcher里的APK
下一篇: Android源码之 Calendar日历 修改<一>
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mrsongs的心情杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值