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到相同的位置
我还发现 我认为可能有用
<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到相同的位置
我还发现