2013-08-03 3 views
0

Ниже приведена логика коммутатора для рисования на поверхности, она не рисуется правильно. Не знаю, где я пойду не так. EDIT: класс был удален, поскольку это не помогло.Логика OnTouchEvent для приложения для рисования поверхности

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    synchronized (mThread.getSurfaceHolder()) { 

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

      break; 

     case MotionEvent.ACTION_DOWN: 
      currentDrawingPath = null; 
      currentDrawingPath = new DrawingPath(); 
      currentDrawingPath.getPath().moveTo(eventX, eventY); 
      startX = eventX; 
      startY = eventY; 
      canvasPaths.add(currentDrawingPath); 
      //invalidate(); 
      break; 

     case MotionEvent.ACTION_MOVE: 
      float dx = Math.abs(eventX - startX); 
      float dy = Math.abs(eventY - startY); 
      currentDrawingPath.getPath().quadTo(startX, startY, 
        (eventX + startX)/2, (eventY + startY)/2); 
      startX = eventX; 
      startY = eventY; 
      //currentDrawingPath.getPath().lineTo(startX, startY); 
      break; 

    } 
    return true; 
+0

'Math.abs', почему? 'X = (int) event.getX(); \t \t \t Y = (int) event.getY(); \t \t \t \t invalidate(); \t \t \t c2.drawCircle (X, Y, 80, pTouch); \t 'И, пожалуйста, напишите больше кода –

ответ

0

Ниже код, который исправили проблему,

switch (event.getAction() & MotionEvent.ACTION_MASK) { 
    case MotionEvent.ACTION_UP: 
     currentDrawingPath.getPath().lineTo(event.getX(), event.getY()); 
      break; 
    case MotionEvent.ACTION_DOWN: 
     currentDrawingPath = new DrawingPath(); 
     currentDrawingPath.setPaintForPath(); 

     // update the starting point of the new path 
     currentDrawingPath.getPath().moveTo(event.getX(), event.getY()); 
     currentDrawingPath.getPath().lineTo(event.getX(), event.getY()); 
     canvasPaths.add(currentDrawingPath); 
     break; 
    case MotionEvent.ACTION_MOVE: 
     currentDrawingPath.getPath().lineTo(event.getX(), event.getY()); 
     break; 
    } 
    return true; 
Смежные вопросы