我有一個ImageView,我正在旋轉以用作加載動畫。加載數據後,我會嘗試停止動畫,但不是循環到最後,然後停止,動畫進入中途點,然後停止,然後圖像恢復到原始狀態,這看起來很醜陋。如何在循環結束時停止動畫?
這裏是我試過:
選項1:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
if (iv != null) {
iv.clearAnimation();
}
選項2:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
if (iv != null && iv.getAnimation() != null) {
iv.getAnimation().cancel();
}
方案3:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
if (iv != null && iv.getAnimation() != null) {
iv.getAnimation().setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
animation.cancel();
}
@Override
public void onAnimationEnd(Animation animation) {
}
});
}
最終的結果是在所有三種情況下都是一樣的。我該如何旋轉圖像並讓它最終回到它開始的位置?
編輯:
一些進一步的信息:我的旋轉動畫:
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fromDegrees="0"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" />
如何啓動動畫:
ImageView iv = (ImageView) findViewById(R.id.refreshImage);
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.rotate);
rotation.setRepeatCount(Animation.INFINITE);
iv.startAnimation(rotation);
我的一些動畫仍然有點跳動,但它適用於大多數人,謝謝! – Catherine
@Catherine它可能看起來很動感,同時發生多件事情,但沒有測試過,但對於簡單的動畫來說,這是要走的路。 –
感謝您的好招。如果Android提供了api stopAfterCycleCompletion()或類似的東西,會更好。 – rpattabi