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

      

  • 相关阅读:
    Linux安装RabbitMQ3.8.7
    VS安装Resharper,使用IDEA风格的快捷键,还需修改的快捷键
    Spring Boot Starter开发
    windows安装redis集群
    spring为bean指定InitMethod和DestroyMethod的三种方法
    spring注入的方式总结
    bean运行时值注入
    CodeForces 1569C Jury Meeting
    CodeForces 1569B Chess Tournament
    CodeForces 1569A Balanced Substring
  • 原文地址:https://www.cnblogs.com/ghimtim/p/4739596.html
Copyright © 2011-2022 走看看