2012-09-22 43 views
2

我已經實現了下面的代碼。讓我知道在觸摸方法啓動時,必須更改代碼以繪製點。當觸擊方法啓動時,手指畫不畫點

目前線條繪畫順暢,同時觸摸MOVE方法運行。但如果我點擊那麼點不是繪圖。

我想畫點,而我開始TOUCH DOWN方法。

請給任何解決方案。

mPaint = new Paint(); 
     mPaintText = new Paint(); 
     mPaint.setAntiAlias(true); 
     mPaint.setDither(true); 
     mPaint.setColor(Color.BLUE); 
     mPaint.setStyle(Paint.Style.STROKE); 
     mPaint.setStrokeJoin(Paint.Join.ROUND); 
     mPaint.setStrokeCap(Paint.Cap.ROUND); 
     mPaint.setStrokeWidth(7); 

     mCanvas = new Canvas(); 
     mPath = new Path(); 



@Override 
    public boolean onTouch(View arg0, MotionEvent event) { 
     float x = event.getX(); 
     float y = event.getY(); 

     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 

       touch_start(x, y); 
      invalidate(); 
       break; 

       case MotionEvent.ACTION_MOVE: 
       touch_move(x, y); 
      invalidate(); 
       break; 

       case MotionEvent.ACTION_UP: 
       touch_up(); 
      invalidate(); 

       break; 
     } 
     return true; 
    } 


private float mX, mY; 
    private static final float TOUCH_TOLERANCE = 4; 

    private void touch_start(float x, float y) { 

mPath.reset(); 
     mPath.moveTo(x, y); 
     mX = x; 
     mY = y; 

} 

    private void touch_move(float x, float y) { 
     float dx = Math.abs(x - mX); 
     float dy = Math.abs(y - mY); 
     if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) { 
      mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2); 
      mX = x; 
      mY = y; 
     } 
    } 

private void touch_up() { 
     mPath.lineTo(mX, mY); 

     mCanvas.drawPath(mPath, mPaint); 

     Paint newPaint = new Paint(mPaint); // Clones the mPaint object 
     mPath = new Path(); 

    } 


@Override 
    protected void onDraw(Canvas canvas) { 

     canvas.drawPath(mPath, mPaint); 

} 

回答