判断资源存在与否如判断一个drawable的图片存在及通过id加载图片
其实这个问题在我的以前的琐碎里已经记录过了
现在拿出来 免得到时候需要的人在找
int i=? getResources().getIdentifier("icon", "drawable", getPackageName()) ;
????? if(i>0)
????? {Log.i("aa","aa");}
????? else
????? {Log.i("vbv","aa");}
?
或者
?int resID = getResources().getIdentifier("org.loveandroid.androidtest:drawable/gallery_photo_1",null,null);
?
第一个参数其实full_package:type/filename_without_ending是这种格式 然后其他的可以为nullint idFlag = getResources().getIdentifier( getPackageName() + ":drawable/flag", null, null); // 或是 int idFlag = getResources().getIdentifier( "flag", "drawable", getPackageName());?
var Drawable[] dw = new Drawable[10]; for (int i = 1; i <= 10; i++) { int id = getResources().getIdentifier( "flag" + i, "drawable", getPackageName()); dw[i-1] = getResources().getDrawable(id); }?用反射发 可以得到 所有的资源
private void _DumpAllResourceIDs(Class<?> classType) throws IllegalArgumentException { Field[] fIDs = classType.getFields(); try { for (int i = 0; i < fIDs.length; i++) { Field fld = fIDs[i]; int nID = fld.getInt(null); Log.d("dbg", classType.getSimpleName() + " " + i + ": " + fld.getName() + "=" + nID); } } catch (Exception e) { throw new IllegalArgumentException(); } }?
import java.lang.reflect.Field; ... _DumpAllResourceIDs(R.layout.class); _DumpAllResourceIDs(R.drawable.class);?结果
R$layout 0: main=2130903040 R$layout 1: small_spinner_dropdown_item=2130903041 R$drawable 0: icon=2130837504?