Android动画暂停和播放问题

dev*_*oid 5 animation android playback

我使用以下代码创建了一个动画.

private AnimationSet rootSet = new AnimationSet(true);
private int xstart=258;
private int ystart=146;
for(; k<points.length; k++) {
  if(k==1) {
    x1 = headX(xstart);
    y1 = headY(ystart);
    _animTime = 10;
  } else {

    x1 = headX(points[k-1][0]);
    y1 = headY(points[k-1][1]);
  }
  translate = new TranslateAnimation((float)x1, (float)x2, (float)y1, (float)y2);
  translate.setDuration(_animTime); 
  translate.setFillAfter(true);
  translate.setInterpolator(new AccelerateDecelerateInterpolator());
  totalAnimTime +=  _animTime;
  translate.setStartOffset(totalAnimTime);
  rootSet.addAnimation(translate);
  rootSet.setFillAfter(true);   
}

imv1.startAnimation(rootSet);
Run Code Online (Sandbox Code Playgroud)

它工作正常.现在我必须为这个动画添加暂停和播放功能.我怎样才能做到这一点?

Wro*_*lai 1

由于您已经扩展了有关您明确想要使用的更多信息AnimationSet,因此我找到了另一个适合您的解决方案。

示例代码:

AnimationSet根据需要扩展的类,以便取消AnimationSet

public class CustomAnimationSet extends AnimationSet {

     private AnimationListener mCustomAnimationSetListener;

     public CustomAnimationSet(boolean interpolator) {
          super(interpolator);
     }

     public CustomAnimationSet(Context context, AttributeSet attrs) {
          super(context, attrs);
     }

     @Override
     public void setAnimationListener(AnimationListener listener) {
          super.setAnimationListener(listener);
          mCustomAnimationSetListener = listener;
     }

     /**
      * Your cancel method....
      */
     public void cancel() {
          // Make sure you're cancelling an ongoing AnimationSet.
          if(hasStarted() && !hasEnded()) {
               if(mCustomAnimationSetListener != null) {
                    mCustomAnimationSetListener.onAnimationEnd(this);
               }
          }

          // Reset the AnimationSet's start time.
          setStartTime(Float.MIN_VALUE);
     }

}
Run Code Online (Sandbox Code Playgroud)

在你的Activity班级:

private CustomAnimationSet mAnimationSet;

// Init stuff.

@Override
public void onClick(View v) {
    switch(v.getId()) {
        case R.id.onPlayButton:
            // Might wanna add Animations before starting next time?
            mAnimationSet.start();
        case R.id.onPauseButton:
            mAnimationSet.cancel();
            mAnimationSet.reset();
    }
}
Run Code Online (Sandbox Code Playgroud)

这只是一个例子。目前我没有机会亲自测试它,这只是为了示例目的而编写的。