美文网首页
安卓动态查找资源ID与布局

安卓动态查找资源ID与布局

作者: 大苏打6815 | 来源:发表于2019-04-22 12:11 被阅读0次

最近三年一直在做游戏SDK开发,当然也会开发自己的SDK,很多人遇到了把资源逻辑写在SDK里面然后封装成jar包,给别人用的时候,别人应用jar包,引入你写的相关的API,却提示找不到R文件。

那是因为你在SDK布局还有引用R的时候都是R.id.xx或者R.layout.xx。在APP里面写没所谓,我以前也是做APP的,也不用动态引用资源ID什么的。但是当你写SDK,用到了资源ID一定要动态引用。因为这个资源ID是在你目前工程环境下,你打出jar包给别人引用就算资源一个不落的拷贝过去,但是资源引用的环境变了。

下面动态查找资源layout id示例代码:

int id = context.getResources().getIdentifier("yingsdk_game_login_fixpwd_phone_dialog", "layout", context.getPackageName());
        if (id == 0) {
            return;
        }
        final View view = View.inflate(context, id, null);
        setContentView(view);

动态查找资源控件 id示例代码:

button_close = (Button) findViewById("yingsdk_dialog_btn_close");

public View findViewById(String resName) {
        return super.findViewById(getContext().getResources().getIdentifier(resName, "id", getContext().getPackageName()));
    }

注意findViewById(String resName)是封装的一个方法,而不是直接调用的系统的

这样就完全可以避免R文件找不到的问题了,市面上的一些游戏SDK,以及第三方SDK用的不出问题,那完全是别人都是用这种方式处理好了的(我说的不是在AS以build gradle形式)而是以libs和res资源文件依赖的方式,例如facebook和谷歌你直接用AS build引用没问题,如果你业务需求需要用eclipse接呢?或者是以jar还有资源文件接呢?如果不用脚本做处理,直接引用那就会报错的。当然如果有更好的方法,也可以探讨哇。

相关文章

  • 安卓动态查找资源ID与布局

    最近三年一直在做游戏SDK开发,当然也会开发自己的SDK,很多人遇到了把资源逻辑写在SDK里面然后封装成jar包,...

  • 基础篇

    学习了安卓布局:LinearLayout(线性布局) RelativeLayout(相对布局)

  • 安卓开发入门教程-常用布局_布局引用

    关注 安卓007 ,免费获取全套安卓开发学习资料 什么是布局引用 布局引用不是一种新的布局哦,目的是复用某些布局文...

  • 样式(style)和主题(theme)资源

    在安卓中,提供了用于对安卓应用进行美化的样式和主题资源,使用这种资源可以开发出各种风格的安卓应用。 样式资源 st...

  • 安卓屏幕适配-自定义像素适配

    1、屏幕适配 原因:安卓设备碎片化,导致app的界面元素在不同的屏幕尺寸上显示不一致。目的:让布局,布局组件,资源...

  • 安卓布局

    RelativeLayout 第一类:属性值为true可false android:layout_centerHr...

  • 安卓布局,

    前言 在进行Android开发中,常常需要用到各种布局来进行UI的绘制,今天我们就来讲下Android开发中最常用...

  • 安卓布局

    RelativeLayout 第一类:属性值为true可false android:layout_centerHr...

  • 安卓布局

    Android 中常用的布局 FrameLayout RelativeLayout LinearLayout Ab...

  • 安卓布局

    layout_margin和padding margin属性是控制控件与控件之间的间隙,属于对控件外部的控制。pa...

网友评论

      本文标题:安卓动态查找资源ID与布局

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