-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);
    }
}
4

2 に答える 2

1

アニメーションを停止するには、次のコードを使用します。

object.clearAnimation();

また

animation.cancel();

後者は 2.1 では機能しない可能性があります。思い出せません。

于 2013-03-13T09:11:29.833 に答える
0

コードに基づいて、単に呼び出しh.removeCallbacks(r)ますか?

于 2013-03-13T09:08:47.277 に答える