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