会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 Android-换肤功能实现!
当前位置:首页 > 娱乐 > Android-换肤功能实现 正文

Android-换肤功能实现

时间:2024-05-08 23:43:34 来源:不龟手药网 作者:娱乐 阅读:877次

Android-换肤功能实现

Android换肤功能已不是肤功什么新鲜事了,市面上有很多第三方的换肤库和实现方案。 之所以选择腾讯的肤功QMUI库来演示APP的换肤功能,主要原因: 1、换肤功能的肤功实现过程较简单、容易理解; 2、肤功能轻松适配Android 10 提供的肤功Dark Mode(深色模式) ; 3、还能白嫖QMUI的肤功各种组件、效果(这才是肤功重要的,😁哈哈~);

1.1、新建工程

通过AndroidStudio新建一个空工程(新建工程的肤功过程,略),并添加QMUI依赖:

implementation ‘com.qmuiteam:qmui:2.0.0-alpha10’

1.2、定义 attr 以及其实现 style(重点)

这一步需要我们与设计师协作,整理一套颜色、肤功背景资源等供 App 使用。肤功之后我们在 xml 里以 attr 的肤功形式给它命名,本工程案例:

src/main/res/values/styles.xml:

src/main/res/values/colors.xml:

style 是支持继承的, 以上述为例,app_skin_1 继承自 AppTheme, 在通过 attr 寻找其值时,如果在 app_skin_1 没找到,那么它就会去 AppTheme 寻找。因此我们可以把 App 的肤功 theme 作为我们的一个 skin, 其它 skin 都继承自这个 skin。

1.3 自定义换肤管理类

APP的肤功不同皮肤、颜色已定义好,我们需要定义一个类,与QMUI对接,用于管理这些皮肤,代码功能包含:皮肤的肤功加载、切换等操作。肤功

src/main/java/com/qxc/testandroid/QDSkinManager.java:

1.4、自定义皮肤保存类

当我们切换皮肤后,需要将切换后的皮肤信息保存起来,当下次启动APP时,直接加载我们切换后的皮肤。

src/main/java/com/qxc/testandroid/QDPreferenceManager.java:

1.5、APP加载QDSkinManager并适配深色模式

该工作仅需做一次即可,建议:自定义Application,实现该功能。

src/main/java/com/qxc/testandroid/QDApplication.java:

别忘了在AndroidManifest.xml中指定一下我们自定义的Application类:

1.6、开始编写Activity

基本工作已准备完毕,接下来我们实现定义的换肤效果。 修改MainActivity的布局文件,编写我们的UI布局:

src/main/res/layout/activity_main.xml:

注意:要想实现换肤,我们设置控件颜色时,要使用QMUI提供的换肤属性:

QMUI官网已提供了以下换肤属性,供我们使用,能满足常规的开发需要,如下图所示:

下面,我们来编写Activity代码。 在 Activity中,我们需要对QMUISkinManager进行注册,该Activity才能享用换肤功能(注意:在实际开发中,如果APP所有的页面都要支持换肤,那么我们尽量将QMUISkinManager的注册写在BaseActivity中)。

有两种方案,实现注册:

方案1:

我们可以Activity类继承 QMUIFragmentActivity 或者 QMUIActivity ,从而默认注入了 QMUISkinManager

方案2(为了让大家明白如何注册,我们选择这种方案。不用担心,其实很简单):

我们自己实现QMUISkinManager的注册、取消注册

至此,编码结束了。

QMUI 换肤提供的 API:

  • QMUISkinManager: 存储肤色配置,并且派发当前肤色给它管理的Activity、Fragment、Dialog、PopupWindow。它通过 QMUISkinManager.of(name, context) 获取,是可以多实例的。因而一个 App 可以在不同场景执行不同的换肤管理, 例如阅读产品阅读器的换肤和其它业务模块 uiMode 切换的区分管理。
  • QMUISkinValueBuilder: 用于构建一个 View 实例的换肤配置(textColor、background、border、separator等)
  • QMUISkinHelper: 一些辅助工具方法,最常用的为 QMUISkinHelper.setSkinValue(View, QMUISkinValueBuilder),将 QMUISkinValueBuilder 的配置应用到一个 View 实例。如果使用 kotlin 语言,可以通过 View.skin { … } 来配置 View 实例。
  • QMUISkinLayoutInflaterFactory: 用于支持 xml 换肤配置项解析。
  • IQMUISkinDispatchInterceptor: View 可以通过实现它,来拦截 skin 更改的派发。
  • IQMUISkinHandlerView: View 可以通过实现它,来完全自定义不同 skin 的处理。
  • IQMUISkinDefaultAttrProvider: View 可以通过实现它, 提供 View 默认的默认换肤配置,从组件层面提供换肤支持。
文末

您的点赞收藏就是对我最大的鼓励! 欢迎关注我的简书,分享Android干货,交流Android技术。 对文章有何见解,或者有何技术问题,欢迎在评论区一起留言讨论!

本文转自 https://juejin.cn/post/7038482977914880008,如有侵权,请联系删除。

(责任编辑:百科)

相关内容
  • 魔兽世界乌龟服硬核模式盗贼升级剑锤武器选择、天赋和新技能介绍
  • 《地下城与勇士DNF》遗忘之石碎块介绍
  • 洛克王国精灵王回归2021
  • 魔兽6.2上线以来 国服时光徽章价格持续下滑
  • 收到女儿母亲节礼物怎么发朋友圈
  • 雅思口语考试,你碰到过哪些奇葩的考官?
  • 造梦西游3饕餮掉落什么东西 造梦西游3饕餮几个形态
  • 2023 年双 11 有哪些 2500-4000 元价位的手机推荐?
推荐内容
  • 3dmax怎么制作一个逼真的真皮沙发模型?
  • 「咸鱼之王」游戏全方面攻略
  • 王者主宰的刷新时间间隔是多少-主宰的刷新时间间隔是多久
  • 造梦3法宝五行有什么作用?
  • WILEY 人物访谈——深圳大学周晔研究员
  • 一刀传世第三个职业怎么选?三大角色解析教你合理职业选择