java - cannot see path while moving finger -



java - cannot see path while moving finger -

hey implementing doodling functoinality in application. while drawing line cannot see line path while moving finger. can see line when ie touchup, 1 help me can see line drawn while moving finger along path.

public class doodleimageview extends view { // drawing path private path drawpath; // drawing point private boolean drawpoint; // drawing , canvas paint public paint drawpaint; public paint temppaint; private paint canvaspaint; // initial color private int paintcolor; // canvas private canvas drawcanvas; // canvas bitmap private bitmap canvasbitmap; private arraylist<path> paths = new arraylist<path>(); private arraylist<integer> pathscolor = new arraylist<integer>(); private arraylist<integer> pointcolor = new arraylist<integer>(); private arraylist<integer> marker = new arraylist<integer>(); private arraylist<point> points = new arraylist<point>(); private float mx, my; private final float touch_tolerance = 1; public doodleimageview(context context, attributeset attrs) { super(context, attrs); setupdrawing(); // todo auto-generated constructor stub } private void setupdrawing() { // drawing area setup interaction drawpath = new path(); drawpaint = new paint(); // drawpaint.setcolor(paintcolor); drawpaint.setantialias(true); drawpaint.setstrokewidth(20); drawpaint.setstyle(paint.style.stroke); drawpaint.setstrokejoin(paint.join.round); drawpaint.setstrokecap(paint.cap.round); canvaspaint = new paint(paint.dither_flag); } private paint setuppaint(int color) { temppaint = new paint(); temppaint.setcolor(color); temppaint.setantialias(true); temppaint.setstrokewidth(20); temppaint.setstyle(paint.style.stroke); temppaint.setstrokejoin(paint.join.round); temppaint.setstrokecap(paint.cap.round); homecoming temppaint; } @override protected void onsizechanged(int w, int h, int oldw, int oldh) { // todo auto-generated method stub super.onsizechanged(w, h, oldw, oldh); canvasbitmap = bitmap.createbitmap(w, h, bitmap.config.argb_8888); drawcanvas = new canvas(canvasbitmap); } @override protected void ondraw(canvas canvas) { // todo auto-generated method stub if (marker.size() > 0) { (int = 0; < paths.size(); i++) { canvas.drawpath(paths.get(i), setuppaint(pathscolor.get(i))); } (int = 0; < points.size(); i++) { canvas.drawpoint(points.get(i).x, points.get(i).y, setuppaint(pointcolor.get(i))); } } } @override public boolean ontouchevent(motionevent event) { // todo auto-generated method stub float touchx = event.getx(); float touchy = event.gety(); switch (event.getaction()) { case motionevent.action_down: touch_start(touchx, touchy); invalidate(); break; case motionevent.action_move: touch_move(touchx, touchy); invalidate(); break; case motionevent.action_up: touch_up(); invalidate(); break; default: homecoming false; } invalidate(); homecoming true; } private void touch_start(float x, float y) { drawpoint = true; drawpath.reset(); drawpath.moveto(x, y); drawcanvas.drawpath(drawpath, drawpaint); mx = x; = 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) { drawpath.quadto(mx, my, (x + mx) / 2, (y + my) / 2); drawpoint = false; drawcanvas.drawpath(drawpath,drawpaint); mx = x; = y; } } private void touch_up() { if (drawpoint == true) { drawcanvas.drawpoint(mx, my, drawpaint); point p = new point(); p.set((int) mx, (int) my); points.add(p); pointcolor.add(drawpaint.getcolor()); marker.add(0); } else { drawpath.lineto(mx, my); drawcanvas.drawpath(drawpath, drawpaint); paths.add(drawpath); drawpath = new path(); drawpath.reset(); pathscolor.add(drawpaint.getcolor()); marker.add(1); } } public void clear() { if (marker.size() > 0) { paths.clear(); points.clear(); pathscolor.clear(); pointcolor.clear(); invalidate(); } } public void undo() { if (marker.size() > 0) { if (marker.get(marker.size() - 1) == 1) { if (paths.size() > 0) { paths.remove(paths.size() - 1); pathscolor.remove(pathscolor.size() - 1); marker.remove(marker.size() - 1); invalidate(); } } else { if (points.size() > 0) { points.remove(points.size() - 1); pointcolor.remove(pointcolor.size() - 1); marker.remove(marker.size() - 1); invalidate(); } } } } }

public class doodleimageview extends view { // drawing path private path drawpath; // drawing point private boolean drawpoint; // drawing , canvas paint public paint drawpaint; public paint temppaint; private paint canvaspaint; // initial color private int paintcolor; // canvas private canvas drawcanvas; // canvas bitmap private bitmap canvasbitmap; private arraylist<path> paths = new arraylist<path>(); private arraylist<integer> pathscolor = new arraylist<integer>(); private arraylist<integer> pointcolor = new arraylist<integer>(); private arraylist<integer> marker = new arraylist<integer>(); private arraylist<point> points = new arraylist<point>(); private float mx, my; private final float touch_tolerance = 1; public doodleimageview(context context, attributeset attrs) { super(context, attrs); setupdrawing(); // todo auto-generated constructor stub } private void setupdrawing() { // drawing area setup interaction drawpath = new path(); drawpaint = new paint(); // drawpaint.setcolor(paintcolor); drawpaint.setantialias(true); drawpaint.setstrokewidth(20); drawpaint.setstyle(paint.style.stroke); drawpaint.setstrokejoin(paint.join.round); drawpaint.setstrokecap(paint.cap.round); canvaspaint = new paint(paint.dither_flag); } private paint setuppaint(int color) { temppaint = new paint(); temppaint.setcolor(color); temppaint.setantialias(true); temppaint.setstrokewidth(20); temppaint.setstyle(paint.style.stroke); temppaint.setstrokejoin(paint.join.round); temppaint.setstrokecap(paint.cap.round); homecoming temppaint; } @override protected void onsizechanged(int w, int h, int oldw, int oldh) { // todo auto-generated method stub super.onsizechanged(w, h, oldw, oldh); canvasbitmap = bitmap.createbitmap(w, h, bitmap.config.argb_8888); drawcanvas = new canvas(canvasbitmap); } @override protected void ondraw(canvas canvas) { // todo auto-generated method stub if (marker.size() > 0) { (int = 0; < paths.size(); i++) { canvas.drawpath(paths.get(i), setuppaint(pathscolor.get(i))); } (int = 0; < points.size(); i++) { canvas.drawpoint(points.get(i).x, points.get(i).y, setuppaint(pointcolor.get(i))); } } canvas.drawpath(drawpath,drawpaint); } @override public boolean ontouchevent(motionevent event) { // todo auto-generated method stub float touchx = event.getx(); float touchy = event.gety(); switch (event.getaction()) { case motionevent.action_down: touch_start(touchx, touchy); invalidate(); break; case motionevent.action_move: touch_move(touchx, touchy); invalidate(); break; case motionevent.action_up: touch_up(); invalidate(); break; default: homecoming false; } invalidate(); homecoming true; } private void touch_start(float x, float y) { drawpoint = true; drawpath.reset(); drawpath.moveto(x, y); drawcanvas.drawpath(drawpath, drawpaint); mx = x; = 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) { drawpath.quadto(mx, my, (x + mx) / 2, (y + my) / 2); drawpoint = false; drawcanvas.drawpath(drawpath,drawpaint); mx = x; = y; } } private void touch_up() { if (drawpoint == true) { drawcanvas.drawpoint(mx, my, drawpaint); point p = new point(); p.set((int) mx, (int) my); points.add(p); pointcolor.add(drawpaint.getcolor()); marker.add(0); } else { drawpath.lineto(mx, my); drawcanvas.drawpath(drawpath, drawpaint); paths.add(drawpath); drawpath = new path(); drawpath.reset(); pathscolor.add(drawpaint.getcolor()); marker.add(1); } } public void clear() { if (marker.size() > 0) { paths.clear(); points.clear(); pathscolor.clear(); pointcolor.clear(); invalidate(); } } public void undo() { if (marker.size() > 0) { if (marker.get(marker.size() - 1) == 1) { if (paths.size() > 0) { paths.remove(paths.size() - 1); pathscolor.remove(pathscolor.size() - 1); marker.remove(marker.size() - 1); invalidate(); } } else { if (points.size() > 0) { points.remove(points.size() - 1); pointcolor.remove(pointcolor.size() - 1); marker.remove(marker.size() - 1); invalidate(); } } } } }

java android android-canvas android-custom-view

Comments

Popular posts from this blog

model view controller - MVC Rails Planning -

ruby on rails - Devise Logout Error in RoR -

html - Submenu setup with jquery and effect 'fold' -