Я пытаюсь сделать анимацию встряхивания. Это хорошо работает, когда я делаю это в 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
}
Но анимация translate заставляет мой imageView исчезать. Раньше у меня были проблемы с анимацией вращения (когда я пытался сделать анимацию вращения, imageView изменил свое положение, но я исправил это, используя .ofPropertyValuesHolder
вместо .ofFloat
). Вероятно потому, что я использую пользовательскую библиотеку , которая реализует макет с возможностью масштабирования / увеличения .
Теперь я пытаюсь сделать эту анимацию перевода, но она не работает даже с .ofPropertyValuesHolderz
. Он работает только с XML, но, как я уже сказал, я не могу поместить его в AnimatorSet()
.