Как установить стиль градиента для рисования объекта? - PullRequest
43 голосов
/ 22 декабря 2011

Код для рисования стрелки с Стиль: заливка приведен ниже:

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

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

enter image description here

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

Ответы [ 2 ]

102 голосов
/ 22 декабря 2011

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

paint.setShader(new LinearGradient(0, 0, 0, getHeight(), Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR));
    canvas.drawPath(arrowPath, paint);
1 голос
/ 11 июня 2019

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

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