前言
动态换肤就是常说的外置换肤,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,欢迎打赏一杯可乐哈,谢谢
历史上的今天
© 版权声明