Как программно перекрыть альфа-смешанные растровые изображения в Android?

1

Мне нужно "вычислить" полученную растровую карту, полученную из перекрытия двух разных растровых изображений, имеющих альфа-значение где-то между 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));

И вид черный фон. Что я делаю не так?

Теги:
alpha
bitmap

1 ответ

0
Лучший ответ

Мой код выше абсолютно правильный. Ошибка, которая сделала растровое изображение черным, была в другом месте. Нашел его, исправил, теперь он работает.

Единственное, что нужно отметить, это то, что мой код медленный, как черт, и его нельзя использовать для кроссфейда двух полноэкранных растровых изображений с разумной скоростью fps.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню