【发布时间】:2017-12-23 15:49:29
【问题描述】:
我有这个简单的箭头图像旋转动画,它只是第一次按预期工作。从第二次开始,它仍然在旋转,但没有缓慢的动画。
这是 anim xml 文件中的代码
旋转 180 度
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1500"
android:fromDegrees="0"
android:toDegrees="180"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="0"
android:fillAfter="true"
android:fillEnabled="true"/>
旋转崇拜
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1500"
android:fromDegrees="180"
android:toDegrees="0"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="0"
android:fillAfter="true"
android:fillEnabled="true"
/>
卡片视图内的图像视图。
<ImageView
android:id="@+id/creadit_card_next_image"
android:layout_width="@dimen/next_image_size"
android:layout_height="@dimen/next_image_size"
android:layout_marginEnd="@dimen/static_menu_primary_margin"
android:layout_marginTop="16dp"
android:rotation="-90"
android:src="@drawable/ic_navigate_next"
android:tint="@color/colorPrimary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
触发动画的 Java 代码。
private Animation rotatePlus180;
private Animation rotateMinus180;
private boolean creditDebitCardViewExpanded = true;
rotatePlus180 = AnimationUtils.loadAnimation(this, R.anim.rotate_plus_180);
rotateMinus180 = AnimationUtils.loadAnimation(this, R.anim.rotate_minus_180);
private void onClickCreditDebitCardView() {
creditDebitCardPaymentMethod.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (creditDebitCardViewExpanded) {
expandAnimation(paymentRecyclerView);
creditDebitCardViewExpanded = false;
creditCardNextImage.setAnimation(rotatePlus180);
} else {
collapseAnimation(paymentRecyclerView);
creditDebitCardViewExpanded = true;
creditCardNextImage.setAnimation(rotateMinus180);
CreditDebitLayoutContainer.setPadding(0, 0, 0, padding);
}
}
});
}
【问题讨论】:
-
你在哪里设置
rotatePlus/Minus180?你可能会失去这些价值观。我真的不能告诉你要去另一个活动或做一些可能导致他们迷路的事情。如果您还没有这样做,请尝试将它们设置为onResume()。 -
我在
onCreate()中分配rotatePlus/Minus180。而且我不会参加其他活动。