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

まず第一に。これは問題に取り組む適切な方法ですか?ドローアブルは大きすぎてアニメーションリストを使用できません。そのため、十分なメモリを確保するために、一度に1つずつ画像を読み込むことが目標です。次に、リソースを反復処理する問題をどのように解決しますか?

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 に答える