Проблема с ComposeShader на Android 4.1.1

Я просто пытаюсь реализовать палитру цветов для моего приложения для Android и столкнулся со странной проблемой на Android 4.1.1. Следующий код не создает ожидаемые градиенты на Android 4.1.1, но на 2.3.7:

Shader fadeInRight = new LinearGradient(0, 0, pWidth, 0, 0x00000000, 0xFF000000, Shader.TileMode.CLAMP);
Shader blackToWhite = new LinearGradient(0, 0, 0, pHeight, 0xFF000000, 0xFFFFFFFF, Shader.TileMode.CLAMP);
Shader whiteMask = new ComposeShader(blackToWhite, fadeInRight, PorterDuff.Mode.DST_IN);
Shader blackToColor = new LinearGradient(0, 0, pWidth, 0, 0xFF000000, hue, Shader.TileMode.CLAMP);
Shader shader = new ComposeShader(blackToColor, whiteMask, PorterDuff.Mode.SCREEN);
paint.setShader(shader);
...
canvas.drawRect(new Rect(0, 0, pWidth, pHeight), paint);

Here's the problem: enter image description here

(ignore the red box below on Android 4.1.1. I just talk about the gradient above)

Any Idea what's wrong? Я думаю, что в моем коде чего-то не хватает, но я понятия не имею, что.

EDIT #1: Если я просто используюwhiteMask заsetShaderЯ также получаю разные результаты для обеих систем: На 2.3.7 я вижу текст меню конфигурации (который находится за всплывающим окном), просвечивающий прямоугольник градиента. Кроме того, есть градиент от верхнего левого края к нижнему правому краю (от черного к белому), но градиент на 4.1.1 идет горизонтально слева направо.So it seems to be a problem with ComposeShader

EDIT #2: Я нашел более простой пример для описания проблемы:

Shader shader1 = new LinearGradient(0, 0, 0, pHeight, hue, 0xffffffff, Shader.TileMode.CLAMP);
Shader shader2 = new LinearGradient(0, 0, pWidth, 0, 0xff000000, 0xffffffff, Shader.TileMode.CLAMP);
Shader shader = new ComposeShader(shader1, shader2, PorterDuff.Mode.MULTIPLY);

Итак, у нас есть только вертикальный линейный градиент от любого цвета до черного и горизонтальный линейный градиент от черного до белого. Если мы умножим эти два слоя, мы должны получить правильный прямоугольник (как на скриншоте слева выше). Но на Android 4.1.1 я вижу только градиент shader2. Я также попробовал это в Gimp с двумя слоями, и результат был таким же, как на Android 2.3.7.

Ответы на вопрос(1)

Ваш ответ на вопрос