Android根据字符串型的资源名获取对应资源id

有时候我们想动态的根据一个字符串资源名获得到对应的资源id,如根据不同的图片名称获得对应的图片,此时就应该考虑如何实现.

大家知道,在编译Android工程时,系统会自动生成一个静态资源类R,里面根据不同的资源类型有不同的静态内部类,如id,drawable等等,而每个内部类中存放的是对应的16进制的静态资源id属性,而这些属性的属性名就是资源名.常用的方法有两个:

方法一:

利用getResources().getIdentifier(String name,String defType,String defPackage) 获取

public int  getResource(String imageName){
     Context ctx=getBaseContext();
     int resId = getResources().getIdentifier(imageName, "mipmap", ctx.getPackageName());
     //如果没有在"mipmap"下找到imageName,将会返回0
     return resId;
}

方法二:

使用反射机制获取

public int  getResource(String imageName){
    Class mipmap = R.mipmap.class;
    try {
        Field field = mipmap.getField(imageName);
        int resId = field.getInt(imageName);
        return resId;
    } catch (NoSuchFieldException e) {//如果没有在"mipmap"下找到imageName,将会返回0
        return 0;
    } catch (IllegalAccessException e) {
        return 0;
    }

}

PS:根据资源id获取资源名称:

String resName = getResources().getResourceName(resId);

时间: 2025-01-03 19:16:52

Android根据字符串型的资源名获取对应资源id的相关文章

js根据url查询字符串里的键名获取其值

先来运行结果 下面是页面代码 testJsGetUrlAttribute.html <script> var rout = getUrlAttribute('rout'); if(null!=rout) { alert(rout); } /** * 20150514 14:30 * 作者:Ro * 根据url查询字符串里的键名获取其值 */ function getUrlAttribute(parameName) { //location.search是从当前URL的?号开始的字符串,即查询字

以php中的自增自自减运算符操作(整型,浮点型,字符串型,布尔型,空类型)数据

1 // 环境 2 // 3 // php版本 4 // PHP 7.0.33-0+deb9u1 (cli) (built: Dec 7 2018 11:36:49) ( NTS ) 5 // Copyright (c) 1997-2017 The PHP Group 6 // Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies 7 // with Zend OPcache v7.0.33-0+deb9u1, Copyrig

Android使用getIdentifier()方法根据资源名来获取资源id

有时候我们想动态的根据一个资源名获得到对应的资源id,就可以使用getResources().getIdentifier()方法来获取该id.然后再使用该id进行相关的操作. 1.Demo示例 下面用一个小Demo来讲解如何使用getResources().getIdentifier()方法来获取该id. 例如,新建一个Android项目,项目结构部分截图如下所示: MainActivity代码如下: package com.oyp.demo; import android.os.Bundle;

Android基础入门教程——1.10 反编译APK获取代码&amp;资源

Android基础入门教程--1.10 反编译APK获取代码&资源 标签(空格分隔): Android基础入门教程 本节引言: "反编译Apk",看上去好像好像很高端的样子,其实不然,就是通过某些反编译软件,对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件:不知道你有没有这样做过,看到一个别人的一个APP界面做得很精美,或者你看上别人的图片素材,简单点的,我们可以下载别人的APK,然后改下后缀名,改成xxx.zip,然后解压: 笔者随便解压了一个APK:

&lt;Android&gt;资源的访问,颜色、字符串、尺寸、XML、DRAWABLES资源分使用

1.资源的访问 代码中使用Context的getResources()方法得到Resources对象,访问自己定义的资源R.资源文件类型.资源文件名称,访问系统定义的资源android.R. 资源文件类型.资源文件名称. 在其他资源中引用资源一般格式为@[包名称:]资源类型/资源名称 android:textColor=”@color/opaque_red” 2.颜色资源的使用 1.颜色资源xml的定义 <?xml version="1.0" encoding="utf

Path形状获取字符串型变量数据

Path形状获取字符串型变量数据: var path = new Path(); path.Data = Geometry.Parse("M 100,200 C 100,25 400,350 400,175 H 280");

Android中字符串转换成整型

各种数字类型转换成字符串型: String s = String.valueOf( value);        // 其中 value 为任意一种数字类型. 字符串型转换成各种数字类型: String s = "169"; byte b = Byte.parseByte( s ); short t = Short.parseShort( s ); int i = Integer.parseInt( s ); long l = Long.parseLong( s ); Float f

Android ListView 和 Adapter 从本地/网络获取歌曲列表

本文内容 环境 项目结构 演示1:SimpleAdapter 演示2:BaseAdapter 演示3:customlazylist 演示4:customcompletelazylist 本文只给出演示概要,代码太多,贴出来意义不大,自己下载调试一下,点击此处下载. 本文通过四个示例,循序渐进地演示,将歌曲列表加载到 ListView 控件,歌曲列表,包括缩略图.歌手名.歌曲名等信息,或存放在本地,或以 JSON 形式存放在网络. 环境 Windows 2008 R2 64 位 Eclipse A

有关包装类拆箱、装箱和整型与字符串型之间的转换

原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5462489.html 1.8种基本数据类型都有各自的包装类,其对应关系为: 基本————————————包装类 byte————————————Byte short———————————Short char————————————Char int————————————Integer long————————————Long float————————————Float double———