캔버스 관련 질문입니다. 첫 번째로 아무곳에 화면을 터치할 때 원이 생기게 하고 다른 곳에 두 번째 터치할 때도 원이 생기면서 첫 번째 원과 직선으로 연결되는 라인이 뜨게 하려고 합니다. 계속 터치할때마다 원이 생기며 그 전에 원과 직선으로 연결시키고 싶은데 어떻게 해야할지 감이 안오네요. invalidate 때문인지 계속 갱신되면서 사라지는데 createbitmap을 해야할지..아래는 실패한 코드입니다.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyPaintView(this));
setTitle("FIN01");
}
private static class MyPaintView extends View {
int startX, startY, stopX, stopY = -1;
public MyPaintView(Context context) { super(context); }
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint myPaint = new Paint();
myPaint.setAntiAlias(true);
myPaint.setStrokeWidth(10);
myPaint.setStyle(Paint.Style.FILL);
myPaint.setColor(Color.BLUE);
if(startX > 0 && startY > 0) {
canvas.drawCircle(startX - 5, startY - 5, 30, myPaint);
}
canvas.drawLine(startX, startY, stopX - 5, stopY - 5, myPaint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = (int) event.getX();
startY = (int) event.getY();
break;
case MotionEvent.ACTION_UP:
stopX = (int) event.getX();
stopY = (int) event.getY();
this.invalidate();
}
return true;
}
}