Android开发中根据图片名称获取在drawable中的ID

在Android开发中图片资源是必不可少的,如ImageView需要图片资源的ID,ImageButton需要资源的ID等等,我们可以用R.drawable.XXX可以获取图片资源的ID,但是,在某些时候,这样做很费时,我们想动态的获得资源ID,比如说,我传入一个图片名称的字符串,根据字符串来获得资源的ID这样就很方便了,没错,这样确实很方便,我们如果对图片的名称稍加改动,比如用img1.png,img2.png,img3.png...这样就可以在一个循环之内获得所有的ID,对开发来说少写的就不是几行代码这么简单了。

好了,我来给大家说一下实现的方法。这种实现的方法主要是用java提供的反射机制来实现的,不得不说,反射机制是在是太强大了,这叫会用的人才明白它的好处(我也不是太会用,这是明白一点小用法,比如这篇文章说的用法)。不会反射的也没关系,我接下来要写的一些代码可以通用,只需要稍加改动就可以用到自己的开发中。

代码如下:

public class MainActivity extends Activity {

	private ImageView mView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mView = (ImageView) findViewById(R.id.view);
		Class drawable = R.drawable.class;
		Field field = null;
		try {
			field = drawable.getField("background");
			int res_ID = field.getInt(field.getName());
			mView.setImageResource(res_ID);
		} catch (Exception e) {}

	}

}

在上面的代码中,我们首先获取R.drawable类的一个引用,把它赋值给Class类的一个对象。然后生成Field类的一个对象,根据图片的名称可以获得该成员变量,然后就可以获得该成员变量的值了,也就是ID,然后就可以使用了,是不是很简单!

经过我本人测试没有问题,可以正常使用,如有问题,欢迎大家和我交流!^_^

时间: 2024-12-25 10:51:04

Android开发中根据图片名称获取在drawable中的ID的相关文章

android 开发 解码gif图片,获取每帧bitmap

使用方法: void showGif2() { gifDecoder = new GifImageDecoder(); try { gifDecoder.read(this.getResources().openRawResource(R.drawable.b17)); //这是Gif图片资源 int size =gifDecoder.getFrameCount(); for(int i=0;i<size;i++) { ImageView iv_image = new ImageView(Cus

ResDrawableImgUtil【根据图片名称获取resID值或者Bitmap对象】

版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 根据图片名称获取项目的res/drawable-xxdhpi中相应资源的ID值以及bitmap值的封装类. 效果图 代码分析 根据图片名称获取图片的resID值有两个方案,选其一即可. 使用步骤 一.项目组织结构图 注意事项: 1.导入类文件后需要change包名以及重新import R文件路径 2.Values目录下的文件(strings.xml.dimens.xml.colors.xml等),如果项目中存在,则复制里面的内容,不要整

[转]Android开发要看的网站(不断更新中)

Android网址或Blog Android官网 身为Android开发者不知道这个网站就太说不过去了,上面有你任何你需要的东西 Android Developers Blog Android官网博客, 在上面可以关注Android最新的进展与最权威的博客(须翻墙) Android开源项目汇总 我的好朋友Trinea整理的非常全面的GitHub开源项目汇总,不需要重复发明轮子,尽情遨游在开源世界里吧 Android的开源库 国外整理的Android开源库汇总,和上面的比起来分类更明确,你总能很方

Android开发如何在4.0及以上系统中自定义TitleBar

本文将通过一个实例讲解怎么实现在4.0及以上系统版本中实现自定义TitleBar,这只是我自己找到的一种方法; xml布局文件 activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="m

Android开发工程师文集-1 小时学会各种Drawable

前言 大家好,给大家带来Android开发工程师文集-1 小时学会各种Drawable的概述,希望你们喜欢 Drawable介绍 Drawable为抽象类,drawable与view有区别的地方,主要是体现事件和交互性上面. view是面向用户的,是可见的控件,能给它添加点击事件.drawable则相反,不能面向,也不可见,也不能添加点击事件. drawable有好多子类,drawable为抽象类,所以有很多子类来继承它. 主要原理方法 draw() setBounds() BitmapDraw

Android开发之实现图片自动滚动显示标签的ViewPager

Android中实现图片自动滚动的效果非常的常见,我们可以自己动画去实现功能.但是在Android中提供了一个ViewPager类,实现了滚动效果,在Android的extras目录下android-support-vx.jar中,x代表版本4,7等等.使用时我们需要android.support.v4.view.ViewPager的viewPager标签. 博客来源:http://blog.csdn.net/fengshizty 代码非常的简单,不用解释: xml布局文件如下: <Relati

Android开发,使用背景图(xml drawable)为view 设置边框

Android 开发中,遇到需要设置边框的情景,使用背景图来实现,代码如下: <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 连框颜色值 --> <item> <shape> <solid android:color="#CCCCCC" /> </shape> </item>

Android开发(51) 摄像头自动对焦。在OpenCV图像识别中连续拍照时自动对焦和拍照。

概述 对焦,这里所说的“焦”是指“焦距”.在拍照时,一定是需要调焦的.一般会在目标位置最清晰的时候会停止对焦.最近在处理OpenCV进行图像识别时,需要连续的调焦(对焦),并在对焦完成后进行拍照,获取图片后进行图像识别.识别完成后摄像头不关闭继续进行扫描识别.整理成本文. 概念 焦距,也称为焦长,是光学系统中衡量光的聚集或发散的度量方式,指从透镜中心到光聚集之焦点的距离.亦是照相机中,从镜片光学中心到底片.CCD或CMOS等成像平面的距离.具有短焦距的光学系统比长焦距的光学系统有更佳聚集光的能力

Android开发—已root的手机获取data路径

开发android的时候,尽管手机已经root但是DDMS中还是没有data/data路径怎么办? 可以用cmd命令提示符为逐个文件夹设置权限: 打开cmd,输入 adb shell  回车—> su 回车—> chmod 777 /data 回车—> chmod 777 /data/data 回车—> chmod 777 /data/data 回车—> chmod 777 /data/data/你的app包名 回车—> 完成! 如果想要在你的包名中新建一个文件夹,参考