android换肤哪个简单,Android换肤
这是一个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换肤相关推荐
- android五子棋设计模板,简单Android五子棋
一个简单的Android五子棋小游戏 资源下载此资源下载价格为3D币,请先登录 资源文件列表 FiveChess/.classpath , 364 FiveChess/.project , 845 F ...
- Android换肤功能实现与换肤框架QSkinLoader使用方式介绍
框架地址:https://github.com/qqliu10u/QSkinLoader 效果图 https://github.com/qqliu10u/QSkinLoader/raw/master/ ...
- Android 手写实现插件化换肤框架 兼容Android10 Android11
目录 一.收集所有需要换肤的view及相关属性 二.统一为所有Activity设置工厂(兼容Android9以上) 三.加载皮肤包资源 四.处理支持库或者自定义view的换肤 五.处理状态栏换肤 六. ...
- Android插件化开发实现动态换肤
今晚实在不想coding,于是想着整理点知识点,那么简单整理了下插件化开发实现动态更换皮肤.插件化开发大家应该不陌生或多或少用过或听过,插件化开发在项目业务拓展.模块化等方面有不小优势,当然实现一个完 ...
- android 第三方登录界面,Android App集成第三方登录与换肤指南
Android App集成第三方登录与换肤指南 文档编辑 概述 本文主要是介绍了如何通过开源框架快速支持QQ和微信登录,并介绍了如何实现app快速换肤 QQ登录接入 APP要支持QQ登录,需要先到腾讯 ...
- android换肤动画,Android换肤(二) — 插件式换肤
###前言 上节我们讲到了`Android-skin-support`库的应用内换肤,大家感兴趣的可以参看文章: [Android换肤(一) - 应用内换肤](http://www.demodashi ...
- android 换肤 字体颜色,android使用SkinManager实现换肤功能的示例
试着用鸿洋大神写的SkinManager实现了换肤功能. 一.配置 在app下build.gradle中添加依赖: //换肤功能 compile 'com.zhy:changeskin:4.0.2' ...
- Android通过Hook技术实现一键换肤
目录 1.什么是一键换肤 2.界面上那些东西可以换肤 3.利用Hook实现一键换肤 4.Android创建视图源码分析 4.1.自定义Activity设置要显示的布局文件xml 4.2.调用兼容App ...
- android换主题功能,Android 切换主题风格(Theme换肤效果)
参考 截图 1.默认打开 image.png 2.点击[换主题色] image.png 需知 主题色运用:manifest清单文件中application的属性之一,android:theme=&qu ...
最新文章
- [原]OpenCV2.2无法打开摄像头或读取视频的解决方法
- 独立开发人员的自由之路 ——1
- 回溯算法-01遍历所有排列方式问题
- 论文浅尝 | 基于复杂查询图编码的知识库问答
- Catalyst 5.8: the Perl MVC Framework
- PCB 生产周期计算逻辑与代码实现
- 如何将tomcat默认页面换成项目首页?
- React-组件生命周期
- C++ 纯虚函数 虚函数 override
- robotframework 接口测试 +RSA 加密
- java2wsdl_Java2WSDL之java实现
- rs485接口上下拉_RS485上拉下拉电阻计算详解
- 基于深度学习技术的智能分类垃圾桶设计方案
- Node.js 整合 Express 框架实现微信支付和支付宝支付
- 修改禅道使用的数据库
- aect17定义_【多选题】AECT关于教育技术的17定义认为,教育技术的目的是()?
A. 提高绩效的
B. 促进知识理解
C. 调整改善学习及表现
D. 促进学习...
- android8.0调用系统浏览器,ie浏览器在线使用,ie浏览器8.0手机安卓版-
- 解决导出excel导出名字乱码
- Linux-CentOS 安装配置ExifTool
- 项目管理中的关键路径