Как установить стиль градиента для рисования объекта?

Код для рисования стрелки со стилем: Заполнение приведено ниже:

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);

И результат, который я получаю, таков:

enter image description here

Теперь то, что я хочу сделать, это установить стиль в Gradient (Style.gradient, не присутствующий в android...), чтобы получить стрелку, подобную приведенному ниже изображению:

enter image description here

Как мне это сделать? Я попробовал добавить стиль в style.xml, но не смог добавить туда градиент, поскольку он принимает параметр item как параметр.

Ответ 1

используйте код ниже..

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

Ответ 2

Если вы хотите более одного цвета:

// 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)