gpt4 book ai didi

android - 为什么图像旋转动画只能在第一次正常工作

转载 作者:行者123 更新时间:2023-11-29 19:03:45 24 4
gpt4 key购买 nike

我有这个简单的箭头图像旋转动画,它仅在第一次按预期工作。从第二次开始,它仍然在旋转,但没有缓慢的动画。

enter image description here

这是动画 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"
/>

卡片 View 中的 ImageView 。

<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);
}

}
});
}

最佳答案

使用 startAnimation 代替 setAnimation

creditCardNextImage.startAnimation(rotatePlus180);
creditCardNextImage.startAnimation(rotateMinus180);

setAnimation 似乎在您将动画附加到 View /或添加 View 时被调用。

即使已经添加了 View ,StartAnimation 也会一直被调用。

关于android - 为什么图像旋转动画只能在第一次正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47953852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com