Как я уже говорил вам в комментарии, Paint
объекты полностью применяются только тогда, когда вы рисуете их с помощью Path
.
В документации drawLine есть параграф с: ' Стиль игнорируется в краске ', и то же самое применяется к методу drawLines
.
Чтобы проверить это, я создал простое пользовательское представление:
class CanvasTestView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : View(context, attrs, defStyleAttr) {
private val textPaint1 = Paint(ANTI_ALIAS_FLAG).apply {
style = Paint.Style.STROKE
strokeJoin = Paint.Join.MITER
strokeWidth = 12.0f
color = Color.RED
}
private val textPaint2 = Paint(ANTI_ALIAS_FLAG).apply {
style = Paint.Style.STROKE
strokeJoin = Paint.Join.MITER
strokeWidth = 12.0f
color = Color.BLUE
}
@SuppressLint("DrawAllocation")
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
canvas?.apply {
val floatArray = floatArrayOf(250f, 550f, 450f, 200f, 450f, 200f, 650f, 700f)
drawLines(floatArray, textPaint2)
val path = Path()
path.moveTo(200f, 500f)
path.lineTo(400f, 200f)
path.lineTo(600f, 700f)
drawPath(path, textPaint1)
}
}
}
И вот результат:
![enter image description here](https://i.stack.imgur.com/w7er6.jpg)
Таким образом, используя drawLines
, частично применяйте стили Paint
obj, например, цвета, но не применяйте strokeJoin
свойства.drawPath
, кажется, применяет все вместо них.
Если у вас есть проблемы с производительностью, может быть, вы можете попытаться где-то кешировать результат, предварительно вычислить анимацию или попробовать более простую.
Помните, что если у вас нет особых требований, есть замечательная библиотека: MPAndroidChart , которая уже имеет некоторые встроенные анимации