Я рисую ar c с помощью SweepGradient. Хочу получить ар c со скругленными углами. Но при использовании SweepGradient углы не закруглялись.
Я пробовал использовать canvas.drawAr c, а также пытался нарисовать ar c с помощью пути. Ниже приведен рисунок кода ar c с холстом:
private val rectF = RectF()
private var strokeWidthr = getDimensionPixelSize(R.dimen.file_upload_progress_width) * 1f
private val paint = Paint()
.apply {
isAntiAlias = true
strokeWidth = strokeWidthr
style = Paint.Style.STROKE
strokeCap = Paint.Cap.ROUND
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
canvas.drawArc(rectF, 0f, 270f, false, paint)
}
override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
super.onSizeChanged(w, h, oldw, oldh)
rectF.set(
strokeWidthr / 2f,
strokeWidthr / 2f,
w - strokeWidthr / 2f,
h - strokeWidthr / 2f
)
paint.shader = SweepGradient(
w / 2,
h / 2,
intArrayOf(Color.WHITE, Color.TRANSPARENT),
floatArrayOf(0.11f, 0.96f)
)
}
И этот рисунок с path и pathEffect
private val rectF = RectF()
private var strokeWidthr = getDimensionPixelSize(R.dimen.file_upload_progress_width) * 1f
private val path = Path()
.apply {
}
private val paint = Paint()
.apply {
isAntiAlias = true
strokeWidth = strokeWidthr
style = Paint.Style.STROKE
strokeCap = Paint.Cap.ROUND
pathEffect = CornerPathEffect(strokeWidthr)
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
canvas.drawPath(path, paint)
}
override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
super.onSizeChanged(w, h, oldw, oldh)
rectF.set(
strokeWidthr / 2f,
strokeWidthr / 2f,
w - strokeWidthr / 2f,
h - strokeWidthr / 2f
)
paint.shader = SweepGradient(
w / 2f,
h / 2f,
intArrayOf(Color.WHITE, Color.WHITE, Color.TRANSPARENT, Color.TRANSPARENT),
floatArrayOf(0.05f, 0.11f, 0.44f, 0.48f)
)
path.reset()
path.arcTo(rectF, 0f, 180f, false)
}
В обоих примерах я получаю ar c без закругленных углов. Если я удалю закругленные углы SweepGradient, работающие с обоими примерами.