美文网首页
插件换肤实现的一个思路

插件换肤实现的一个思路

作者: woochen123 | 来源:发表于2017-06-22 17:14 被阅读0次

1.思路

从服务器下载资源,然后替换当前apk中的资源。那么如何加载当前apk以外(如内存卡)的资源呢?所以可以先研究一下google源码中是如何加载当前apk中的资源的

2.Resources源码分析

无论是加载图片还是颜色资源,我们都是通过调用方法getResources()来完成的。此外通过源码发现,此方法的实质就是创建了一个Resources 对象,而它的创建方式有两种

//android-24源码中使用此构造创建
 Resources resources = new Resources(classLoader);
//android-23源码中使用此构造创建
 Resources(AssetManager assets, DisplayMetrics metrics, Configuration config);

3.换肤的简单实现

3.1 效果图

gif.gif

3.2 代码

 public void test(){
        Resources superResources = getResources();
        AssetManager asserts = null;
        String dir  = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "skin.skin";
        try {
            //实例化AssetManager对象,并将资源路径传入
            asserts =AssetManager.class.newInstance();
            Method addAssetPath = AssetManager.class.getDeclaredMethod("addAssetPath", String.class);
            addAssetPath.invoke(asserts,dir);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //创建Resources对象
        Resources resources = new Resources(asserts,superResources.getDisplayMetrics(),superResources.getConfiguration());
        //得到用于替换的资源id
        int resId = resources.getIdentifier("sucai","mipmap","com.example.administrator.skintestapplication");
        Drawable imageDrawable = resources.getDrawable(resId);
        skinView.setImageDrawable(imageDrawable);
    }

相关文章

  • Android 动态换肤原理与实现

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

  • 插件换肤实现的一个思路

    1.思路 从服务器下载资源,然后替换当前apk中的资源。那么如何加载当前apk以外(如内存卡)的资源呢?所以可以先...

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

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

  • 插件式换肤

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

  • Vuex模拟实现

    实现思路 实现install方法vuex是vue的一个插件,所以和模拟VueRouter类似,先实现Vue插件约定...

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

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

  • Proxy/Delegate Application框架

    Proxy/Delegate Application框架 有的时候,为了实现一些特殊需求,如界面换肤、插件化等,我...

  • 【靶点突破】网易云换肤方案探讨

    【靶点突破】网易云换肤方案探讨 老方案 网易云音乐换肤方案原理 动手实现一个网易云换肤方案的demo 动手打造换肤...

  • Android 换肤的思路

    换肤思路: 我们需要解决的几个问题 xml加载前换肤,如果xml加载后换肤,用户将会看见换肤之前的色彩,用户体验不...

  • 插件化换肤

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

网友评论

      本文标题:插件换肤实现的一个思路

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