ObjectAnimator让imageeview消失

问题描述 投票:0回答:1

我想做一个抖动动画。当我在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). 可能是因为我用的是 实现可缩放布局的自定义库.

现在我想做这个翻译动画,但它不工作,即使是与 .ofPropertyValuesHolderz. 它只能用XML工作,但正如我所说,我不能把它放在一个 AnimatorSet().

java android kotlin android-animation android-view
1个回答
0
投票

试试这段代码

        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)

© www.soinside.com 2019 - 2024. All rights reserved.