2017-08-14 65 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

我试过了,它仍然没有停止... –