タイル管理システムを作成するために、res/drawable ディレクトリに画像のパックがあります。そのリソースを動的にロードする方法は?
お気に入り :F_16.0_0_112.jpg. ("F_"+zoom"+"._"+XCoord+"_"+YCoord".jpg")
getDrawable(String) のような関数はありますか?
次の方法で、その名前を使用してドローアブルを取得できます。
int id = getResources().getIdentifier("name_of_resource", "id", getPackageName());
これはリフレクションを使用して取得できます(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;
}
いいえ、これには Androidアセットフォルダーを使用します。
詳細はこちらをご覧ください。
残念ながら、リソースを名前でロードすることはできません。id は、生成された R クラスの変数です。Java では、動的変数名を作成できません。