Android依据名字通过反射获取在drawable中的图片
程序员文章站
2023-11-25 10:25:52
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>
复制代码 代码如下:
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>