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

Android TextView的drawLeft、drawRight.. Android 通过Java设置TextView的drawLeft,drawRight,drawTop,drawBottom等。 阅读详情

在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,然后就可以使用了,是不是很简单!

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

根据图片名称获取在drawable中的ID 写个简单的天气预报抓取,将不同的城市在fragment中显示,不同日期用listviewadapter来绑定,其中对天气状况用图片时需要用到 根据图片名字来获取其id ,然后调整大小,再显示出来。在网上搜了数种方法,最后可用的: private int getImageid(String imageName){ int id=0; ApplicationInfo app... 阅读详情

相关推荐

74LS161/48 交通灯控制系统:30-5-20-5 时序逻辑电路 Multisim 仿真验证

本文详细解析了基于74LS161/48芯片的交通灯控制系统设计,通过Multisim仿真验证30-5-20-5时序逻辑电路。从系统架构搭建、状态机实现到波形分析,提供全流程操作指南与典型问题排查方法,助力数字电路课程设计高效完成。

weixin_26742753的博客 380

Android如何设置背景图片

一、通过XML文件(优先级最高,不会影响到其他activity) 在activity的xml配置文件中添加 android:background="@drawable/bg",bg是我drawable文件夹下的一个图片名。 这里提醒一下大家,图片名必须以java的变量名命名规范(由数字、字母、下划线、$组成,不能以数字开头)来命名,否侧会报错。 二、通过代码动态加载 第一种方式:...

唐流雨的博客 4万+

海康威视摄像头网线连接笔记本电脑,客户端提示:1连接设备失败。设备不在线或网络原因引起的连接超时等。(HCNetSDK.dll[7].)解决方案

1.环境 电脑:联想笔记本电脑(win10系统) 摄像头:海康威视DS-2CD3T20D-i5,4mm 连接方式:直接用网线将摄像头和摄像头连接 2.问题: 客户端出现如下提示: 3. 解决流程: 1.确认网线是否有问题:我的网线指示灯常亮,并且设备能够被搜索到,只是一直显示离线 2.按照网上教程直接配置摄像头的ip地址与电脑同一网段:登录失败。 错误码为 HCNetSDK.dll[7].(连接设备失败。设备不在【海康威视吧】_百度贴吧 失败了,没有反应 3.查看有线网卡的地

weixin_48911487的博客 3万+

Android学习(二)Android中的Drawable资源

简介 在Android应用中,常常会用到Drawable资源,比如图片资源等,在Android开发中我们是用Drawable类来Drawable类型资源的。 Drawable资源一般存储在应用程序目录的\res\drawable目录下,当然依据分辨率的高低可以分别存储不同分辨率的资源到如下几个目录: \res\drawable-hdpi \res\drawable-ldpi \res\draw...

weixin_30918415的博客 483

基于STM32的多普勒雷达测速

基于多普勒雷达传感器,以STM32单片机为主控芯片,根据不同模块检测距离的不同,使用不同多普勒雷达传感器实现对远近距离车辆行驶速度及方向的测量。 1、基础知识 无线电探测和测距,是用无线电(电磁波)方法发现目标并测定其空间位置的装置。随着雷达技术的发展,现代雷达不仅可以对目标进行定位,还可以测量目标的速度、对目标进行成像甚至测量目标的大小和材料特性。所有利用雷达波来检测物体速度的原理,其理论基础皆源自于“多普勒效应”,...

weixin_52801934的博客 6315

逆向实战:如何绕过iTunes 12.6.5.3的反调试机制(附X64dbg插件配置)

本文深入剖析了iTunes 12.6.5.3的反调试机制与登录协议。通过X64dbg动态调试与IDA静态分析,详细演示了如何绕过其反调试检测,并定位到核心的登录协议加密函数,揭示了其请求签名(X-Apple-ActionSignature)的生成逻辑与依赖关系,为客户端安全研究与协议分析提供了实战思路。

weixin_29202213的博客 742

android 获取对象id,android-获取ImageVi中可绘制对象的ID

android-获取ImageVi中可绘制对象的ID我有一个imgtopcolor并在其上设置了一个可绘制对象。 现在,我需要动态获取ImageView的click事件上的drawable的ID。 我怎么才能得到它?imgtopcolor = (ImageView) findViewById(R.id.topcolor);imgtopcolor.setImageResource(R.drawabl...

weixin_39964573的博客 452

Xilinx Blockset Counter计数器模块使用及参数配置

本文详细介绍了Simulink中Xilinx Blockset库Counter模块的使用以及参数说明。

白码王子小张的博客 1096

android 从imageview中拿到drawable或bitmap

Bitmap bm=((BitmapDrawable)imageView.getDrawable()).getBitmap();

愤怒的油条 3093

Reactor 响应式编程(第一篇:Reactor核心)

响应式:响应式编程: 全异步、消息、事件回调默认还是用当前线程,生成整个流、发布流、流操作.log();//只要不指定线程池,默认发布者用的线程就是订阅者的线程;

moments的博客 1572

18、深入解析航空飞行数据中的秘密:从数据清理到高级分析

本文详细解析了如何使用R语言处理和分析航空飞行数据,从基础的数据清理到复杂的回归分析和机器学习模型构建。文章涵盖了探索性数据分析、天气数据的整合、地理信息可视化、时间序列预测以及航班延误的优化策略等内容,展示了如何通过数据挖掘技术提高航空运营效率和乘客满意度,并探讨了数据质量评估与隐私保护的重要性。

convnet3designer的博客 107

Android通过拼接名字获取drawable下的图片(根据图片名称获取在drawable中的ID)

Android通过drawable下图片名字获取图片,可以通过拼接名字获取图片:   //得到application对象   ApplicationInfo appInfo = getApplicationInfo();   //得到该图片的id(name 是该图片的名字,"drawable" 是该图片存放的目录,appInfo.packageName是app的包名)

Billy_Zuo的博客 9497

LPDDR6 Efficiency Mode 技术探讨

LPDDR6 Efficiency Mode 技术探讨

zilan23的博客 1160

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

今天和小伙伴讨论的时候遇到一个问题,就是根据后台返回的值,app动态去设置图片,然后后台返回的值中有一个string, 例如v0,和我们图片名字的一部分相似,如img_v0, 如何去动态设置呢,这里牵扯到一些东西,我们可以根据名字去找到对应资源的ID,从而动态设置资源,没有什么不可能 方案一: 利用getResources().getIdentifier(String name,String defType,String defPackage) 获取 public int getResource(Stri

u013095264的博客 1731

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

通过图片名字,获取图片在drawable中的ID,以及通过ID获取图片名字的方法

记录一个Android方法,通过已知的图片名字,去获取这个图片在drawable中的ID,然后把他设置到ImageView中。方法虽然简单,但是很实用。

LjingDong的博客 1347

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

android开发:如何通过drawable中的图片名字(String类型)来获得它的Id

首先,在开发一个app的时候,需要将用户设置的背景图片信息保存在配置文件(sharedPreference)中,其中名字的类型为String类型,一直不知道如何通过String来获得图片的Id。 最后,总结有两个方法: 方法一: 不将图片的名字保存,直接保存她的Id,sharedPreference可以保存String、Int、Boolean。所以直接保存他的Id就可以了。 方法二: 如

u012386199的专栏 6067

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android 指定资源id,Android 通过名称获取资源ID

当我们获取网络数据的时候,解析之后往往都是一个字符串,而不是资源id,所有我们没有办法直接使用,只能通过名称来获取到资源id,package com.example.administrator.demo;import android.content.Context;/*** Created by Administrator on 2017/8/27 0027.*/public class GetR...

weixin_35621884的博客 892

Android动态批量加载Drawable中的图片

点击蓝字关注我们前阵子因为项目原因,也一直在更新C#相关的东西,现在项目先告一段落,我们再回到Andriod这块,先说一下,最近的几篇更新最终都会围绕一个小程序来进行的知识点分解 。目标...

Vaccae的博客 2178

Android中的Drawable资源

在Android应用中,常常会用到Drawable资源,比如图片资源等,在Android开发中我们是用Drawable类来Drawable类型资源的。 Drawable资源一般存储在应用程序目录的\res\drawable目录下,当然依据分辨率的高低可以分别存储不同分辨率的资源到如下几个目录: \res\drawable-hdpi \res\drawable-ldpi \res\dra

8万+

android 模糊读取文件名_Android根据Drawable中的文件名称获取文件

今天遇到一个奇怪的需求,根据文件名称来设置本地图片详细解释一下就是:提前把N张图片放到 本地的drawable目录中,然后根据服务器返回的文件名称来展示对应的图片思路分析:Android中获取到各种图片资源也好,文字资源也罢,我们常见的findViewById操作也一样,最终都是通过资源(控件)的Id来找到对应的对象的,如果我们能通过图片名称获取到图片的id,那么我的需求即可实现然后,我打开了万能...

weixin_33514582的博客 242

Android中 Bitmap Drawable Paint的获取、转换以及使用

比如Drawable中有一系列连续的图片,img_0.png, img_1.png, img_2.png ... 如果要动态获取这些图片,通过"R.drawable.img_x"的ID方式指定是不行的,因为这个ID无法动态变化,即你是无法通过字符串拼接的方法来实现的。 但可以通过下面方式获取: String imgname = "img_" + idx; int imgid = get

军军同学的专栏 7343

android批量获取res文件中的drawable图片

###工具类 import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.Drawable; import com.example.administrator.oujiademo.R; import java.lang.reflect.Field;...

JokeProgress的博客 2273

Android中,根据图片名称获取res文件夹中的图片

//首先取得ApplicationInfo 对象 ApplicationInfo applicantionInfo = getApplicationInfo(); //取得该图片的id  (name 指定图片的名称,"drawable"指定图片存放的目录,appInfo.packageName指定应用程序的包名) int resID =getResources().getIdentifier

自由人 4010

Android:根据图片的名称获取对应的资源id

/** * 根据图片的名称获取对应的资源id * @param resourceName * @return */ public int getDrawResourceID(String resourceName) { Resources res=getResources(); int picid = res.getIdentifier(resourceName,"dra

小小小石头的专栏 4850
上一篇: Android侧滑菜单的实现
下一篇: 设置ActionBar的背景色
潘建成
博客等级 码龄12年 139粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值