【问题标题】:Stop AnimatorSet of ObjectAnimators in Android在 Android 中停止 ObjectAnimators 的 AnimatorSet
【发布时间】:2014-10-19 00:56:12
【问题描述】:

我试图在单击按钮时停止 ImageView 的动画。我正在使用的动画是由 5 个 ObjectAnimators 组成的 AnimatorSet...不工作。

感谢您的帮助。

【问题讨论】:

    标签: android animation reset objectanimator


    【解决方案1】:

    您应该可以调用animatorSet.cancel() 来取消动画。这是一个在动画开始 5 秒后取消动画的示例:

    package com.example.myapp2;
    
    import android.animation.Animator;
    import android.animation.AnimatorSet;
    import android.animation.ObjectAnimator;
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.widget.TextView;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class MyActivity extends Activity {
        /**
         * Called when the activity is first created.
         */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            TextView tv = (TextView) findViewById(R.id.hello_world);
    
            List<Animator> animations = new ArrayList<Animator>();
    
            animations.add(ObjectAnimator.ofInt(tv, "left", 100, 1000).setDuration(10000));
            animations.add(ObjectAnimator.ofFloat(tv, "textSize", 10, 50).setDuration(10000));
    
            final AnimatorSet animatorSet = new AnimatorSet();
            animatorSet.playTogether(animations);
            animatorSet.start();
    
            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    animatorSet.cancel();
                }
            }, 5000);
        }
    }
    

    【讨论】:

      【解决方案2】:

      如果您添加了 AnimatorSet 侦听器,请确保在取消之前删除侦听器。

      animatorSet.removeAllListeners();
      animatorSet.end();
      animatorSet.cancel();
      

      【讨论】:

      • 这实际上是一个非常重要的事实。
      • 不需要end(),因为cancel 会自动调用它。如果您在cancel 之后删除了侦听器,将会有所不同,因为您将首先收到onAnimationCancel,然后是onAnimationEnd
      猜你喜欢
      • 1970-01-01
      • 2014-11-22
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      相关资源
      最近更新 更多