您的位置:首页 > 其它

判断资源存在与否如判断一个drawable的图片存在及通过id加载图片

2013-07-18 11:26 483 查看



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

 
int resID = getResources().getIdentifier("org.anddev.android.testproject:drawable/bug",null, null); 
// or 
int resID = getResources().getIdentifier("bug", "drawable","org.anddev.android.testproject");
第一个参数其实

full_package:type/filename_without_ending是这种格式 然后其他的可以为null

Java代码  


int idFlag = getResources().getIdentifier(     

      getPackageName() + ":drawable/flag",      

      null, null);     

// 或是     

int idFlag = getResources().getIdentifier(     

      "flag", "drawable", getPackageName());    

 

Java代码  


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

}  

 用反射发 可以得到 所有的资源

Java代码  


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

  }     

}    

 

Java代码  


import java.lang.reflect.Field;     

...     

  _DumpAllResourceIDs(R.layout.class);     

  _DumpAllResourceIDs(R.drawable.class);    

 结果

Java代码  


R$layout 0: main=2130903040    

R$layout 1: small_spinner_dropdown_item=2130903041    

R$drawable 0: icon=2130837504    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: