当前位置:   article > 正文

Android动态换肤框架实现小结_android 换肤框架

android 换肤框架

Android动态换肤框架实现小结

动态换肤的优点

  • 减少APK体积

  • 不需要更新apk就可以更新皮肤

  • 可以实时更换皮肤

整体实现流程

  1. 通过设置LayoutInflector.Factory2来监听View的创建过程,收集需要换肤的View和属性

  2. 加载皮肤包资源,将其封装成AssetManager和Resources

  3. 遍历需要换肤的View,通过原属性资源id获取资源名和类型,然后根据资源名和类型从皮肤包的Resources对象中取出最新的皮肤资源,并将新的资源应用到View上

实现细节

  • 收集需要换肤的View的过程是怎么样的?

    • 在解析xml布局文件时,会先调用LayoutInflactor.Factory2的创建View方法,如果返回null,则会走系统默认创建View方法,所以我们可以在Factory2中判断View是否包含自定义属性,根据自定义属性的值来决定要不要支持皮肤更新;

    • 如果不需要则返回null,需要则我们自己创建View,并应用皮肤包里最新的资源

    • 收集需要换肤的View时,我们需要保存它设置的属性和对应的值,然后根据属性的资源id,获取到对应的资源类型和资源名称,换肤时,根据资源名和类型去皮肤包对应的Resources对象中获取对应资源并应用到View上面

  • 如何加载皮肤包资源?

    通过反射构建AssetManager对象,并反射调用其addAssetPath方法将皮肤包所在路径添加进去,然后通过AssetManager构建新的Resources对象对皮肤包中的资源进行管理

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/86875
推荐阅读
相关标签
  

闽ICP备14008679号