Honeycomb Hardware Acceleration, кажется, не работает с setColorFilter

Этот код рисует фигуру одного цвета (с альфа-каналом), используя альфа-канал растрового изображения.

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

Например, он возьмет левый Bitmap и нарисует его на холсте так, как он выглядит справа:

enter image description here

Однако он не работает на Honeycomb (Android 3.0), когда включено аппаратное ускорение. Он рисует форму черной, несмотря ни на что. Он игнорирует значение цвета. Однако он отлично работает на ICS (Android 4.0) с включенным аппаратным ускорением.

Я знаю, что некоторые API не поддерживаются аппаратным ускорением, как Ромен Гай задокументировал здесь, в разделе Какие операции рисования поддерживаются?, но, похоже, я не использую их. из упомянутых как не поддерживаемых.

Кроме того, похоже, он сказал, что setColorFilter должен работать в этом посте.

Есть ли в моем коде что-то, что не поддерживается в Honeycomb? Любые обходные пути? Я бы хотел оставить аппаратное ускорение в этом случае.

Спасибо

5
задан Community 23 May 2017 в 10:30
поделиться