这是一个Android换肤的库,代码量极少,支持换肤的情况还比较多,提供了以下功能:

无需重启,一键换肤效率高

支持App内多套皮肤换肤

支持插件式动态换肤

支持Activity,Fragment,以及使用LayoutInflater创建的View换肤

支持手动创建的View换肤

支持RecyclerView换肤

支持自定义View换肤

才写好不久,要是有什么问题或建议希望不吝赐教,提issues或者这里评论都可以~要是有帮助希望star一下~

使用

依赖

1、在根目录的build.gradle中加入如下配置

2、在要是用的module中增加如下引用

资源定义

换肤,就像字面意思换的大多无非就是颜色,颜色里又可以包含文字背景颜色和不同颜色图片资源,当然除此之外还可以换字体等。本库支持的资源类型包含:

color

drawable和mipmap

string

其中字体资源目前只能放在assets目录中,路径需要在string中定义下文中详细介绍。

其实app内和插件皮肤包中的资源定义方式都是一致的,只是位置不一样,插件皮肤包需要先加载,app内的可以直接使用而已。

本库,定义不同皮肤的标准是通过后缀,例如默认颜色资源colorAccent,皮肤颜色资源就需要使用原资源名字加后缀,以后缀_light为例,light皮肤就是colorAccent_light,也就是资源名字对应为:

color资源

默认:colorAccent

light皮肤:colorAccent_light

drawable资源

默认:img_avatar

light皮肤:img_avatar_light

string资源

默认:custom_typeface

light皮肤:custom_typeface_light

其中字体的设置比较特殊,建议在app的style中加入csh_typeface属性进行全局设置:

这里的custom_typeface资源就是指字体在assets目录中的路径,没有填写目录时表示使用默认字体。

皮肤资源的定义:在默认资源后加后缀定义某类皮肤,例如各类xml写的drawable也是一样,当然xml里边写的资源就需要自己手动换了。

需要注意的是,如果皮肤里没有找到对应资源就会使用默认资源

换肤

资源的定义都完成了,那么换肤的工作就基本完成了百分之99。剩下的功能就是简单的三步:

在需要换肤的Activity继承ChangeSkinActivity,

重写isChangeSkin方法并返回true即可,默认是不开启换肤的

需要换肤时,调用父类的dynamicSkin方法

dynamicSkin该方法有两个重载方法:

protected void dynamicSkin(String skinSuffix) 该方法是换app内的皮肤的,传入皮肤后缀就可以了。

protected void dynamicSkin(String skinPath, String skinSuffix) 该方法是插件式动态换肤,第一个参数就是皮肤包的具体路径,第二个就是皮肤后缀。

当然还原成默认皮肤可以直接调用defaultSkin方法就能实现默认皮换替换。

换肤:dynamicSkin

还原:defaultSkin

补充说明:

View只要是通过LayoutInflater.from(context).inflate()来创建的,其中context是继承自ChangeSkinActivity的activity,当然这些view的文字背景或者图片资源是通过引用资源的方式设置的,那么就可以实现换肤。

这样的情况包括Fragment,或者通过inflate引用布局文件创建View。

其实RecyclerView这类的也可以,但是滑动一下就会发现不对劲,这是因为它存在item复用,所以需要优化处理,后文中会介绍如何处理。

状态栏、导航栏、ActionBar颜色设置

这部分就比较简单,状态栏的颜色设置主要是通过laobie/StatusBarUtil设置的,主要是颜色获取通过ChangeSkinHelper.getColor,导航栏只支持5.0以后,actionBar主要就是获取到actionBar设置颜色即可,不使用actionBar不管也行,具体代码:

这个方法需要在activity的onCreate方法中调用和在换肤的回调changeSkin方法中调用即可,使用方法见app下的MainActivity。

插件皮肤包

插件皮肤包其实就是一个Android apk,只是里边可以只包含资源文件即可。

皮肤包只需要创建好项目,加入对应的资源,然后build成apk,存放到手机目录中即可。

可以注意的点就是皮肤包最好不加任何第三方依赖包括google的support包这样会让皮肤包小很多。

感谢

换肤功能最开始是通过《网易云课程-安卓高级开发工程师微专业》学习,后来又看到了hongyangAndroid/ChangeSkin库,吸取了一些技巧,对我帮助都很大,在此表示特别感谢~

如果有任何对本库需要改进和优化的建议都可以通过issues提交给我,我会定期维护优化,感谢支持。

