欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android依据名字通过反射获取在drawable中的图片

程序员文章站 2023-01-02 08:43:42
mainactivity如下: 复制代码 代码如下: package cn.testreflect; import java.lang.reflect.field; imp...
mainactivity如下:
复制代码 代码如下:

package cn.testreflect;
import java.lang.reflect.field;
import android.os.bundle;
import android.widget.imageview;
import android.app.activity;
/**
* demo描述:
* 依据图片的名字,通过反射获取其在drawable中的id
* 在根据此id显示图片
*/
public class mainactivity extends activity {
private imageview mimageview;
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.main);
init();
}
private void init(){
mimageview=(imageview) findviewbyid(r.id.imageview);
getimagebyreflect("yaodi");
}
//$表示内部类的意思
//所以cn.testreflect.r$drawable表示:
//drawable是cn.testreflect.r的内部类
private void getimagebyreflect(string imagename){
try {
field field = class.forname("cn.testreflect.r$drawable").getfield(imagename);
mimageview.setbackgroundresource(field.getint(field));
} catch (exception e) {

}

}
}

main.xml如下:
复制代码 代码如下:

<relativelayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<imageview
android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerinparent="true"
/>
</relativelayout>