2013-03-20 2 views
0

Я пытаюсь нарисовать строку в android. Но я не удовлетворен тем, что, поскольку она не рисует полную строку, она рисует пунктирную линию, когда я быстро перемещаю объект и рисует полную строку, когда я переместить объект slowly.Plaese помочь мне, почему это happenes.I хочет просто полную линии не пунктирный код line.My здесь: На сенсорном событии зрения:Линия рисования с использованием drawPoint()

public boolean onTouch(View view, MotionEvent event) { 
    // TODO Auto-generated method stub 
    final int X = (int) event.getRawX(); 
    final int Y = (int) event.getRawY(); 
    switch (event.getAction() & MotionEvent.ACTION_MASK) { 
    case MotionEvent.ACTION_DOWN: 
     RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view 
       .getLayoutParams(); 

     _xDelta = X - lParams.leftMargin; 
     Log.e("ACTION DOWN X", "" + Y + "---" + lParams.leftMargin); 
     _yDelta = Y - lParams.topMargin; 
     Log.e("ACTION DOWN Y", "" + Y + "---" + lParams.leftMargin); 

     break; 
    case MotionEvent.ACTION_UP: 
     break; 
    case MotionEvent.ACTION_POINTER_DOWN: 
     break; 
    case MotionEvent.ACTION_POINTER_UP: 
     break; 
    case MotionEvent.ACTION_MOVE: 
     RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view 
       .getLayoutParams(); 
     layoutParams.leftMargin = X - _xDelta; 
     Log.e("ACTION Move left margin", "" + (X - _xDelta)); 
     layoutParams.topMargin = Y - _yDelta; 
     Log.e("ACTION Move top margin", "" + (Y - _yDelta)); 
     layoutParams.rightMargin = -250; 
     layoutParams.bottomMargin = -250; 

     view.setBackgroundColor(random.nextInt()); 

     view.setLayoutParams(layoutParams); 
     draw = new DrawLine(MainActivity.this, X - _xDelta, Y - _yDelta); 
     root.addView(draw); 

     break; 
    } 

    root.invalidate(); 
    return true; 
} 

И мой метод рисования выглядит так:

@Override 
    protected void onDraw(final Canvas canvas) { 
     // TODO Auto-generated method stub 
     super.onDraw(canvas); 
     // paint.setColor(random.nextInt()); 
     paint.setStyle(Style.STROKE); 
     paint.setStrokeWidth(4); 
     canvas.drawPoint(startX, startY, paint); 


    } 

И также я хочу знать, как очистить весь чертеж.
Пожалуйста, помогите мне решить эту проблему. Спасибо.

ответ

1

Итак, как вы ожидаете, что линия должна быть нарисована, когда вы рисуете только точки? Регистрация/обработка событий прикосновения не достаточно быстра, чтобы уволить каждого нового пикселя, который коснулся ваш палец. Используйте путь для хранения ваших точек и нарисуйте линию/путь, используя точки вашего пути.

Смежные вопросы