【问题标题】:How to programmatically overlap alpha blended bitmaps in android?如何以编程方式在 android 中重叠 alpha 混合位图?
【发布时间】:2012-06-28 01:38:00
【问题描述】:

我需要“计算”从重叠两个不同位图获得的结果位图,这些位图的 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));

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

【问题讨论】:

    标签: android bitmap alpha


    【解决方案1】:

    我上面的代码是绝对正确的。使位图变黑的错误在别处。找到它,修复它,现在它可以工作了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-15
      • 2022-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 2016-06-24
      相关资源
      最近更新 更多