2013-06-25 34 views
6

イメージアニメーションをローディングアニメーションとして使用しています。私のデータがロードされたら、私はアニメーションを止めようとしますが、最後までサイクリングして停止するのではなく、アニメーションが途中で止まり、停止して元の状態に戻ります。 。ここで サイクルの終了時にアニメーションを停止する方法は?

は、私が試したものです:

オプション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) { 

     } 
    }); 
} 

最終的な結果は、 3つすべての場合において同じである。どのようにイメージを回転させて、イメージが開始された場所に戻ってしまうのですか?

編集:

いくつかの詳細情報:私の回転アニメーション:私はアニメーションを開始どのように

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

答えて

14

あなたはそれを開始する前に、アニメーションのrepeatCountが、その後、無期限に設定アクションが終了したら、アニメーションの反復回数を0に設定します。アニメーションは、回避したいジャンプなしで現在のループと停止を終了します。あなたは、インスタンスのために1000に設定した場合、0に当時と(彼らは同じことを行うため、または-1)

//How you start 
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.rotate); 
      rotation.setRepeatCount(Animation.INFINITE); 
iv.startAnimation(rotation); 

//You do your stuff while it spins 
... 

//You tell it not to repeat again 
rotation.setRepeatCount(0); 

それはあなたが最初Animation.INFINITEに設定することが重要です、それは文句を言わないによると、何らかの理由で停止し、私のテスト。

+0

私のアニメーションのいくつかはまだまだ少し不安定ですが、ほとんどの人には感謝しています! – Catherine

+2

@Catherine複数のものが同時に発生しているアニメーションセットでは、テストしていないものの、単純なアニメーションではこれが邪魔になることがあります。 –

+0

すてきなトリックをありがとう。 Androidの方がapi stopAfterCycleCompletion()などを提供した方が良いでしょう。 – rpattabi

-2

iv.clearAnimation();アニメーションを停止するには

関連する問題