通过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);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值