2016-11-16 12 views
0

私のプログラムでは、画像は垂直にアニメーション化されています。私はアニメーションを右マージンで停止したいと思います。私は、2番目のif-sequenceのcondtionはそれを言うべきだと思いますが、invalidate()メソッドがその時点でアニメートするのを止めるにはどうすればいいですか?アンドロイド - 停止アニメーション

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) { 
      x = this.getWidth()/2; 
      y = this.getHeight()/3; 
     } 

      else { 
       x += xVelocity; 

        if ((x > this.getWidth() - ball.getBitmap().getWidth()) || (x < 0)) { 





        } 
      } 

     c.drawBitmap(ball.getBitmap(), x, y, null); 

     h.postDelayed(r, FRAME_RATE); 


    } 
} 
+0

あなたの質問は不明です。 –

+0

どのようにして不明ですか? –

答えて

0

h.postDelayed(r, FRAME_RATE);は、アニメーションを続行する場合にのみ使用してください。

これを実現する方法の1つは、アニメーションアイテムの位置に応じて設定するブール値(continueAnimationとする)です。次に書くことができます

c.drawBitmap(ball.getBitmap(), x, y, null); 
if (continueAnimation) 
    { 
     h.postDelayed(r, FRAME_RATE); 
    } 
+0

ありがとう、それは動作します! –

関連する問題