Я пытаюсь анимировать вид по изогнутому пути, используя ObjectAnimator с Путь в качестве источника значений. Я использую arcTo , чтобы добавить изогнутый участок к Пути. Но по какой-то причине я не могу понять, представление просто не переводится на Android версии 7.1.1 (оно работает на Android 8). Он просто остается в своем первоначальном месте на экране.
Я пробовал несколько способов добавить изогнутый раздел в путь. arcTo , addArc и остальные методы изогнутого сечения. Но ни один из них не работает на Android 7.1.1.
Ниже приведены фрагменты кода, которые я использую
// creating path to animate along
val path = Path().apply {
arcTo((pivot[0] - radius).toFloat(),
(pivot[1] - radius).toFloat(),
(pivot[0] + radius).toFloat(),
(pivot[1] + radius).toFloat(),
startAngle,
sweepAngle,
true)
}
// Animating the centre of view along the path
ObjectAnimator.ofFloat(startView, startView.centerXProperty(), startView.centerYProperty(), path).apply {
duration = 2000
interpolator = LinearInterpolator()
start()
}
// To animate center instead of Top Right Corner
fun View.centerXProperty() = object : Property<View, Float>(Float::class.java, "centerX") {
override fun get(`object`: View?): Float {
if (`object` == null) return 0.0f
return `object`.x + (`object`.measuredWidth / 2)
}
override fun set(`object`: View?, value: Float?) {
if (`object` == null || value == null) return
val x = value - (measuredWidth / 2)
`object`.x = x
}
}
// To animate center instead of Top Right Corner
fun View.centerYProperty() = object : Property<View, Float>(Float::class.java, "centerY") {
override fun get(`object`: View?): Float {
if (`object` == null) return 0.0f
return `object`.y + (`object`.measuredHeight / 2)
}
override fun set(`object`: View?, value: Float?) {
if (`object` == null || value == null) return
val y = value - (measuredHeight / 2)
`object`.y = y
}
}
Я в основном пытаюсь перевести вид по кругу, нарисованному вокруг сводного вида. Но это не работает на Android 7.1.1. Есть ли что-то, что я делаю не так. Пожалуйста, предложите, если есть лучший способ реализовать это. Заранее спасибо.