1. ホーム
  2. android

[解決済み] アンドロイドで描画可能なリソースに名前を付けてアクセスする方法

2023-07-02 15:53:09

質問

私のアプリケーションでは、ビットマップの描画オブジェクトを、参照を維持したくない場所で取得する必要があります。 R . そこで、私はクラスを作成しました。 DrawableManager を作成し、drawableを管理します。

public class DrawableManager {
    private static Context context = null;

    public static void init(Context c) {
        context = c;
    }

    public static Drawable getDrawable(String name) {
        return R.drawable.?
    }
}

そして、このようにどこかでdrawableを名前で取得したい(car.pngはres/drawablesの中に入れている)。

Drawable d= DrawableManager.getDrawable("car.png");

しかし、ご覧の通り、名前からリソースにアクセスすることはできません。

public static Drawable getDrawable(String name) {
    return R.drawable.?
}

代替案は?

どのように解決するのですか?

あなたのアプローチは、ほとんどの場合間違った方法であることに注意してください (描画可能なオブジェクトを使用するオブジェクト自体にコンテキストを渡す方が、静的な Context をどこかに置いておくよりも、描画可能なオブジェクト自体にコンテキストを渡す方が良いのです)。

そう考えると、動的な描画可能な読み込みを行いたいのであれば getIdentifier :

Resources resources = context.getResources();
final int resourceId = resources.getIdentifier(name, "drawable", 
   context.getPackageName());
return resources.getDrawable(resourceId);