0から255の間のアルファ値を持つ2つの異なるビットマップのオーバーラップから得られた結果のビットマップを「計算」する必要があります。ビットマップはリソースからではなく動的にロードされるため、xmlではなくJavaコードでこれを行う必要があります。
これが私の最初の試みです(これは常に黒いビットマップを生成します...):
private Drawable composeBitmaps(int alpha1, BitmapDrawable bm1,
int alpha2, BitmapDrawable bm2)
{
Canvas c = new Canvas();
Bitmap b1 = bm1.getBitmap();
BitmapDrawable draw1 = new BitmapDrawable(b1.copy(b1.getConfig(), true));
draw1.setAlpha(alpha1);
c.setBitmap(draw1.getBitmap());
Paint p = new Paint();
p.setAlpha(alpha2);
c.drawBitmap(bm2.getBitmap(), 0, 0, p);
return draw1;
}
...
View v = // whatever
v.setBackgroundDrawable(composeBitmaps(100, bdrawable1, 150, bdrawable2));
そして、ビューは黒の背景になります。私は何が間違っているのですか?