3

これが私のビットマップです

Bitmap bitmap = BitmapFactory.decodeStream((InputStream) new URL(url).getContent());
//Need some code to access "dynamicItem" and exchange it with my Bitmap

そして、これが私のレイヤーリストです(見事なものは何もありません)。dynamicItemをビットマップと交換したい。

<?xml version="1.0" encoding="utf-8"?>
    <layer-list
      xmlns:android="http://schemas.android.com/apk/res/android">
      <item
        android:id="@+id/dynamicItem"
        android:drawable="@drawable/defaultItem" />
      <item>
        <bitmap

          android:src="@drawable/some_stuff_on_top"
          android:gravity="top|left" />
      </item>
    </layer-list>
4

2 に答える 2

4

LayerDrawableのメソッドsetDrawableByLayerIdは、(int、Bitmap)ではなく(int、Drawable)を取るため、最初にビットマップからドローアブルを作成します

Drawable drawable = new BitmapDrawable(bitmap);
layerDrawable.setDrawableByLayerId(R.id.dynamicItem, drawable);
于 2011-02-23T23:04:23.370 に答える
1

画像をシフトしながら伸びないようにするには重力を指定する必要があります。私の場合、それは言及された解決策に役立ちます:

android:gravity="top|left" 

またはプログラムで:

 private void shiftLayer(LayerDrawable pieceDrawable,int level){

        int l=level * shiftSize;
        int r=0;
        int t=0;
        int b=0;
        pieceDrawable.setLayerInset(level, l, t, r,  b);
        ((BitmapDrawable)pieceDrawable.getDrawable(level)).setGravity(Gravity.LEFT|Gravity.TOP);
    }

画面上左側にスタンドアロンの画像が引き伸ばされてぼやけているのが見えるかもしれません

例

ストレッチズーム

于 2012-03-06T23:44:26.393 に答える