【发布时间】:2020-05-06 17:59:58
【问题描述】:
我正在尝试制作摇晃动画。当我在 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() 中。
【问题讨论】:
标签: android kotlin android-animation android-view