I am working on Drawing app , this app is almost complete. Now I am stuck at one problem i.e. If I touch then my points is registered in touch event and saved in array. But this single touch dot is not drawn on canvas . But if i draw a path then it is drawn . Below is my code :
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(canvasBitmap, 0, 0, mPaint);
for (int size = mCompletedPaths.size(), i = 0; i < size; i++) {
PaintItem item1 = mCompletedPaths.get(i);
mPaint.setColor(item1.brushColor);
mPaint.setStrokeWidth(item1.brushSize);
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
HashMap<Integer, Path> hm = item1.paths;
for (int msize = hm.size(), j = 0; j < msize; j++) {
canvas.drawPath(hm.get(j), mPaint);
}
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int maskedAction = event.getActionMasked();
Log.d("", "onTouchEvent");
switch (maskedAction) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN: {
paths = new HashMap<Integer, Path>();
cor.setStrokeWidth(brushSize);
for (int size = event.getPointerCount(), i = 0; i < size; i++) {
Path p = new Path();
p.moveTo(event.getX(i), event.getY(i));
paths.put(event.getPointerId(i), p);
mX.put(event.getPointerId(i), event.getX(i));
mY.put(event.getPointerId(i), event.getY(i));
// mArrayList.add(paths);
mCompletedPaths.add(new PaintItem(paths, brushSize, cor
.getColor()));
}
break;
}
case MotionEvent.ACTION_MOVE: {
for (int size = event.getPointerCount(), i = 0; i < size; i++) {
Path p = paths.get(event.getPointerId(i));
if (p != null) {
float x = event.getX(i);
float y = event.getY(i);
p.quadTo(mX.get(event.getPointerId(i)),
mY.get(event.getPointerId(i)),
(x + mX.get(event.getPointerId(i))) / 2,
(y + mY.get(event.getPointerId(i))) / 2);
mX.put(event.getPointerId(i), event.getX(i));
mY.put(event.getPointerId(i), event.getY(i));
}
}
invalidate();
break;
}
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
case MotionEvent.ACTION_CANCEL: {
}
}
}
return true;
}
I need to draw path is user draw long line . I user just press (Like if point is registered) then it draw simple point . Please help me, These issues delay my app .