前言
动态换肤就是常说的外置换肤,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,欢迎打赏一杯可乐哈,谢谢
暂无评论...
随机推荐
Android悬浮球
前言上次介绍过创建一个《1像素的悬浮窗口》,这里需要做一个跟魅族一样的悬浮球,部分代码套用之前的。设计悬浮球时考虑全屏和非全屏,以及导航栏在左侧或底部情况等,要不然拖动时存在抖动问题。正文直接入正文,上代码片段。隐藏内容!付费阅读后才能查看!¥3 ¥6多个隐藏块只需支付一次付费阅读...
郁达夫:北平的四季
对于一个已经化为异物的故人,追怀起来,总要先想到他或她的好处;随后再慢慢的想想,则觉得当时所感到的一切坏处,也会变作很可寻味的一些纪念,在回忆里开花。关于一个曾经住过的旧地,觉得此生再也不会第二次去长住了,身处入了远离的一角,向这方向的云天遥望一下,回想起来的,自然也同样地只是它的好处。中国的大都...
村田浩一:假想游戏
一个年轻男子在楼梯上超过一个中年男子,奔上了月台,想跳进最近的门,但只差了一步没赶上,门已关上,火车无情地开动了。年轻男子呼吸急促,很遗憾地咂了一下嘴。“哎呀,可惜了。”中年男子这么说着靠过来。他戴副眼镜,稍胖,看起来为人厚道。年轻男子点一下头坐在长椅上。“对,差一步。火车应该稍等一下。”...
[代码片段]时间格式化方式
前言记录一下,格式化时间显示代码片段。正文根据时间的范围,进行时间的格式化100秒 : 01:40400秒 : 01:06:40记录一下,方便自己查阅/** * 时间格式化 * * @param value value * @param bigValue value是否...
陆文夫:脚步声
照理不应该被自己的脚步声吓住,因为在少年时我就在黑暗无人的旷野间听到过此种脚步。那时我住在江边的一个水陆码头上,那里没有学校,只有二里路外的村庄上有一位塾师在那里授馆,我只能去那里读书。那位塾师要求学生们苦读,即使不头悬梁、锥刺股,却也要“闻鸡起舞”,所谓闻鸡起舞就是在鸡鸣时分赶到学塾里去读早书。农...
nginx服务器开启Gzip
前言启用Gzip压缩功能, 可以使网站的css、js 等资源在传输时进行压缩,尽管这样会消耗一定的cpu资源,但是会节约大量的出口带宽来提高访问速度。记录一下,方便自己查阅。正文我这用的是Nginx,因此以这个为例,如果是Apache,可以看参考链接一。找到nginx.conf文件# ...