2014-11-08 3 views
0

Я хочу нарисовать прямую линию, следуя пальцем по касанию на холсте, так что точка ACTION_DOWN является начальной точкой, а ACTION_UP - конечной точкой. Путь с последующим пальцем может быть любым, но в конечном итоге фигура должна быть строкой от начальной точки до конечной точки. Пожалуйста, помогите мне с функцией onDraw().Drawing- Android Programming

+0

держать свой код один раз ... –

+0

посмотрите на Android-примеры, есть один «FingerPaint» в вашем каталоге SDK, который отвечает вашим требованиям. – rupps

ответ

0

Этот код нарисовать линию, когда вы касаетесь пальцем от одной точки к другой это DrawLineView.java

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Path; 
import android.util.AttributeSet; 
import android.view.MotionEvent; 
import android.view.View; 

public class DrawLineView extends View { 

private Paint paint = new Paint(); 
private Path path= new Path(); 
float eventx; 
float eventy; 

public DrawLineView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    paint.setAntiAlias(true); 
    paint.setStrokeWidth(5f); 
    paint.setColor(Color.BLUE); 
    paint.setStyle(Paint.Style.STROKE); 
} 
@Override 
protected void onDraw(Canvas canvas) { 
    canvas.drawPath(path, paint); 

} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    eventx=event.getX(); 
    eventy=event.getY(); 


    switch(event.getAction()){ 
    case MotionEvent.ACTION_DOWN : 
     path.moveTo(eventx, eventy); 

     return true; 
    case MotionEvent.ACTION_UP : 
     path.lineTo(eventx, eventy); 

     break; 
     default : 
      return false; 

    } 
    invalidate(); 

    return true; 
} 

} 

активность, чтобы запустить его:

import android.app.Activity; 
import android.os.Bundle; 

public class DrawActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(new DrawLineView(this, null)); 
} 


} 
+0

Thank You. Но с этим кодом я не вижу линию до тех пор, пока не подниму палец с экрана. Будет хорошо, если линия будет видна после пальца. – user4229427