4

この質問/回答の投稿の「ソリューション #2 (動的)」:

Androidで2つの画像を重ねて画像ビューを設定する

これは、レイヤーリストを動的に作成することです(ステータスバー通知アイコンの場合、アイコンをレイヤーで構築したい)が、通知APIでのアイコンの割り当てにはリソースが必要ですID(サービスから呼び出したい)。

何百ものレイヤーリスト.xmlファイルを作成せずにレイヤーリストを動的に作成する方法を理解できません(表示できるようにしたいアイコンのさまざまな組み合わせ用)。ダニエルの「ソリューション #1」は、静的な .xml ファイルに対してはうまく機能しますが、私はより洗練された動的なソリューションを探しています。

上記の投稿のコード スニペット:

  Resources r = getResources();

  Drawable[] layers = new Drawable[2]; 

  layers[0] = r.getDrawable(R.drawable.t);

  layers[1] = r.getDrawable(R.drawable.tt);

  LayerDrawable layerDrawable = new LayerDrawable(layers);

私が欲しいもののように見えますが、新しいlayerDrawableを通知アイコン(リソースIDを取る)に「割り当てる」方法がわからない、または理解していません。

皆さんのおかげです...stackoverflow は素晴らしいリソースです!

4

2 に答える 2

12

getIdentifier」を使用して取得します。「/res/drawable/」にファイル bug.png があると仮定して、次のコードでその ResourceID を取得します。

int resID = getResources().getIdentifier("org.anddev.android.testproject:drawable/bug", null, null);

// また

int resID = getResources().getIdentifier("bug", "drawable", "org.anddev.android.testproject");      

参考:
anddev.org

于 2012-05-24T05:37:09.420 に答える
3

実行時に作成される Drawable の ID のようなものはありません。これらの ID は、R クラスの int フィールドを参照し、xml ファイルから自動的に作成されます。

LayerDrawable コンストラクターは Drawable 配列のみを必要とするため、任意のメソッドから作成された Drawable を提供できます。例として、静的メソッドがありますDrawable.createFromStream(InputStream is, String srcName)

http://developer.android.com/reference/android/graphics/drawable/Drawable.html#createFromStream%28java.io.InputStream,%20java.lang.String%29

于 2011-06-03T03:18:11.003 に答える