插件Resource创建

作者: 云呆呆 | 来源:发表于2019-12-16 00:34 被阅读0次

    Resources创建

    1.系统本身是在ResourceManager中new出来的(assetManager,metrics,Configuration),我们自己去构造的时候需要传入的assetsManager,后面个参数用系统的resource.get即可

    2.但是AssetManager无法直接创建,需要用反射创建AssetManager.class.newInstance,(Class.newInstance一般用在反射,类加载和无参构造)

    3.方法反射调用addAssertPath,之后再用该AssetManager创建插件的resource

    4.注意:resource.getAsset有兼容性问题有可能读不到

    R文件的id获取

    通过类加载器加载对应插件的R.java文件

        AssetManager manager = AssetManager.class.newInstance();

        DexClassLoader classLoader = new DexClassLoader("", "", "", getClassLoader());

        Class<?> animClass = classLoader.loadClass("packageName" + ".R$anim");

        Field[] fields = animClass.getDeclaredFields();

        for (Field field : fields) {

                //获取到每一个animId

                int animId = field.getInt(R.anim.class);

        }

    最终使用方式pluginresource.getAnim(animId)

    相关文章

      网友评论

        本文标题:插件Resource创建

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