1

私は現在、Android開発を行っています。

クラス R (自動生成されたクラス) には、次のようにどこからでもアクセスできる多くの「グローバル」値があります。

R.drawable.<file_name_ignoring_suffix>

「item_0.png」、「item_1.png」、「item_2.png」などの名前のファイルがたくさんあります。

最初に配列に入れずにこれらの項目を反復処理する簡単な方法はありますか?

私の現在の実装:

int[] itemResources = { R.drawable.item_0, R.drawable.item_1, R.drawable.item_2,
                        R.drawable.item_3, R.drawable.item_4, R.drawable.item_5  };

... 次に、配列を反復処理します。

これはうまく機能しますが、特に保守性が低く、多くの項目があると面倒になります。

何か案は?

4

3 に答える 3

2

確かに、リフレクションを使用して のフィールドのリストを取得できますR.drawable。ちょっとハックですが、うまくいくかもしれません。

于 2012-07-10T02:01:41.113 に答える
1

簡単な方法はないと思います。これが私がドローアブルを取得しようとした小さなコードです。

    R.drawable d = new R.drawable();
    try {
        for (Field fld : declaredFields) {
            Integer id = fld.getInt(d);
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), id);
            if (bitmap != null)
                Log.d("tag", "success");
            else
                Log.d("tag", "failed");
        }
    } catch (Exception e) {
        Log.d("tag", "" + e);
    }

上記のテストでは、それらのいくつかは失敗しました。さらなる調査が必要なため、理由はわかりません。しかし、これで始められます。

次に、 Androidプラットフォームが方向、ロケールなどに基づいて適切なリソースを見つけるために使用するルールを使用して適切なpngを選択する場合は、テーマからこのAPIも探します。

于 2012-07-10T02:06:31.670 に答える
0

それらを同じディレクトリに配置してから、ディレクトリの内容を自動的にクエリし、内容を使用して配列を作成するのはどうですか?

于 2012-07-10T01:54:04.110 に答える