Этот код рисует фигуру одного цвета (с альфа-каналом), используя альфа-канал растрового изображения.
Bitmap alphaMask = bitmap.extractAlpha();
Paint paint = new Paint();
int color = Color.GRAY;
...
paint.setColor(color);
paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.DST_IN));
...
canvas.drawBitmap(alphaMask, x, y, paint);
Например, он возьмет левое растровое изображение и нарисует его на холсте, как это выглядит справа:
Однако в Honeycomb (Android 3.0) он не работает, если включено аппаратное ускорение.Он рисует черную форму, несмотря ни на что.Он игнорирует значение цвета.Тем не менее, он отлично работает на ICS (Android 4.0) с аппаратным ускорением.
Я знаю, что некоторые API не поддерживаются с аппаратным ускорением, так как Romain Guy задокументирован здесь , под Какие операции рисования поддерживаются? , но я, кажется, не использую ни одну из упомянутых как не поддерживаемых.
Кроме того, звучало так, как будто он сказал, что setColorFilter должен работать на этомpost .
Есть ли в моем коде что-то, что не поддерживается в Honeycomb?Есть обходные пути?Я хотел бы оставить аппаратное ускорение в этом случае.
Спасибо