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

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -