美文网首页
插件式换肤

插件式换肤

作者: 往事一块六毛八 | 来源:发表于2020-04-03 17:50 被阅读0次

插件式换肤流程:
一:采集需要换肤的控件

  • SkinLayoutInflaterFactory
    • onCreateView() --创建对应布局并返回
      * skinAttribute.load(view, attrs);--加载哪些控件属性需要被更改

//页面属性管理器

  • SkinAttribute
    • load()方法加载并保存哪些控件属性需要修改
    • SkinPair(attributeName, resId)--一个javaBean保存需要修改的属性名,已经属性名对应的value(Int类型)值
    • SkinView(view, mSkinPars)--一个javaBean,保存对应的view,以及View对应的属性(SkinPair对象)的集合。
      • applySkin(Typeface typeface)--循环遍历装有属性(SkinPair对象)的集合,根据属性对象对应的属性值更改对应的value

二:加载皮肤包

  • SkinManager

    • SkinManager(Application application) --管理类的构造
      //共享首选项 用于记录当前使用的皮肤
      ** SkinPreference.init(application);
      //资源管理类 用于从 app/皮肤 中加载资源
      ** SkinResources.init(application);
      //注册Activity生命周期
      ** skinActivityLifecycle = new SkinActivityLifecycle();
      application.registerActivityLifecycleCallbacks(skinActivityLifecycle);

      //加载皮肤
      ** loadSkin(SkinPreference.getInstance().getSkin());
      ** 加在文件的两种方式
      * 以文件名的方式(apk文件)
      * ResoureceID 方式
      * 通过以上两种方式拿到文件名,使用AssetManager 加载皮肤资源

    • loadSkin(String skinPath) --通过皮肤路径加在皮肤包 如果为空则使用默认皮肤
      //通知采集的View 更新皮肤
      //被观察者改变 通知所有观察者
      ** setChanged();
      ** notifyObservers(null);

  • SkinResources 资源管理类 用于从 app/皮肤 中加载资源

三:更新所有可能被换肤的控件

  • SkinLayoutInflaterFactory
    ** update(Observable o, Object arg)添加观察者--更换皮肤
    ** skinAttribute.applySkin();

四:状态栏、导航栏的换肤

SkinThemeUtils
*updateStatusBarColor(Activity activity) --修改状态栏的颜色

相关文章

  • 插件式换肤框架搭建 - 插件式换肤框架的完善

    1. 概述 基于插件式换肤框架搭建 - 资源加载源码分析和插件式换肤框架搭建 - setContentView源码...

  • 插件式换肤

    插件式换肤流程:一:采集需要换肤的控件 SkinLayoutInflaterFactoryonCreateView...

  • 插件式换肤

    原理:LayoutInflater设置factory时实现factor接口的onCreateView方法,在该方法...

  • 反射、注解、和泛型简要笔记

    1.反射 作用:能够做一般做不到的事情。使用场景:插件式换肤,插件式开发 apk(没有安装插件) 创建对象 很多系...

  • 04.Android进阶之旅-(系统架构篇)

    反射作用:能够做一般做不到的事情。使用场景:插件式换肤 ,插件式开发 apk(没有安装插件)所有的反射功能都是基...

  • 初步了解安卓的主题更换

    换肤一般分为两种:插件换肤和主题换肤 插件换肤就是所谓的apk换肤,将需要更换的属性写好打成apk包放在asset...

  • java-反射、注解、泛型

    反射 作用:能够做一般做不到的事情。使用场景:插件式换肤,插件式开发所有的反射功能都是基于字节码(class),一...

  • Android 动态换肤原理与实现

    概述 本文主要分享类似于酷狗音乐动态换肤效果的实现。 动态换肤的思路: 收集换肤控件以及对应的换肤属性 加载插件皮...

  • 插件化换肤

    插件化换肤的优点 1)换肤无闪烁,立即生效,无需重启APP,用户体验好2)扩展和维护方便,入侵性小,低耦合3)插件...

  • Android 动态换肤 MXSKinChange

    MXSkinChange 动态换肤插件 项目源码:https://gitee.com/zhangmengxiong...

网友评论

      本文标题:插件式换肤

      本文链接:https://www.haomeiwen.com/subject/ngekphtx.html