2017-08-14 63 views
0

我在其中一個圖像視圖上實施了動畫。我的問題是動畫不會停下來。我稱之爲一切clearanimation我設置爲null設置它取消,它仍然不會停止。動畫不會停止運行

public void tiltani(){ 
ImageView vault = (ImageView)findViewById(R.id.vault2) ; 
Animation tilt = AnimationUtils.loadAnimation(this, R.anim.tilt); 

vault.startAnimation(tilt); 
} 
public void stopani() { 
Animation tilt = AnimationUtils.loadAnimation(this, R.anim.tilt); 
vault.clearAnimation(); 
vault.setAnimation(null); 
tilt.cancel(); 
tilt.reset(); 
} 

這裏是xml文件

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<rotate 
android:fromDegrees="0" 
android:toDegrees="6" 
android:pivotX="50%" 
android:pivotY="50%" 
android:duration="500" 
android:repeatCount="infinite"/> 

<rotate 
    android:fromDegrees="6" 
    android:toDegrees="-2" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="500" 
    android:repeatMode="reverse" 
    android:repeatCount="infinite" 
    /> 

這裏是我開始它

Intent intent1 = getIntent(); 

    if (intent1.hasExtra("id1")) { 
     tiltani(); 

,我試圖阻止/在一個onclick方法取消一切

​​

更新

Animation tilt = AnimationUtils.loadAnimation(this, R.anim.tilt); 

if (intent1.hasExtra("id1")) { 
     vault.startAnimation(tilt); 



    vault.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

vault.setImageDrawable(ContextCompat.getDrawable(MainActivity.this, 
R.drawable.chestopen)); 

       vault.setAnimation(null); 
+0

也許'的android:repeatCount = 「無限」',在XML文件中,是你的問題的原因。嘗試刪除它 – GuilhermeFGL

+0

不會取消動畫停止它雖然 –

+0

把一個整數值,所以,'無限'是你的問題的原因 – GuilhermeFGL

回答

0

你可以使用vault.startAnimation(tilt);啓動動畫,並使用vault.setAnimation(null);停止動畫。

你已經初始化動畫第二次在stopani()方法。您的視圖初始化和動畫初始化應該是全局的。

你的代碼應該是這樣的。

ImageView vault = (ImageView)findViewById(R.id.vault2);   //Global variable 
Animation tilt = AnimationUtils.loadAnimation(this, R.anim.tilt); //Global variable 

public void tiltani(){ 
    vault.startAnimation(tilt); 
} 
public void stopani() { 
    vault.clearAnimation(); 
    vault.setAnimation(null); 
    tilt.cancel(); 
    tilt.reset(); 
} 

希望,它會幫助你.. :)

+0

我的stopani方法已經調用setAnimation(null),但它無計可施。這發生在一個onclick方法 –

+0

現在我必須嘗試這一個..只是你可以嘗試..它會工作。我認爲你重新初始化不需要的東西..可能是它的原因。 – Raja

+0

我試過了,它仍然沒有停止... –