前言

上一版写过《动态换肤库:BiuSkin1PA》,出现比较严重的缺点,就是Dialog,Toast和悬浮窗View无法采集创建的View,因此也无法换肤(若在Activity中使用的话,可参考《Android换肤之Toast和Dialog》)。

因此,为了解决上面缺点,在BiuSkin1PA 基础上进行调整,搞出了一个新的动态换肤库,重新命名为:BiuSkin1PNA。

动态换肤的优点:

  • 满足用户个性化界面,比如提供多套皮肤

  • 相比于静态换肤,减少了apk大小

  • 皮肤资源独立,便于维护

Demo介绍,可看《换肤库BinSkin1的使用

正文

总所周知,动态换肤的步骤主要如下:

  1. 采集View的相关属性

  2. 加载皮肤包

  3. 刷新皮肤资源

什么是BiuSkin1PNA

  1. 1表示换肤方式一

  2. P通过Path路径加载皮肤资源

  3. NA是NoActivity缩写,不继承Activity

下载

隐藏内容!
评论后才能查看!

接口

跟BiuSkin1PA 的使用差不多,也更简单。

后面会有专门一篇介绍使用,这里也就大致介绍一下。

主要类或接口
  1. SkinManager.java
  2. ISkinRefreshListener.java
复制
ISkinRefreshListener.java
  1. public interface ISkinRefreshListener {
  2.   boolean onSkinRefresh(View view, String attrName, String attrValue, String attrType, int resourceId);
  3. }
复制

返回View和View的属性,让用户自己判断是否需要拦截并实现换肤。

SkinManager.java

核心类,显示主要接口

  1. public void addSupportName(String[] attributeList);
  2. public void addIgnoreView(String[] ignoreList);
  3. public void changeSkin(final String path);
  4. public void setISkinRefreshListener(ISkinRefreshListener listener);
  5. public Drawable getDrawable(...);
  6. public int getColor(...);
  7. public ColorStateList getColorStateList(...);
  8. public float getDimension(...)
  9. ...
复制

具体请看BiuSkin1PNA.jar

必选接口

不可缺少,缺一不可

初始化
  1. // 初始化
  2. SkinManager.initContext(this);
复制
加载资源
  1. //换肤切换,传入资源包路径[必须]
  2. SkinManager.getInstance().changeSkin(path);
复制
可选接口

不一定要,可根据需求进行配置。

换肤View监听
  1. # 设置监听,可以拦截View
  2. SkinManager.getInstance().setISkinRefreshListener(this);
  3. @Override
  4. public boolean onSkinRefresh(View view, String attrName, String attrValue, String attrType, int resourceId) {
  5. //返回View和相关属性资源
  6. //这里可以做拦截,返回true表示拦截
  7.   return false;
  8. }
复制
添加忽略View

参考如下规则

  1. SkinManager.getInstance().addIgnoreView(new String[]{"androidx.125la.Toolbar"});
复制
添加自定义属性

支持添加自定义属性换肤

  1. SkinManager.getInstance().addSupportName(new String[]{"barSize"});
复制

参考文章

部分参考网上文章,时间太久,链接丢了,抱歉!

  1. 换肤库BinSkin1的使用

赏一杯可乐

如果觉得OK,欢迎打赏一杯可乐哈,谢谢

有bug,欢迎留言

暂无评论

none
暂无评论...