如何为绘图对象设置渐变样式?

61

以下是绘制填充样式箭头的代码:

paint.setColor(Color.parseColor("#bdc0dc"));
paint.setStyle(Style.FILL);
canvas.drawPath(arrowPath, paint);
paint.setColor(Color.BLACK);
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(2);
canvas.drawPath(arrowPath, paint);

我得到的输出如下:

在此输入图片描述

现在我想要做的是将样式设置为Gradient(样式.gradient在Android中不存在...),以获得类似下面图像所示的箭头:

在此输入图片描述

我该怎么做?我尝试在style.xml中添加样式,但无法添加渐变,因为它只接受项目作为参数。

2个回答

130

使用下面的代码...

paint.setShader(new LinearGradient(0, 0, 0, getHeight(), Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR));
    canvas.drawPath(arrowPath, paint);

2
请注意,这也适用于TextPaint,例如paint.setShader(... - CODE-REaD

14

如果你想要多个颜色:

// Gradient Shade colors distribution setting uniform for now
private val positions = null //floatArrayOf(0f, 0.3f, 0.6f)

// Gradient Shade colors
private val colors = intArrayOf(
        ContextCompat.getColor(context,
                R.color.divider_gradient_start_color),
        ContextCompat.getColor(context,
                R.color.divider_gradient_center_color),
        ContextCompat.getColor(context,
                R.color.divider_gradient_end_color))

在 OnDraw() 函数中

// Add Shader
gradientPaint.shader = LinearGradient(0f, 0f, measuredWidth.toFloat(),0f, 
                colors, 
                positions,
                Shader.TileMode.CLAMP)

canvas.drawPath(path, gradientPaint)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接