Le code pour dessiner une flèche avec Style: Fill est donné ci-dessous:
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);
Et la sortie que j'obtiens est la suivante:
Maintenant, ce que je veux faire, c'est définir le style sur Gradient (Style.gradient non présent dans Android ...) pour obtenir la flèche similaire à l'image ci-dessous:
Comment fait-on ça ? J'ai essayé d'ajouter du style dans style.xml mais je n'ai pas pu y ajouter de dégradé car il accepte l'élément comme paramètre.
utilisez le code ci-dessous ..
Paint.setShader(new LinearGradient(0, 0, 0, getHeight(), Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR));
canvas.drawPath(arrowPath, Paint);
Si vous voulez plus d'une couleur:
// 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))
dans OnDraw ()
// Add Shader
gradientPaint.shader = LinearGradient(0f, 0f, measuredWidth.toFloat(),0f,
colors,
positions,
Shader.TileMode.CLAMP)
canvas.drawPath(path, gradientPaint)