前言
动态换肤就是常说的外置换肤,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,欢迎打赏一杯可乐哈,谢谢
暂无评论...
随机推荐
JobIntentService的使用
前言简单记录一下JobIntentService的使用,后面高版本又废弃了,推荐使用Android Jetpack了。虽然废弃了,但还是记录一下(之前没记录)。水文一篇,哈哈,大佬们可以跳过。正文Android 8.0对系统资源的管控更加严格,添加了后台限制规则。如果满足以下任意条件...
AIDL使用异常记录
前言记录一下AIDL中常见的问题,方便自己回忆和学习。正文这里以BookBean为例package com.biumall.binderlibmedia.bean;import android.os.Parcel;import android.os.Parcelable;public...
林徽因:笑
笑的是她的眼睛,口唇,和唇边浑圆的旋涡。艳丽如同露珠,朵朵的笑向贝齿的闪光里躲。那是笑——神的笑,美的笑;水的映影,风的轻歌。 笑的是她惺松的鬈发,散乱的挨着她的耳朵。轻软如同花影,痒痒的甜蜜涌进了你的心窝。那是笑——诗的笑,画的笑:云的留痕,浪的柔波。选自《...
编译Android源码,并刷入Nexus7真机
编译Android源码,并刷入Nexus7真机时我使用的如下配置(后来我Ubuntu 16也编译成功)编译环境:Ubuntu 14.04源码版本:Android6.0真实设备:Nexus7 wifi 第二代(flo)本教程是为Nexus7而写的,当然其他的Nexus设备也可...
冯骥才:青云楼主
青云楼主,海河边一小文人的号。嘛叫小文人?就是在人们嘴边绝对挂不上号,可提起他来差不多还都知道的那类文人。此君脸窄身簿,皮黄肉干,胳膊大腿又细又长,远瞧赛几根竹竿子上凉着的一张豆皮。但人不可貌相,海不可斗量。他能写能画,能刻图章,连托裱的事也行;可行家们说他——手糙了点儿。因故,天津卫的买卖没他写...
Kotlin字符串
前言简单记录一下Kotlin字符串。主要是方便自己查阅。正文字符串一个字符串可以包含一个或者多个字符,也可以不包含任何字符,即长度为0。var mString: String = "谷歌一下"var mString2 = "百度一下"遍历字符串遍历也是很多种,下面列举验证过的遍历...