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-ресурсе.