假如在drawable目录下放一个图片文件,由于一些原因,我们在程序中仅仅知道它的文件名,而不知道它的资源ID,当我们需要这个资源ID的时候,可以使用下面的一行代码获取到:
方法一:
/**
* 获取图片名称获取图片的资源id的方法
* @param imageName
* @return
*/
public int getResource(String imageName){
Context ctx=getBaseContext();
int resId = getResources().getIdentifier(imageName, "drawable" , ctx.getPackageName());
return resId;
}
方法二:
/**
* 获取图片名称获取图片的资源id的方法
* @param imageName
* @return
*/
public int getResourceByReflect(String imageName){
Class drawable = R.drawable.class;
Field field = null;
int r_id ;
try {
field = drawable.getField(imageName);
r_id = field.getInt(field.getName());
} catch (Exception e) {
r_id=R.drawable.b_nothing;
Log.e("ERROR", "PICTURE NOT FOUND!");
}
return r_id;
}
- getResources().getResourceName(resid)
分享到:
相关推荐
1. **获取资源ID**:通过反射机制获取到`R.drawable`类中对应图片名称的资源ID。 2. **设置资源**:利用获取到的资源ID将图片设置到视图组件上。 #### 代码详解 下面是一段示例代码,演示了如何通过图片名称动态...
在这种情况下,我们有两种方法可以实现:第一种是使用 if-else 语句来比较字符串变量名,从而确定要显示的图片的资源 ID。这是一种比较简单的方法,但问题是需要写很多的 if-else 语句,代码看起来非常混乱。 第二...
- **定义**:颜色在XML中可以通过两种方式定义:`<drawable>`节点作为Drawable使用,可以设置视图背景色;`<color>`节点定义颜色字符串值。 - **ColorDrawable**:一种简单的Drawable资源,可以在XML的`<resources>`...
本文将介绍两种实现Android图片选择的方式。 1. **单张图片选择** 单张图片选择通常通过隐式启动一个Activity来实现,让用户从手机相册中选择一张图片。以下是一个关键代码示例: ```java private static ...
5. **在代码中使用资源(Using Resources in Code)**:在Java代码中,可以使用`getResources()`方法来获取资源对象,然后使用该对象来访问资源。 6. **引用资源(References to Resources)**:在XML布局文件中,...
通常,有两种主要的方法来实现在聊天应用中展示表情:一种是通过.zip文件解压后识别表情,另一种是从drawable资源中直接获取表情图像。下面我们将详细探讨这两种实现方式。 1. **.zip文件解压识别** 这种方法适用...
其中`check`和`checknull`是两个具体的图片资源文件名,分别表示选中和未选中的状态图。 #### 设置RadioButton的背景 接下来,需要在布局文件中定义RadioButton,并为其设置背景: ```xml android:id="@+id/...
自定义 Button 按钮显示样式可以通过两种方式实现:一种是使用图片,另一种是使用 XML 文件定义不同的样式。 使用图片实现自定义 Button 按钮显示样式: 在 Android 中, Button 控件的样式可以通过修改其 ...
在Android应用开发中,更换皮肤是一项常见的需求,它允许用户根据个人喜好自定义应用的外观。本文将深入探讨如何通过zip文件实现这一功能,主要涉及的技术包括资源管理、ZipFile类的使用以及动态加载。 首先,皮肤...
根据提供的文件名,大部分是QQ截图,可能包含了一些应用的界面设计、功能展示或者错误处理的画面,对于理解应用的外观和操作流程有很大帮助。"appcodes.cn源码说明.txt"可能包含了关于源码的详细解释,提供了一些...
在Android中,外部存储路径通常分为两种:内部存储(Internal Storage)和外部存储(External Storage)。内部存储通常用于存储私有数据,外部存储用于共享数据。例如,如果你想将文件复制到内部存储,可以使用`...
综合两种方法,`res/raw`更适合那些不需要保持原始文件名和目录结构的小型或中型文件,而`assets`目录则适合存放大型文件或需要保留原始文件结构的情况。在实际开发中,开发者应根据项目需求和文件大小选择合适的...
在Android软件开发中,创建一个图片滑动展示的引导页是一种常见的用户界面设计,它可以向初次使用的用户介绍应用的主要功能。在这个"android软件开启,图片滑动说明"中,我们将会探讨如何通过两个核心类——`...
在Android中集成微博SDK时,我们首先需要在微博开放平台注册我们的应用,获取到App Key(应用ID)和App Secret(应用密钥)。这两个参数是连接应用与微博账户的关键,它们用于验证应用的身份并生成访问令牌(Access ...
文件名"WallPaper"可能表示数据模型类,用于存储每个单元格的数据,比如图片资源ID和文本信息。你可以创建一个如下的简单数据类: ``` public class WallPaper { private int imageResourceId; private String ...
本文主要探讨了如何读写位于`assets`目录下的文件,这是Android应用程序中存放非编译资源的一种方式。与`res`目录不同,`assets`目录下的文件不会被编译并生成对应的R类ID,因此访问它们需要不同的方法。 首先,...
- XML解析:Android提供两种解析方式,DOM(文档对象模型)和Pull解析器。Pull解析器适用于流式处理,节省内存。学习如何创建`PullParser`,读取XML标签和属性。 8. **Bundle**: - 数据传递:`Bundle`用于在...
在Android开发中,`merge`和`include`是两种非常重要的布局管理工具,它们能够帮助开发者更有效地管理和优化布局文件,提高代码的可维护性和性能。这篇博客将深入讲解这两个概念,以及它们如何在实际项目中应用。 ...
`ProgressBar`和`ProgressDialog`是Android系统提供的两种显示进度的方式,用于告知用户操作正在进行并提高交互感。在Android 4.2版本中,这些组件已经相当成熟,可以方便地集成到应用中。 `ProgressBar`是Android...
首先,Android应用的核心是基于Java或Kotlin语言编写的,因此在源码中,我们很可能会看到这两者中的一种或两种语言的使用。开发者可以通过阅读源码学习到如何使用Android SDK来创建活动(Activity)、服务(Service...