У меня есть изображение, которое показывает стрелку вверх / вниз в зависимости от состояния BottomSheet
, и я пытаюсь анимировать стрелку так, чтобы она выглядела лучше, но в конце анимации она плавно не переходит вновый образ. Я вижу старое изображение в течение миллисекунды, пока оно не переключится на обновленное.
вот мой код
private val bottomSheetCallback = object:BottomSheetBehavior.BottomSheetCallback(){
override fun onSlide(p0: View, p1: Float) {}
/**
* Listen to state changes of the bottom sheet
*/
@SuppressLint("SwitchIntDef")
override fun onStateChanged(p0: View, state: Int) {
when(state){
BottomSheetBehavior.STATE_COLLAPSED -> startRotateAnimation()
BottomSheetBehavior.STATE_EXPANDED -> startRotateAnimation()
}
}
private fun startRotateAnimation(){
val rotateAnimation:RotateAnimation = RotateAnimation(0f,180f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f)
rotateAnimation.duration = 500
rotateAnimation.setAnimationListener(object : Animation.AnimationListener {
override fun onAnimationStart(animation: Animation?) {
}
override fun onAnimationRepeat(animation: Animation?) {
}
override fun onAnimationEnd(animation: Animation?) {
when(_scannedBarcodesList.state){
BottomSheetBehavior.STATE_COLLAPSED -> expand.setImageResource(R.drawable.ic_keyboard_arrow_up_24px)
BottomSheetBehavior.STATE_EXPANDED -> expand.setImageResource(R.drawable.ic_keyboard_arrow_down_24px)
}
}
})
expand.startAnimation(rotateAnimation)
}
}
Я пытаюсь повернуть изображение на 180 градусов (поэтому стрелка вверх указываетвниз, например), а затем в конце анимации фактически переключите вид изображения на стрелку вниз, но, как я уже говорил, анимация, кажется, заканчивается до того, как изображение изменится, показывая стрелку вверх в течение миллисекунды, поэтому она выглядит плохо.
Как избавиться от окончания анимации до переключения изображения?