我目前正在尝试启动一个线程,该线程从其资源中获取可绘制对象并在设定的时间后发布它。然后从资源中获取下一个可绘制对象,并从头到尾做同样的事情。
final ImageView zImageView = (ImageView) findViewById(R.id.zzz_animation_view);
new Thread(new Runnable() {
public void run() {
for(int i = 1; i<=510; i++)
{
final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.z_animation0001); // how do I increment this recourse to z_animation0002, 0003, ..., 0510 ?
zImageView.postDelayed(new Runnable() {
public void run() {
zImageView.setImageBitmap(bitmap);
}
},200);
}
}
}).start();
首先。这是解决问题的正确方法吗?可绘制对象太大,我无法使用动画列表,因此我的目标是一次加载一个图像以确保我有足够的内存。其次,如何解决迭代资源的问题?
最佳答案
您可以使用 Resources.getIdentifier
通过名称获取资源 ID :
final int current = 5;
final String pattern = "z_animation%04d";
final String name = String.format(pattern, current);
final int id = getResources().getIdentifier(name, "drawable", getPackageName());
final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), id);
此外,here您可以使用完全符合您要求的代码示例找到我对同一问题的答案。
关于android - 如何遍历大量具有相似名称的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14441807/