背景 在某些应用中,为了实现应用apk资源放入重复利用,或者使用反射得到本应用的资源,需要使用反射方式获得,但Resources类中也自带了这种获取方式,并且功能更加强大 你可以获取string,color,drawable,raw,xml等文件,因此也就意味着,这里可以获取的资源是res中已定义的资源,对于控件id的获取,暂时无法做到 public int getIdentifier(String name, String defType, String defPackage) { if (n…
1.前言 Android Studio对模块化开发提供的一个很有用的功能就是可以在主项目下新建库项目(Module),但是在使用库项目时却有一个问题就是资源ID冲突,因为编译时SDK会自动帮我们处理这个问题,所以一般我们不会察觉到,但是在某些情况下,我们需要意识到这个问题的存在. 比如,在新建的库项目中使用如下代码: public void onButtonClick(View view) { switch (view.getId()) { case R.id.button_1: break;…
http://tweetyf.org/2013/02/mapping_between_res_resid_android.html…
在多个有规律的资源ID获取的时候,可以使用getIdentifier方法来获取,来获取. 用到场景:工具类打成.jar包的时候,有时候会需要引用到res中的资源,这时候不能将资源一起打包,只能通过反射机制动态的获取资源. public class Resources int getIdentifier (String name, String defType, String defPackage) Return a resource identifier for the given resour…
使用getIdentifier()获取资源Id Android中可以使用getIdentifier()获取资源ID ex: 根据图片名称获取图片Id private int getImageResId(String imageName) { int resID = getResources().getIdentifier(imageName, "drawable", "com.xxxxxx"); return resID; } (注意,imageName不需要有后缀…
有时候我们想动态的根据一个字符串资源名获得到对应的资源id,如根据不同的图片名称获得对应的图片,此时就应该考虑如何实现. 大家知道,在编译Android工程时,系统会自动生成一个静态资源类R,里面根据不同的资源类型有不同的静态内部类,如id,drawable等等,而每个内部类中存放的是对应的16进制的静态资源id属性,而这些属性的属性名就是资源名.常用的方法有两个: 方法一: 利用getResources().getIdentifier(String name,String defType,St…
有时候我们想动态的根据一个资源名获得到对应的资源id,就可以使用getResources().getIdentifier()方法来获取该id.然后再使用该id进行相关的操作. 1.Demo示例 下面用一个小Demo来讲解如何使用getResources().getIdentifier()方法来获取该id. 例如,新建一个Android项目,项目结构部分截图如下所示: MainActivity代码如下: package com.oyp.demo; import android.os.Bundle;…
当我们获取网络数据的时候,解析之后往往都是一个字符串,而不是资源id,所有我们没有办法直接使用,只能通过名称来获取到资源id, package com.example.administrator.demo; import android.content.Context; /** * Created by Administrator on 2017/8/27 0027. */ public class GetResourcesUtils{ /** * 获取资源文件的id * * @param co…
使用getIdentifier()获取资源Id int i= getResources().getIdentifier("icon", "drawable", getPackageName()) ; if(i>0) {Log.i("aa","aa");} else {Log.i("vbv","aa");} 或者 int resID = getResources().getIdent…
Android 获取资源ID的另外一种方法,常规获取ID是在特定的文件夹下面的资源,如果在比较特殊的文件夹下面,就需要其他方法获取ID 了: 使用getIdentifier()方法可以方便的获各应用包下的指定资源ID.主要有两种方法:(1)方式一 Resources resources = context.getResources(); int indentify = resources.getIdentifier(org.loveandroid.androidtest:drawable/ico…