当前位置: 首页 > article >正文

Android中根据字符串动态获取资源文件ID

有时候想在代码运行的时候根据资源名称去获取id从而使用调用资源文件。

Resource中的getIdentifier()可以解决这个问题

    public int getIdentifier(String name, String defType, String defPackage) {
        return mResourcesImpl.getIdentifier(name, defType, defPackage);
    }

使用方法:

   int resId = context.getResources().getIdentifier(paramString,
          "mipmap", context.getPackageName());

除了上面案例中的mipmap可以这样使用之后,以下类型的都可以

  • layout
  • string
  • array
  • drawable
  • style
  • id
  • color
  • attr
  • styleable
  • mipmap

封装工具类

public class ResourceUtil {
 
	public static int getLayoutId(Context context, String resName) {  
        return context.getResources().getIdentifier(resName, "layout",  
                context.getPackageName());  
    }  
  
    public static int getStringId(Context context, String resName) {  
        return context.getResources().getIdentifier(resName, "string",  
                context.getPackageName());  
    }
 
    public static int getArrayId(Context context, String resName) {
        return context.getResources().getIdentifier(resName, "array",
                context.getPackageName());
    }
 
    public static int getDrawableId(Context context, String resName) {  
        return context.getResources().getIdentifier(resName,  
                "drawable", context.getPackageName());  
    }  
      
    public static int getStyleId(Context context, String resName) {  
        return context.getResources().getIdentifier(resName,  
                "style", context.getPackageName());  
    }  
      
    public static int getId(Context context, String resName) {  
        return context.getResources().getIdentifier(resName,  
                "id", context.getPackageName());  
    }  
      
    public static int getColorId(Context context, String resName) {  
        return context.getResources().getIdentifier(resName,  
                "color", context.getPackageName());  
    }
 
    public static int getAttrId(Context context, String resName) {
        return context.getResources().getIdentifier(resName,
                "attr", context.getPackageName());
    }
 
    public static int getStyleableId(Context context, String resName) {
        return context.getResources().getIdentifier(resName,
                "styleable", context.getPackageName());
    }

 
    public static int getMipmapId(Context context, String resName) {
        return context.getResources().getIdentifier(resName,
                "mipmap", context.getPackageName());
    }
}


http://www.kler.cn/a/147787.html

相关文章:

  • Java中 LinkedList<>,ArrayDeque<>的区别 || Queue和Deque的区别
  • 二分查找--快速地将搜索空间减半
  • 微信小程序——01开发前的准备和开发工具
  • 基于node一键发布到服务器的js脚本
  • datastage在升级版本到11.7之后,部分在11.3上正常执行的SP报错SQLSTATE = 22007: 本机错误代码 = -180
  • git没有识别出大写字母改成小写重命名的文件目录
  • 食品行业研发知识管理:企业网盘的选择与优势
  • 人民币已初步具备了国际使用的网络效应/首批疏解的在京部委所属4所高校雄安校区开工建设/墨茉点心局撤出北京市场
  • python读取PDF文件中的指定页码的范围并存储到指定的文件名
  • Rust语言入门教程(七) - 所有权系统
  • 阅读笔记——《Removing RLHF Protections in GPT-4 via Fine-Tuning》
  • C# 实现微信退款及对帐
  • QT 界面切换
  • C++相关闲碎记录(1)
  • 图形编辑器开发:缩放和旋转控制点
  • base64 前端显示 data:image/jpg;base64
  • MySQL-02-InnoDB存储引擎
  • git-3
  • visual c++ 2019 redistributable package
  • screen无法翻页的问题
  • MySQL表的操作『增删改查』
  • JAXB的XmlAttribute注解
  • 【Python】Vscode解决Python中制表符和空格混用导致的缩进问题
  • 如何通过内网穿透实现公网远程ssh连接kali系统
  • 才聚免费为你招聘,用人单位看过来!
  • 011 OpenCV warpAffine