android - ComposeShader中的PorterDuff.Mode.MULTIPLY无法正常工作

标签 android ondraw porter-duff

我想在我的应用程序中实现调色板。这是主要的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);

它显示水平梯度。不要乘法!为什么?

最佳答案

我也有同样的问题。但现在可以了。在XML资源中插入android:layerType="software"作为该视图的属性。

关于android - ComposeShader中的PorterDuff.Mode.MULTIPLY无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35826800/

相关文章:

android - BluetoothAdapter.getDefaultAdapter() 不返回 null

android - Opengl-es onTouchEvents 问题还是绘图问题?

android - 我是否在每次通话时都使整个屏幕无效?

Android使用PorterDuff合并图片

Android Alpha Masking 问题

java - ExpandableListView 上的 Volley gson 请求导致 java.lang.IndexOutOfBoundsException

android - 安排android图形事件

android - 在工具栏中显示进度条

Android:如何在扩展Activity的类中使用onDraw方法?

android TabLayout 更改所选选项卡图标的颜色,显示暗白色