Android缩放和旋转动画不流畅,跳跃
Posted
技术标签:
【中文标题】Android缩放和旋转动画不流畅,跳跃【英文标题】:Android scale and rotate animation not smooth, jumps 【发布时间】:2021-12-20 09:08:20 【问题描述】:这两种动画方法有什么区别?它们都达到了相同的结果,但第一个是生涩的,而第二个是平滑的。为什么?
这个动画进展顺利,直到最后它突然跳到它的最终位置。一切似乎都很简单,那么这是怎么回事?
val cube = homeBinding.imgCube
val animSet = AnimationSet(true)
val rotateAnimation = RotateAnimation(0.0f,
720.0f,
Animation.RELATIVE_TO_SELF,
0.5f,
Animation.RELATIVE_TO_SELF,
0.5f)
val scaleAnimation: Animation = ScaleAnimation(
0.1f, 0.4f,
0.2f, 0.4f,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f)
scaleAnimation.interpolator = LinearInterpolator()
rotateAnimation.interpolator = LinearInterpolator()
animSet.duration = 3000
animSet.addAnimation(rotateAnimation)
animSet.addAnimation(scaleAnimation)
cube.startAnimation(animSet)
和xml:
<ImageView
android:id="@+id/imgCube"
android:layout_
android:layout_
android:contentDescription="some"
android:scaleType="centerInside"
android:scaleX="0.4"
android:scaleY="0.4"
app:srcCompat="@drawable/kk" />
虽然这个很好用。
但是有什么区别呢?
cube.animate().scaleX(0.4f)
.scaleY(0.4f)
.setDuration(3000)
.rotation(720f)
.setInterpolator (LinearInterpolator())
.start();
【问题讨论】:
【参考方案1】:第一种方法是使用RotateAnimation 和ScaleAnimation 和AnimationSet,第二种方法(对于这个任务来说要好得多,更不用说更短的代码了)是使用ViewPropertyAnimator。
我只能说我之前在 AnimationSet 和这些类型的动画中遇到了错误的问题,所以我强烈推荐 ViewPropertyAnimator 来获得更多的动画
我猜在第一种方法中它会跳回来,因为您没有指定 setFillAfter(true) AnimationSet 中的方法,和/或它与枢轴(RELATIVE_TO_SELF)有关
【讨论】:
thnx;它是 fillAfter - 我之前尝试过,但是将它设置在单个动画元素上;在我将它应用到动画集之后,它起作用了以上是关于Android缩放和旋转动画不流畅,跳跃的主要内容,如果未能解决你的问题,请参考以下文章