2012-02-24 8 views
1

私はViewを拡張するクラスを持っています。引出しを指に沿って動かす

private class Draw2D extends View{ 
      public Draw2D(Context context) { 
     super(context); 
       } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     x = event.getX(); 
     y = event.getY(); 
     switch(event.getAction()){ 
     case MotionEvent.ACTION_MOVE:{ 

      break; 
     } 

     } 
     return super.onTouchEvent(event); 
    } 


    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     Paint paint = new Paint(); 
     paint.setStyle(Paint.Style.FILL); 
     paint.setColor(Color.WHITE); 
     ShapeDrawable rectangle = 
     new ShapeDrawable(new RectShape()); 
     rectangle.getPaint().setColor(Color.GRAY); 
     rectangle.getPaint().setStyle(Paint.Style.STROKE); 
     rectangle.getPaint().setStrokeWidth(3); 
     rectangle.setBounds(50, 30, 200, 150); 
     rectangle.draw(canvas); 
    } 
} 

画面上の指に沿って形を移動したいと思います。 私は何をしたいのですかMotionEvent.ACTION_MOVEで書くべきですか?

答えて

2

タッチx、y座標と比較できるように、ドロアブルの座標を追跡する必要があります。

だから基本的には:

// can modify to adjust speed at which drawable moves 
int movementSpeed = 2; 

if (drawableX < x) 
    drawableX += movementSpeed; 
else if (drawableX > x) 
    drawableX -= movementSpeed; 

if (drawableY < y) 
    drawableY += movementSpeed; 
else if (drawableY > y) 
    drawableY -= movementSpeed; 

はその後更新drawableX、drawableY座標を使用して描画可能を再描画する必要があります。

関連する問題