2012-10-21 134 views
1

我正嘗試在觸摸事件的屏幕上創建繪圖。我也成功地做到了這一點。這裏是我正在使用的代碼用手指在Android屏幕上繪製

public class DrawView extends View implements OnTouchListener { 
    private static final String TAG = "DrawView"; 

    List<Point> points = new ArrayList<Point>(); 
    Paint paint = new Paint(); 

    public DrawView(Context context) { 
     super(context); 
     setFocusable(true); 
     setFocusableInTouchMode(true); 

     this.setOnTouchListener(this); 

     paint.setColor(Color.BLACK); 
     paint.setAntiAlias(true); 
    } 

    @Override 
    public void onDraw(Canvas canvas) { 
     for (Point point : points) { 

      canvas.drawCircle(point.x, point.y, 8, paint); 
      // Log.d(TAG, "Painting: "+point); 
     } 
    } 

    public boolean onTouch(View view, MotionEvent event) { 
     // if(event.getAction() != MotionEvent.ACTION_DOWN) 
     // return super.onTouchEvent(event); 
     Point point = new Point(); 
     point.x = event.getX(); 
     point.y = event.getY(); 
     points.add(point); 
     invalidate(); 
     Log.d(TAG, "point: " + point); 
     return true; 
    } 
} 

class Point { 
    float x, y; 

    @Override 
    public String toString() { 
     return x + ", " + y; 
    } 
} 

正如你所看到的,我正在爲用戶觸及的每一​​點畫一個圓。當用戶慢慢移動他的手指時,我得到連續線/曲線。但是,如果用戶快速移動他的手指,我沒有得到連續的繪畫。而是手指移動路徑上的分隔點列表。

我該如何正確地做到這一點? 謝謝

回答

0

我已經在這個帖子上一個MapView回答過類似的問題,對於手繪圖:Hand Draw over MapView

您可以使用相同的代碼,通過Point更換GeoPoint和removigin Geopoints之間的轉換和點。