1

我目前正在尝试启动一个线程,该线程从其资源中获取一个可绘制对象并在一段时间后发布它。然后从资源中获取下一个可绘制对象并从头到尾做同样的事情。

    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();

首先。这是解决问题的正确方法吗?可绘制对象太大,我无法使用动画列表,因此我的目标是一次加载一个图像以确保我有足够的内存。其次,如何解决迭代资源的问题?

4

2 回答 2

1

您可以使用以下方法按名称获取资源 ID Resources.getIdentifier

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);

此外,在这里您可以找到我对相同问题的答案,代码示例完全符合您的要求。

于 2013-01-21T15:47:39.510 回答
0

我会将图像放在资产文件夹中并从那里加载它们,如下所述:https ://xjaphx.wordpress.com/2011/10/02/store-and-use-files-in-assets/

在资产文件夹中,您只需在文件名中添加一个数字。

于 2013-01-21T15:27:10.763 回答