android换肤哪个简单,Android换肤相关推荐

  1. android五子棋设计模板,简单Android五子棋

    一个简单的Android五子棋小游戏 资源下载此资源下载价格为3D币,请先登录 资源文件列表 FiveChess/.classpath , 364 FiveChess/.project , 845 F ...

  2. Android换肤功能实现与换肤框架QSkinLoader使用方式介绍

    框架地址:https://github.com/qqliu10u/QSkinLoader 效果图 https://github.com/qqliu10u/QSkinLoader/raw/master/ ...

  3. Android 手写实现插件化换肤框架 兼容Android10 Android11

    目录 一.收集所有需要换肤的view及相关属性 二.统一为所有Activity设置工厂(兼容Android9以上) 三.加载皮肤包资源 四.处理支持库或者自定义view的换肤 五.处理状态栏换肤 六. ...

  4. Android插件化开发实现动态换肤

    今晚实在不想coding,于是想着整理点知识点,那么简单整理了下插件化开发实现动态更换皮肤.插件化开发大家应该不陌生或多或少用过或听过,插件化开发在项目业务拓展.模块化等方面有不小优势,当然实现一个完 ...

  5. android 第三方登录界面,Android App集成第三方登录与换肤指南

    Android App集成第三方登录与换肤指南 文档编辑 概述 本文主要是介绍了如何通过开源框架快速支持QQ和微信登录,并介绍了如何实现app快速换肤 QQ登录接入 APP要支持QQ登录,需要先到腾讯 ...

  6. android换肤动画,Android换肤(二) — 插件式换肤

    ###前言 上节我们讲到了`Android-skin-support`库的应用内换肤,大家感兴趣的可以参看文章: [Android换肤(一) - 应用内换肤](http://www.demodashi ...

  7. android 换肤 字体颜色,android使用SkinManager实现换肤功能的示例

    试着用鸿洋大神写的SkinManager实现了换肤功能. 一.配置 在app下build.gradle中添加依赖: //换肤功能 compile 'com.zhy:changeskin:4.0.2' ...

  8. Android通过Hook技术实现一键换肤

    目录 1.什么是一键换肤 2.界面上那些东西可以换肤 3.利用Hook实现一键换肤 4.Android创建视图源码分析 4.1.自定义Activity设置要显示的布局文件xml 4.2.调用兼容App ...

  9. android换主题功能,Android 切换主题风格(Theme换肤效果)

    参考 截图 1.默认打开 image.png 2.点击[换主题色] image.png 需知 主题色运用:manifest清单文件中application的属性之一,android:theme=&qu ...

最新文章

  1. [原]OpenCV2.2无法打开摄像头或读取视频的解决方法
  2. 独立开发人员的自由之路 ——1
  3. 回溯算法-01遍历所有排列方式问题
  4. 论文浅尝 | 基于复杂查询图编码的知识库问答
  5. Catalyst 5.8: the Perl MVC Framework
  6. PCB 生产周期计算逻辑与代码实现
  7. 如何将tomcat默认页面换成项目首页?
  8. React-组件生命周期
  9. C++ 纯虚函数 虚函数 override
  10. robotframework 接口测试 +RSA 加密
  11. java2wsdl_Java2WSDL之java实现
  12. rs485接口上下拉_RS485上拉下拉电阻计算详解
  13. 基于深度学习技术的智能分类垃圾桶设计方案
  14. Node.js 整合 Express 框架实现微信支付和支付宝支付
  15. 修改禅道使用的数据库
  16. aect17定义_【多选题】AECT关于教育技术的17定义认为,教育技术的目的是()? A. 提高绩效的 B. 促进知识理解 C. 调整改善学习及表现 D. 促进学习...
  17. android8.0调用系统浏览器,ie浏览器在线使用,ie浏览器8.0手机安卓版-
  18. 解决导出excel导出名字乱码
  19. Linux-CentOS 安装配置ExifTool
  20. 项目管理中的关键路径

热门文章

  1. AE正确释放打开资源
  2. 大数据利益相关者的利益矛盾及其伦理治理
  3. excel 如何去除两列重复项
  4. php中``反引号的作用
  5. java 发送Email BY 163.com
  6. Lumen超全功能知识点来了,ue5初学者们必看
  7. python字典统计单词个数_python字典统计单词个数
  8. java基础知识粗略整理
  9. linux 库全局变量_学习嵌入式,做底层还是应用好?嵌入式Linux底层要掌握哪些技能?...
  10. 性能测试从零开始(视频笔记 20210504)