前言
动态换肤就是常说的外置换肤,App和换肤资源是单独分开的,需要的时候就加载换肤资源即可。
动态换肤的优点:
-
满足用户个性化界面,比如提供多套皮肤
-
相比于静态换肤,减少了apk大小
-
皮肤资源独立,便于维护
正文
总所周知,动态换肤的步骤主要如下:
-
采集View的相关属性
-
加载皮肤包
-
刷新皮肤资源
缺点
-
必须继承继承SkinCompatActivity或SkinActivity
-
Dialog,Toast和悬浮窗无法采集,也无法换肤(若在Activity中,参考《》)
-
由于是采集并保存了View相关属性,存在耗资源
第二个比较致命!
下载
BiuSkin1PA.jar中1PA解释
-
1表示换肤方式一
-
P通过Path路径加载皮肤资源
-
A继承Activity
使用方式
第一步
初始化
SkinManager.initContext(this);
第二步
-
addIgnoreView()添加忽略的View
-
addSupportName()添加自定义View的属性
第三步
设置监听,多个Activity,请在Application中监听。
-
可以拦截不想换肤的属性
-
也可以处理自定义View中新增的属性进行处理换肤
SkinManager.getInstance().setISkinRefreshListener(this);
下面是对barTextColor和barTextSize属性的拦截并自己调用方式实现换肤。
TextSeekBar是自定义View,barTextColor和barTextSize是新增的属性
@Override public boolean onSkinRefresh(View view, String attrName, String attrValue, String attrType, int resourceId) { //返回View和相关属性资源 //这里可以做拦截,返回true表示拦截 return false; }
第四步
继承SkinAppCompatActivity或SkinAppActivity,并重写openSwitchSkin()
public class MainActivity extends SkinCompatActivity{ //重写 @Override protected boolean openSwitchSkin() { return true; } }
或
public class MainActivity extends SkinActivity{ //重写 @Override protected boolean openSwitchSkin() { return true; } }
第五步
# path是换肤资源路径+资源apk SkinManager.getInstance().changeSkin(path);
参考文章
无
赏一杯可乐
如果觉得OK,欢迎打赏一杯可乐哈,谢谢
暂无评论...
随机推荐
bootchart 的配置和使用
前言这里记录一下bootchart 的配置和使用,方便自己查阅。正文安装必要工具在设备端使能bootchart,抓取数据在服务器上解析bootchart数据,绘制成图分析bootchart.png安装必要工具略,由于公司编译代码的服务器是可以使用bootchart 命令,这里就...
ATC平台编译命令记录
前言主要记录一下ATC项目中用的编译命令。方便自己查阅。主要是个人用,每个平台可能不一样。不推荐看哈正文在Android源码目录下隐藏内容!付费阅读后才能查看!¥2 ¥3多个隐藏块只需支付一次付费阅读参考文章1.《ATC 文档》
Kotlin中的特殊函数简介
前言简单记录一下Kotlin中的run()、apply()、let()、also()和with()等特殊的函数,方便自己查阅。正文run()@kotlin.internal.InlineOnlypublic inline fun <T, R> T.run(block: T....
Android NDK配置简单记录
前言这里简单记录一下Android中使用DNK的配置,记录于此,方便自己查阅。流水账而已。环境:Windows11版本:android-ndk-r27-windows正文第一步如果没有下载就去官网《NDK 下载》下载吧,我这里下载当前最新的android-ndk-r27-windows...
Android 6.0 Settings源码简单分析之蓝牙(2)
上一篇《Android 6.0 Settings源码简单分析之蓝牙(1)》我们只是简单的介绍了蓝牙的界面和流程的启动,讲得比较粗糙,这次我们继续深入讨论蓝牙,设计Framework的代码源码:Android 6.0应用:Settings 和 Framework(权且看做一个应用吧^_^...
音视频学习:AudioRecord的简单使用
前言相关文章摘抄过,但由于不是自己写的或者敲过代码,后面就忘了。本站主要简单的介绍AudioRecord的使用。好记性不如烂笔头正文Android录音的流程:构造一个AudioRecord对象,其中需要的最小录音缓存buffer大小可以通过getMinBufferSize方法得到。...