通过Id获取资源

1.有些地方设置颜色的时候只能用0x开头的int类型数据咋办呢

可已在value的String类型下定义0x开头的String类型数据然后通过Color.parseColor()将String类型数据转化为int类型的颜色值


2.通过给定的Activity名称获取指定的Activity或者跳转到指定的Activity

String name = getPackageName() + activityName;
cls = Class.forName(name);
Intent intent = null;
intent = new Intent(HomeActivity.this, cls);
startActivity(intent);
getPackageName()获取到当前的包名,然后后面加上指定的Activity名称即可,如果指定的Activity不是“直接“”在 getPackageName()获取的包名下,可以将指定Activity所在的包提出来,然后加"."包名.Activity即可


3.获取指定的资源的id

getResources().getIdentifier(String name, String defType, String defPackage)

可以获取指定资源的id,例如

getResources().getIdentifier("image", "mipmap", getPackageName());

第一个参数是资源的名称,第二个参数是资源所在的包,如上是在mipmap下的一张image名称的图片,第三个参数就是所在的包名

如下是获取指定的颜色

int colorId = getResources().getIdentifier("colorPrimary", "color", getPackageName());

mBtnSetColor.setTextColor(getResources().getColor(colorId));

通过反射机制获取资源的id

public int  getResource(String imageName){
    Class mipmap = R.mipmap.class;
    try {
        Field field = mipmap.getField(imageName);
        int resId = field.getInt(imageName);
        return resId;
    } catch (NoSuchFieldException e) {//如果没有在"mipmap"下找到imageName,将会返回0
        return 0;
    } catch (IllegalAccessException e) {
        return 0;
    }

}

4.通过id获取指定资源的名称

String resName = getResources().getResourceName(resId);



猜你喜欢

转载自blog.csdn.net/u013802387/article/details/78801572