graphics - Android drawing / colouring app -
i making android colouring app uses draw feature. have there multiple colours user can choose , can select colour , draw when select new colour changes drawn lines not new lines being drawn. on how can rectify , have multiple colours used on drawing appreciated. of code below: first colouring class public class colouring extends view {
// setup initial color private int paintcolor = color.black; private paint drawpaint; private path drawpath; // stores path //private path path = new path(); public colouring(context context, attributeset attrs) { super(context, attrs); setfocusable(true); setfocusableintouchmode(true); setupcolour(); } private void setupcolour() { // setup paint color , stroke styles drawpath = new path(); drawpaint = new paint(); drawpaint.setcolor(paintcolor); drawpaint.setantialias(true); drawpaint.setstrokewidth(15); drawpaint.setstyle(paint.style.stroke); drawpaint.setstrokejoin(paint.join.round); drawpaint.setstrokecap(paint.cap.round); } @override protected void ondraw(canvas canvas) { canvas.drawpath(drawpath, drawpaint); } public void setcolor(string newcolor) { invalidate(); paintcolor = color.parsecolor(newcolor); drawpaint.setcolor(paintcolor); } @override public boolean ontouchevent(motionevent event) { float pointx = event.getx(); float pointy = event.gety(); // checks event occurs switch (event.getaction()) { case motionevent.action_down: drawpath.moveto(pointx, pointy); return true; case motionevent.action_move: drawpath.lineto(pointx, pointy); break; default: return false; } // force view draw again invalidate(); return true; } }
and second main activity drawing happens. public class colourimage extends activity {
private colouring drawview; private imagebutton currcolour, save; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_colour_image); drawview = (colouring)findviewbyid(r.id.colouringbook); linearlayout paintlayout = (linearlayout) findviewbyid(r.id.colours); currcolour = (imagebutton) paintlayout.getchildat(0); currcolour.setimagedrawable(getresources().getdrawable(r.drawable.paint_pressed)); save = (imagebutton)findviewbyid(r.id.save); } public void saveclicked(view view){ drawview.setdrawingcacheenabled(true); string saveimage = mediastore.images.media.insertimage( getcontentresolver(), drawview.getdrawingcache(), uuid.randomuuid().tostring()+".png", "colouredimage"); if(saveimage!=null){ toast savedtoast = toast.maketext(getapplicationcontext(), "your colouring has been saved phone", toast.length_short); savedtoast.show(); } else{ toast unsavedtoast = toast.maketext(getapplicationcontext(), "your colouring not saved", toast.length_short); unsavedtoast.show(); } drawview.destroydrawingcache(); } public void paintclicked(view view){ if(view!=currcolour){ imagebutton colourimage = (imagebutton)view; string color = view.gettag().tostring(); drawview.setcolor(color); colourimage.setimagedrawable(getresources().getdrawable(r.drawable.paint_pressed)); currcolour.setimagedrawable(getresources().getdrawable(r.drawable.paint)); currcolour=(imagebutton)view; } } }
thanks again :)
Comments
Post a Comment