为了灵活显示图片,往往会通过设置一些变量来实现,而字符串是比较经常被使用到的
下面介绍2种通过字符串显示图片的方法
1. 使用Resources 类的 getIdentifier方法
Resources res=getResources();
return res.getIdentifier(type,"drawable",getPackageName());//这里type代表变量名称,getPackageName()替换为你的R资源文件所在的包名
getResources方法是来自于contenxt(也就是Activity类),它直接可以返回一个Resouces对象。而Resouces的getIdentifier方法可以返回R.java中的任何资源id,当然,你必须指定3个参数:字段名,类名,包名。包名指定了的 全限定名的包名部分,如果R 的全限定名为 android.R 或者 com.company.R,则包名在这里就是“android”或“com.company”。getPackageName其实是this.getPackageName(),它直接返回本类的包名。
类名则是资源所属的类。比如我们知道的,在R.java 类中的几个固定的类:drawable、id、string、layout等,在它们下边又定义了许多资源id。
字段名则是资源id的名字。比如这个资源id定义: public static final int del=0x7f020002;
del就是一个资源id的名字,0x7f020002则是它的16进制值。
通过3个参数,getIdentifier 方法就可以通过比较动态的方式获得资源id。
2. 通过反射来获取
try{
Field field=R.drawable.class.getField(type);//变量名称
int i= field.getInt(new R.drawable());
Log.d(tag,i+"");
return i;
}catch(Exception e){
Log.e(tag,e.toString());
return R.drawable.unknow;
}
分享到:
相关推荐
通过字符串变量名获取资源ID 在 Android 开发中,资源是指那些存储在 res 目录下的文件,如图片、字符串、布局等。这些资源都可以通过 R.java 文件中的静态变量来访问。然而,在某些情况下,我们可能需要通过字符串...
在某些情况下,可能需要动态获取资源ID,比如当资源ID由变量决定时。这时可以使用Java的反射机制来实现。以下是一段示例代码: ```java String type = "close"; // 可能的值有"close"、"edit"、"icon"等 try { ...
1. **获取资源ID**:通过反射机制获取到`R.drawable`类中对应图片名称的资源ID。 2. **设置资源**:利用获取到的资源ID将图片设置到视图组件上。 #### 代码详解 下面是一段示例代码,演示了如何通过图片名称动态...
1. **反射(Reflection)**:当需要在运行时根据变量动态获取资源ID时,可以使用Java反射机制。例如,假设有一个变量`String type = "close"`,你可以通过以下代码获取相应的资源ID: ```java try { Field field ...
在Android中,我们通常通过JNI来调用C/C++库,实现高性能计算或者底层系统功能。 要从NDK访问Java实例的成员变量,我们需要以下步骤: 1. **创建JNI接口**:在Java类中声明native方法,并使用`JNIEXPORT`和` ...
在Android开发中,获取控件的ID(标识符)是一项基本操作,这使得开发者能够对UI元素进行操作,如设置文本、监听用户交互等...通过合理地获取和使用控件ID,以及动态获取资源值,可以有效地提高代码的可读性和维护性。
在开发过程中,需要注意网络权限的获取,因为Android应用需要`INTERNET`权限才能连接到MQTT服务器。此外,考虑到电池寿命和用户体验,需要合理管理网络连接,例如在后台运行时关闭不必要的连接,或使用连接保持策略...
总结起来,这个例子展示了如何通过反射在Android中根据图片名称动态获取资源ID,并将其显示在ImageView上。这种方法虽然不太常见,但在某些特定场景下,如动态加载资源或处理未知资源名时,可能会非常有用。但要注意...
通过`getDrawable(id)`方法可以获取资源,注意这里的图像可能会被aapt工具自动优化。 - **res/layout**:包含XML布局文件,定义了屏幕布局或界面组件的结构。 - **res/values**:XML文件,用于定义颜色、尺寸、...
【安卓Android简单计算器实例】 在安卓开发中,创建一个简单的计算器应用是学习基本UI设计、事件处理和逻辑运算的良好实践。这个实例展示了如何利用Android Studio和Java编程语言来实现一个功能齐全的计算器,支持...
这篇文档将深入解析《安卓Android源码——游戏源码三组图标可动态切换连连看》这一主题,旨在帮助开发者理解如何在Android平台上实现一个具备动态图标切换功能的游戏应用。源码分析将涵盖Android应用程序的基本结构...
这样,服务器可以通过检查Session ID来验证用户是否已登录,只有合法的Session才能访问受保护的资源。 总结起来,本示例涵盖了以下几个关键知识点: 1. Android客户端使用OkHttp发送HTTP POST请求,携带用户名和...
### 基于Python的安卓自动化测试 #### Python环境搭建 ...通过以上步骤,可以构建出一套完整的基于Python的安卓自动化测试框架,实现对Android应用的有效测试。这不仅提高了测试效率,还降低了人为错误的可能性。
- 示例代码展示了如何获取组件引用并通过findViewById方法进行操作。 通过以上内容的学习和实践,初学者可以对Android开发有一个基本的认识,并能够搭建起自己的开发环境,进而实现简单的Android应用程序开发。这...
android:id="@+id/web_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` ```java WebView webView = findViewById(R.id.web_view); webView.loadUrl(...
例如,`setOnClickListener`方法内可以获取按钮的`id`,然后转换为对应的数字或运算符。 5. **计算逻辑**:这部分代码负责处理加减乘除运算。可以创建一个私有变量存储当前的运算表达式,每次点击按钮时更新这个...
`TextView`的ID为`myTextView01`,通过`findViewById`方法获取并赋值给Java代码中的`mTextView01`变量。 7. **字符串资源(strings.xml)**: `text="@string/str_1"`表明TextView的初始文本是从`strings.xml`文件...
1. **获取资源ID**: 在Android中,每个资源都有一个唯一的整型ID。我们可以使用`getResources().getIdentifier()`方法来获取TXT文件的ID。例如,如果TXT文件名为`textfile.txt`,代码如下: ```java int ...