zoukankan      html  css  js  c++  java
  • 变量动态选取资源ID

    1、使用Resources 类的 getIdentifier方法 

           Resources res=getResources(); 
           return res.getIdentifier(type,"drawable",getPackageName());

          //这里type代表变量名称,getPackageName()替换为你的R资源文件所在的包名;
    getResources方法是来自于contenxt(也就是Activity类),它直接可以返回一个Resouces对象。而Resouces的getIdentifier方法可以返回R.java中的任何资源id,当然,你必须指定3个参数:字段名,类名,包名。包名指定了的 全限定名的包名部分,如果R 的全限定名为 android.R 或者 com.company.R,则包名在这里就是“android”或“com.company”。getPackageName其实是this.getPackageName(),它直接返回本类的包名。 
    类名则是资源所属的类。比如我们知道的,在R.java 类中的几个固定的类:drawable、id、string、layout等,在它们下边又定义了许多资源id。 
    字段名则是资源id的名字。比如这个资源id定义: public static final int del=0x7f020002; 
    del就是一个资源id的名字,0x7f020002则是它的16进制值。 
    通过3个参数,getIdentifier 方法就可以通过比较动态的方式获得资源id。 

     
     2、通过反射来获取 
         
    try{ 
      Field field=R.drawable.class.getField(type);//变量名称 
      int i= field.getInt(new R.drawable()); 
      return i; 
    }catch(Exception e){ 
      Log.e(tag,e.toString()); 
      return R.drawable.unknow; 
    }
    

      

  • 相关阅读:
    Java Native Method
    SQL语句优化
    Ibatis的环境搭建以及遇到的问题解决
    Java 构建器
    SpringMVC自定义视图 Excel视图和PDF视图
    java 枚举的常见使用方法
    mysql 根据某些字段之和排序
    MFC The Screen Flickers When The Image Zoomed
    How To Debug Qmake Pro File
    Gcc And MakeFile Level1
  • 原文地址:https://www.cnblogs.com/ghimtim/p/4739596.html
Copyright © 2011-2022 走看看