如果我有一个可以使用R.drawable.anim
引用的动画可绘制xml文件(动画列表),有没有办法可以获取数组中所有Drawable
的ID?
基本上我不想以某种方式加载xml文件并获取该动画中涉及的所有Drawable
的列表。
这是我正在使用的动画xml
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<item
android:drawable="@drawable/typer_step_1"
android:duration="50"/>
<item
android:drawable="@drawable/typer_step_2"
android:duration="50"/>
<item
android:drawable="@drawable/typer_step_3"
android:duration="50"/>
<item
android:drawable="@drawable/typer_step_4"
android:duration="50"/>
</animation-list>
答案 0 :(得分:2)
<string-array name="random_imgs">
<item>@drawable/image1</item>
<item>@drawable/image2</item>
<item>@drawable/image3</item>
</string-array>
您活动中
TypedArray imgs = getResources().obtainTypedArray(R.array.random_imgs);
//get resourceid by index
imgs.getResourceId(i, -1);
// or set you ImageView's resource to the id
mImgView1.setImageResource(imgs.getResourceId(i, -1));
imgs.recycle();
答案 1 :(得分:0)
你可以使用反射。
导入Field类
import java.lang.reflect.Field;
码
Field[] Fields = R.drawable.class.getFields();
int[] resArray = new int[Fields.length];
for(int i = 0; i < Fields.length; i++) {
try {
resArray[i] = Fields[i].getInt(null);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
或者您可以在res文件夹中的arrays.xml文件中使用类型化的数组,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="random_imgs">
<item>@drawable/car_01</item>
<item>@drawable/balloon_random_02</item>
<item>@drawable/dog_03</item>
</string-array>
</resources>
然后在您的活动中访问它们:
TypedArray imgs = getResources().obtainTypedArray(R.array.random_imgs);
//get resourceid by index
imgs.getResourceId(i, -1)
// or set you ImageView's resource to the id
mImgView1.setImageResource(imgs.getResourceId(i, -1));