我在试着做一个摇晃的动画。当我用XML做这件事时,它工作得很好,如下所示:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:duration="50"
android:fromDegrees="-0.02"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="30"
android:repeatMode="reverse"
android:interpolator="@android:anim/linear_interpolator"
android:toDegrees="0.02" />
<translate
android:fromXDelta="-0.02"
android:toXDelta="0.02"
android:repeatCount="30"
android:repeatMode="reverse"
android:interpolator="@android:anim/linear_interpolator"
android:duration="50" />
</set>但是我想使用ObjectAnimator,这样我就可以在播放其他动画的同时使用AnimatorSet播放这个动画。
我试着这样做:
val pvhR = PropertyValuesHolder.ofFloat(View.ROTATION, -0.05f, 0.05f)
val pvhT = PropertyValuesHolder.ofFloat(View.TRANSLATION_X, -0.05f, 0.05f)
val rotate = ObjectAnimator.ofPropertyValuesHolder(imageView, pvhR). apply {
duration = 50
repeatCount = 20
repeatMode = ValueAnimator.REVERSE
}
val translate = ObjectAnimator.ofPropertyValuesHolder(imageView, pvhT).apply {
duration = 50
repeatCount = 20
repeatMode = ValueAnimator.REVERSE
}但是平移动画会让我的imageView消失。我以前遇到过旋转动画的问题(当我尝试做旋转动画时,imageView改变了它的位置,但我使用.ofPropertyValuesHolder而不是.ofFloat修复了它)。可能是因为我用的是custom library that implements a zoomable/pinchable layout。
现在我试着做这个翻译动画,但它不工作,即使在.ofPropertyValuesHolderz上。它只适用于XML,但正如我所说的,我不能将它放入AnimatorSet()中。
发布于 2020-05-08 02:03:05
试试这段代码
val set = AnimatorSet()
val rotation = ObjectAnimator.ofFloat(imageViewMain, "rotation", -0.05f, 0.05f).apply {
duration = 50
repeatCount = 20
repeatMode = ValueAnimator.REVERSE
}
val translation = ObjectAnimator.ofFloat(imageViewMain, "translationX", -0.05f, 0.05f).apply {
duration = 50
repeatCount = 20
repeatMode = ValueAnimator.REVERSE
}
set.playTogether(rotation, translation)
https://stackoverflow.com/questions/61642042
复制相似问题