如何在android中以编程方式重叠alpha混合位图?

时间:2012-06-26 17:01:50

标签: android bitmap alpha

我需要"计算"生成的位图是从重叠两个不同位图获得的,这些位图的alpha值介于0到255之间。我需要在java代码中执行此操作,而不是xml,因为位图是以非语言方式加载而不是从资源加载。

这是我的第一次尝试(总是产生黑色位图...):

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));

视图为黑色背景。我做错了什么?

1 个答案:

答案 0 :(得分:0)

我上面的代码绝对正确。使位图变黑的错误在其他地方。找到它,修复它,现在它可以工作。

唯一需要注意的是我的代码很慢,并且不能用于以合理的fps速率交叉淡化两个全屏位图。