Spring animation: Solution
DetailActivity.kt
class DetailActivity : AppCompatActivity() {
...
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
val springForce = SpringForce(0f).apply {
stiffness = SpringForce.STIFFNESS_LOW
dampingRatio = SpringForce.DAMPING_RATIO_HIGH_BOUNCY
}
val springAnimationX = SpringAnimation(iv_avatar, DynamicAnimation.TRANSLATION_X).apply {
spring = springForce
}
val springAnimationY = SpringAnimation(iv_avatar, DynamicAnimation.TRANSLATION_Y).apply {
spring = springForce
}
var dX = 0f
var dY = 0f
root.setOnTouchListener { view, motionEvent ->
when (motionEvent?.action) {
MotionEvent.ACTION_DOWN -> {
dX = motionEvent.rawX
dY = motionEvent.rawY
}
MotionEvent.ACTION_MOVE -> {
val newX = motionEvent.rawX - dX
val newY = motionEvent.rawY - dY
iv_avatar.animate().translationX(newX).translationY(newY).duration = 0
springAnimationX.animateToFinalPosition(0f)
springAnimationY.animateToFinalPosition(0f)
}
}
true
}
}
companion object {
...
}
}
Last updated