1

タイル管理システムを作成するために、res/drawable ディレクトリに画像のパックがあります。そのリソースを動的にロードする方法は?

お気に入り :F_16.0_0_112.jpg. ("F_"+zoom"+"._"+XCoord+"_"+YCoord".jpg")

getDrawable(String) のような関数はありますか?

4

4 に答える 4

5

次の方法で、その名前を使用してドローアブルを取得できます。

int id = getResources().getIdentifier("name_of_resource", "id", getPackageName());
于 2012-11-07T09:32:30.497 に答える
2

これはリフレクションを使用して取得できます(java.lang.reflect.Fieldをインポートすることを忘れないでください)

/**
 * For example calling <code>getDrawableId("ic_launcher")</code> will return the same value as <code>R.drawable.ic_launcher;</code> 
 * 
 * @param name the name of the field
 * @return the drawable id
 */
public int getDrawableId(String name) {
    Class<?> c = R.drawable.class;
    Field f = null;
    int id = 0;

    try {
        f = R.drawable.class.getField(name);
        id = f.getInt(null);
    } catch (NoSuchFieldException e) {
        Log.i("Reflection", "Missing drawable " + name);
    } catch (IllegalAccessException e) {
        Log.i("Reflection", "Illegal access to field " + name);
    }

    return id;
}
于 2012-11-07T09:38:00.157 に答える
1

いいえ、これには Androidアセットフォルダーを使用します。

詳細はこちらをご覧ください。

于 2012-11-07T09:32:37.433 に答える
-1

残念ながら、リソースを名前でロードすることはできません。id は、生成された R クラスの変数です。Java では、動的変数名を作成できません。

于 2012-11-07T09:32:49.203 に答える