2013-03-13 93 views
-2

我創建了一個動畫(通過下面的代碼)的一個彈跳球。如何停止動畫

我想知道如何在特定條件下停止動畫,例如10秒後或球到達特定座標時。

代碼:基於您的代碼

public class MyDemoView extends ImageView{ 
    private Context mContext; 

    int x = -1; 
    int y = -1; 
    private int xVelocity = 10; 
    private int yVelocity = 5; 
    private Handler h; 
    private final int FRAME_RATE = 30; 

    public MyDemoView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     mContext = context; 
     h = new Handler(); 
    } 

    private Runnable r = new Runnable() { 
     @Override 
     public void run() { 
      invalidate(); 
     } 
    }; 

    protected void onDraw(Canvas c) { 
     BitmapDrawable ball = (BitmapDrawable) mContext.getResources().getDrawable(R.drawable.ball); 

     if (x<0 && y <0) { 
      x = this.getWidth()/2; 
      y = this.getHeight()/2; 
     } else { 
      x += xVelocity; 
      y += yVelocity; 

      if ((x > this.getWidth() - ball.getBitmap().getWidth()) || (x < 0)) { 
       xVelocity = xVelocity*-1; 
      } 

      if ((y > this.getHeight() - ball.getBitmap().getHeight()) || (y < 0)) { 
       yVelocity = yVelocity*-1; 
      } 
     } 

     c.drawBitmap(ball.getBitmap(), x2, y2, null); 
     h.postDelayed(r, FRAME_RATE); 
    } 
} 

回答

0

,只需調用h.removeCallbacks(r)

1

要停止動畫使用下面的代碼:

object.clearAnimation(); 

animation.cancel(); 

後者可能不適合2.1工作,不記得了。