PorterDuff.Mode.MULTIPLY внутри ComposeShader не работает должным образом

Я хочу реализовать цветовую палитру в моем приложении. Это основной метод onDraw.

@Override
protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        int h = canvas.getHeight();
        int w = canvas.getWidth();
        if (paint == null) {
            paint = new Paint();
            luar = new LinearGradient(0.f, 0.f, 0.f, h, 0xffffffff, 0xff000000, TileMode.CLAMP);
        }
        int rgb = Color.HSVToColor(color);
        Shader dalam = new LinearGradient(0.f, 0.f, w, 0.f, 0xffffffff, rgb, TileMode.CLAMP);
        ComposeShader shader = new ComposeShader( luar, dalam, PorterDuff.Mode.MULTIPLY);
        paint.setShader(shader);
        canvas.drawRect(0.f, 0.f, w, h, paint);
    }

Но, ComposeShader shader кажется не работает.

То есть,

ComposeShader shader = new ComposeShader( dalam, luar, PorterDuff.Mode.MULTIPLY);

показывает только вертикальный градиент. И если я изменю параметры:

ComposeShader shader = new ComposeShader( luar, dalam,  PorterDuff.Mode.MULTIPLY);

это показывает горизонтальный градиент. Нет умножения! Зачем?

1 ответ

У меня такая же проблема. Но теперь очистили это. Вставить android:layerType="software" как атрибут этого представления в XML-ресурсе.

Другие вопросы по тегам