目录
前言
上一版写过《》,出现比较严重的缺点,就是Dialog,Toast和悬浮窗View无法采集创建的View,因此也无法换肤(若在Activity中使用的话,可参考《》)。
因此,为了解决上面缺点,在BiuSkin1PA 基础上进行调整,搞出了一个新的动态换肤库,重新命名为:BiuSkin1PNA。
动态换肤的优点:
-
满足用户个性化界面,比如提供多套皮肤
-
相比于静态换肤,减少了apk大小
-
皮肤资源独立,便于维护
Demo介绍,可看《换肤库BinSkin1的使用》
正文
总所周知,动态换肤的步骤主要如下:
-
-
加载皮肤包
-
刷新皮肤资源
什么是BiuSkin1PNA
-
1表示换肤方式一
-
P通过Path路径加载皮肤资源
-
NA是NoActivity缩写,不继承Activity
下载
接口
跟BiuSkin1PA 的使用差不多,也更简单。
后面会有专门一篇介绍使用,这里也就大致介绍一下。
主要类或接口
SkinManager.java ISkinRefreshListener.java
ISkinRefreshListener.java
public interface ISkinRefreshListener { boolean onSkinRefresh(View view, String attrName, String attrValue, String attrType, int resourceId); }
返回View和View的属性,让用户自己判断是否需要拦截并实现换肤。
SkinManager.java
核心类,显示主要接口
public void addSupportName(String[] attributeList); public void addIgnoreView(String[] ignoreList); public void changeSkin(final String path); public void setISkinRefreshListener(ISkinRefreshListener listener); public Drawable getDrawable(...); public int getColor(...); public ColorStateList getColorStateList(...); public float getDimension(...) ...
具体请看BiuSkin1PNA.jar
必选接口
不可缺少,缺一不可
初始化
// 初始化 SkinManager.initContext(this);
加载资源
//换肤切换,传入资源包路径[必须] SkinManager.getInstance().changeSkin(path);
可选接口
不一定要,可根据需求进行配置。
换肤View监听
# 设置监听,可以拦截View SkinManager.getInstance().setISkinRefreshListener(this); @Override public boolean onSkinRefresh(View view, String attrName, String attrValue, String attrType, int resourceId) { //返回View和相关属性资源 //这里可以做拦截,返回true表示拦截 return false; }
添加忽略View
参考如下规则
SkinManager.getInstance().addIgnoreView(new String[]{"androidx.125la.Toolbar"});
添加自定义属性
支持添加自定义属性换肤
SkinManager.getInstance().addSupportName(new String[]{"barSize"});
参考文章
部分参考网上文章,时间太久,链接丢了,抱歉!
赏一杯可乐
如果觉得OK,欢迎打赏一杯可乐哈,谢谢
有bug,欢迎留言
暂无评论...
随机推荐
[摘]Android 系统重启原因分析
前言 Android重启,这种影响使用的问题必须解决和找出原因。 正文 以下是摘抄文章内容,略有删减。 重启原因分类 上层造成重启 system_server被杀 ...
125啦新版来了,欢迎使用
1、好记性不如烂笔头; 2、觉得已经晚了,恰恰是最早的时候; 3、鸡蛋从外打破是食物,从内打破是生命 我们新版上线啦(掌声),这次改版很大,放弃...
卢梭:生活在大自然的怀抱里
为了到花园里看日出,我比太阳起得更早;如果这是一个晴天,我最殷切的期望是不要有信件或来访扰乱这一天的清宁。我用上午的时间做各种杂事。每件事都是我乐...
ListView的item中当文本出现阿拉伯语时会显示怪异
前言 测试反馈有些歌曲名字中如果存在阿拉伯语,列表显示时就出现显示右边怪异的问题。 总所周知,阿拉伯语显示在右边的。 比如 עברית_xi bo lai yu.mp3 الع...
Android setSystemUiVisibility详解
简介 下面是setSystemUiVisibility可以设置的一部分flag SYSTEM_UI_FLAG_LOW_PROFILE 弱化状态栏和导航栏的图标 SYSTEM_UI_FLAG_HIDE_NAVIGATION 隐藏...
使用Android Studio编译assets文件未打包进apk
前言 从Eclipse项目中移植到Android studio编译后或者新创建项目然后自己新创建assets目录,编译打包后,发现assets并没有在apk。 如何确定是否编译进入,可...