Android根据图片的名字获取对应的资源ID

news/2024/11/16 18:06:54/

最近在做项目时遇到这样一个问题,需要通过图片的名字(example:main_pic.png)获取图片在R文件中的id(example:R.mipmap.main_pic或者R.drawable.main_pic),然后返回一个Drawable对象去设置控件背景。对此我也没什么思绪,于是乎去问了度娘,找到了一位前辈的博文https://www.cnblogs.com/caobotao/p/5041713.html,这里为了自己以后方便查找做下笔记。
方案一:
利用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,将会返回0return 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,将会返回0return 0;} catch (IllegalAccessException e) {return 0;}
}

http://www.ppmy.cn/news/720612.html

相关文章

apkrenamer_不怕应用名字乱 在手机端轻松给APK重命名

很多Android手机用户都喜欢收集APK安装包并保存在存储卡内。可是,网上下载的APK大都以英文或乱码命名,管理起来好不麻烦。那么,无需借助PC,我们能否在手机端直接简单且批量地给APK改名吗? 混乱的APK名字 由于笔者手机流…

修改Android app名字(Android Studio)

在Android Studio中,项目的versionCode 和versionName 的控制不是在AndroidManifest.xml清单文件中更改的,而是在项目的build.gradle中更改的。 修改res–values–strings.xml 中的app_name即可,中文也可。如下: android:label”string/a…

oppo手机热点Android,手机热点怎么改名字(图文)

【导读】手机热点怎么改名字,下面就是191路由网整理的网络知识百科,来看看吧! 大家好,我是191路由器网小编,上述问题将由我为大家讲解。 以OPPO手机为例,手机热点改名字的方法如下: 1、在手机设…

Android获取手机通讯录的信息(姓名和改姓名下的所有手机号)

Android获取手机通讯录的信息(姓名和改姓名下的所有手机号 1.实现过程2.实现代码 1.实现过程 1 定义一个专门存储信息的对象类,有姓名,首字母和手机号列表 2 通过获取手机的读写权限,然后来获取手机通讯录信息 2.实现代码 1.对象存储类 import java.util.List;public class…

获取iPhone手机当前连接的WiFi名称

直接上代码 #import <ifaddrs.h> #import <arpa/inet.h> #import <SystemConfiguration/CaptiveNetwork.h> (NSString *)wifiName{NSString *wifiName "Not Found";CFArrayRef myArray CNCopySupportedInterfaces();if (myArray ! nil) {CFDict…

获取手机上其他应用的图标,名字。用RecyclerView整合

左一效果图。左2MainActivity ---------------------------------//app信息工具类--------------------------------------- import android.graphics.drawable.Drawable; import java.io.Serializable; public class AppInfo implements Serializable {/** 序列号 */private…

大神救救我 手机通讯录 输3之后输个名字就运行不了了

#include<stdio.h> #include<stdlib.h> #include<windows.h> #include<assert.h>//用来解决程序终止问题&#xff0c;查阅网上资料得到 #define M 100 #define N1 20 #define N2 30 #define N3 30 char title[100]; void OPEN();//总运行 void menu1()…

安卓手机搭建一个服务器:按名字查询成绩

前提说明 使用PC机搭建一个服务器比较方便。其实手机端的文件互传更为普遍&#xff0c;最早的快牙&#xff0c;到现在的QQ面对面、小米快传、屏幕投射&#xff0c;都能通过“同一个WiFi”&#xff0c;又快又好地干许多意想不到的事。而将这一特性用于单独的移动端服务器还不普…