Android: change color of rectangle at runtime -
i have linearlayout
, have custom view:
public class myview extends view { rect rects = new rect(30,30,80,80); canvas mycanvas; @override public void ondraw(canvas canvas) { mycanvas = canvas; paint.setcolor(color.red); canvas.drawrect(rects, paint); } void changecolor() { paint.setcolor(color.blue); mycanvas.drawrect(rects, paint); mycanvas.invalidate(); } }
in mainactiviy have:
linearlayout lv = (linearlayout) view.inflate(this, r.layout.activity_main, null); drawview = new myview(this); lv.addview(drawview); setcontentview(lv); button button3 = (button) findviewbyid(r.id.button3); button3.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { drawview.changecolor(); } });
after clicking button want change color of rectangle calling changecolor. new rectangle in other place created! can please me?
you're calling drawrect
twice (before invalidating view, , on ondraw
). also, there's no need store reference canvas
.
keep desired color in variable, change , invalidate view.-
public class myview extends view { private color color = color.red; rect rects = new rect(30,30,80,80); @override public void ondraw(canvas canvas) { paint.setcolor(color); canvas.drawrect(rects, paint); } void changecolor() { color = color.blue invalidate(); } }
Comments
Post a Comment