i'm developing android app have overlay view user can access anywhere. have taken code following question:
put simple, class "hud" call subclass viewgroup"hudview", containing necessary elements.
now want add in viewgroup seekbar that, on progress change, draw canvas every time: example seekbar progress =1, draw circle 10° angle, progress=2, redraw circle 20° angle, , on... circle , seekbar must overlay actual screen everywhere.
i've managed put canvas (created in ondraw method of viewgroup) , seekbar (created in oncreate method of hud class, listener). in method "onprogresschanged" redraw circle, doesnt seems work.
here listener code:
// seekbar change listener seekbar.setonseekbarchangelistener(new seekbar.onseekbarchangelistener() { @override public void onprogresschanged(seekbar seekbar, int progresvalue, boolean fromuser) { mview = new hudview(getapplicationcontext()); progress = progresvalue; windowmanager.layoutparams params = new windowmanager.layoutparams( windowmanager.layoutparams.type_system_overlay, windowmanager.layoutparams.flag_watch_outside_touch, pixelformat.translucent); params.gravity = gravity.center | gravity.top; params.settitle("load average"); windowmanager wm = (windowmanager) getsystemservice(window_service); wm.addview(mview, params); } @override public void onstarttrackingtouch(seekbar seekbar) { //toast.maketext(getapplicationcontext(), "started tracking seekbar", toast.length_short).show(); } @override public void onstoptrackingtouch(seekbar seekbar) { //textview.settext("covered: " + progress + "/" + seekbar.getmax()); //toast.maketext(getapplicationcontext(), "stopped tracking seekbar", toast.length_short).show(); } });
here ondraw method of hudview:
} @override protected void ondraw(canvas canvas) { super.ondraw(canvas); final rectf oval = new rectf(); oval.set(30, 30, 450, 450); bitmap bg = bitmap.createbitmap(480, 480, bitmap.config.argb_8888); canvas.drawarc(oval, 90, progress*10 , true, paint); }
Comments
Post a Comment