Android Kotlin - Animation translationX 忽略距离并离开屏幕

Android Kotlin - Animation translationX ignores the distance and goes off screen

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="32dp"
    android:layout_marginEnd="32dp"
    android:gravity="center"
    android:orientation="vertical"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <RelativeLayout
        android:id="@+id/swipeContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp">

        <ImageView
            android:id="@+id/swipe"
            android:layout_width="84dp"
            android:layout_height="84dp"
            android:layout_alignParentEnd="true"
            android:padding="2dp"
            android:rotation="26"
            app:srcCompat="@drawable/ic_swipe"
            app:tint="#FFFFFF" />
    </RelativeLayout>

</LinearLayout>

我正在使用此代码制作向左滑动的动画:

swipe.animate().rotationBy(-30f).setDuration(1400)
    .translationX(-distance)
    .setInterpolator(AccelerateDecelerateInterpolator())
    .start()

然后我只是尝试重置位置/向后滑动:

swipe.animate().rotationBy(30f).setDuration(1000)
    .translationX(distance)
    .setInterpolator(AccelerateDecelerateInterpolator())
    .start()

但是随后 View 会向右移动,直到它离开屏幕,这意味着它会忽略 distance,为什么?

distance 动画之间没有变化

快速修复是使用 xBy 而不是 translationX

如果你将使用translationX那么它应该是translationX(-distance)translationX(0)到return到相同的位置

我还发现 我认为可能有用