캔버스에 점을 그렸는데 다른곳에 또 찍으면 지워지는데 안지워지고 있었으면 좋겠습니다/
어떻게 해야되나요??
package com.testt;
import android.R.color;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class CustomView extends View {
private Paint paint;
int thisX, thisY;
public CustomView(Context context) {
super(context);
paint = new Paint();
paint.setColor(Color.RED);
}
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
Toast.makeText(super.getContext(), "모션:"+event.getX()+","+event.getY(), 1000).show();
thisX = (int)event.getX();
thisY = (int)event.getY();
invalidate();
}
return super.onTouchEvent(event);
}
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPoint(thisX, thisY,paint);
}
private void drawPoint(int thisX2, int thisY2, Paint paint2) {
// TODO Auto-generated method stub
}
}
class PView extends View implements View.OnTouchListener { private static final String TAG = "DrawView"; private static final float MINP = 0.25f; private static final float MAXP = 0.75f; private Path mPath; private Paint mPaint; private ArrayList<Path> paths = new ArrayList<Path>(); public PView(Context context) { super(context); setFocusable(true); setFocusableInTouchMode(true); this.setOnTouchListener(this); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setDither(true); mPaint.setColor(0xFFFFFFFF); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeJoin(Paint.Join.ROUND); mPaint.setStrokeCap(Paint.Cap.ROUND); mPaint.setStrokeWidth(6); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); } @Override protected void onDraw(Canvas canvas) { for (Path p : paths){ canvas.drawPath(p, mPaint); } } private float mX, mY; private static final float TOUCH_TOLERANCE = 4; private void touch_start(float x, float y) { mPath = new Path(); paths.add(mPath); mPath.reset(); mPath.moveTo(x, y); mX = x; mY = y; } private void touch_move(float x, float y) { float dx = Math.abs(x - mX); float dy = Math.abs(y - mY); if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) { mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2); mX = x; mY = y; } } private void touch_up() { mPath.lineTo(mX, mY); } @Override public boolean onTouch(View arg0, MotionEvent event) { float x = event.getX(); float y = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: touch_start(x, y); invalidate(); break; case MotionEvent.ACTION_MOVE: touch_move(x, y); invalidate(); break; case MotionEvent.ACTION_UP: touch_up(); invalidate(); break; } return true; } }
APIDemo -> Graphics ->FingerPaint 참고하시면 해결하실거같아요