Android 如何设置渐变样式来绘制对象?
绘制样式为“填充”的箭头的代码如下所示:Android 如何设置渐变样式来绘制对象?,android,android-canvas,gradient,Android,Android Canvas,Gradient,绘制样式为“填充”的箭头的代码如下所示: 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); 我
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);
我得到的结果是:
现在我要做的是将style设置为Gradient(style.Gradient不在android中出现…),以获得类似下图的箭头:
我该怎么做?我尝试在style.xml中添加样式,但无法在其中添加渐变,因为它接受项作为参数。使用下面的代码
paint.setShader(new LinearGradient(0, 0, 0, getHeight(), Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR));
canvas.drawPath(arrowPath, paint);
如果您需要多种颜色:
// 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()中
请注意,这也适用于TextPaint,例如,
paint.setShader(…
// Add Shader
gradientPaint.shader = LinearGradient(0f, 0f, measuredWidth.toFloat(),0f,
colors,
positions,
Shader.TileMode.CLAMP)
canvas.drawPath(path, gradientPaint)