У меня есть код для перемещения изображения по круговой траектории.Но мне нужно переместить изображение по другому пути, так как код формы пятиугольника, используемый для кругового пути, приведен ниже
class CircularRotateAnimation
(
private val view: View // view you want to animate
, private val r: Float // radius of circle
) : Animation() {
private var cx: Float = 0.toFloat()
private var cy: Float = 0.toFloat() // center x,y position of circular path
private var prevX: Float = 0.toFloat()
private var prevY: Float = 0.toFloat() // previous x,y position of image during animation
private var prevDx: Float = 0.toFloat()
private var prevDy: Float = 0.toFloat()
override fun willChangeBounds(): Boolean {
return true
}
override fun initialize(width: Int, height: Int, parentWidth: Int, parentHeight: Int) {
val cxImage = width / 2
val cyImage = height / 2
cx = (view.left + cxImage).toFloat()
cy = (view.top + cyImage).toFloat()
// set previous position to center
prevX = cx
prevY = cy
}
protected override fun applyTransformation(interpolatedTime: Float, t: Transformation) {
if (interpolatedTime == 0f) {
t.getMatrix().setTranslate(prevDx, prevDy)
return
}
val angleDeg = (interpolatedTime * 360f + 90) % 360
val angleRad = Math.toRadians(angleDeg.toDouble()).toFloat()
// r = radius, cx and cy = center point, a = angle (radians)
val x = (cx + r * Math.cos(angleRad.toDouble())).toFloat()
val y = (cy + r * Math.sin(angleRad.toDouble())).toFloat()
val dx = prevX - x
val dy = prevY - y
prevX = x
prevY = y
prevDx = dx
prevDy = dy
t.matrix.setTranslate(dx, dy)
}
}
Как нарисовать путь пятиугольника, используя метод переопределения applyTransformation.Или любой другой способ нарисовать путь пятиугольника для анимации.