Android开发中自定义ProgressBar控件的方法示例
程序员文章站
2023-12-15 19:21:16
本文实例讲述了android开发中自定义progressbar控件的方法。分享给大家供大家参考,具体如下:
很简单,首先加载drawable,在onmeasure设置好其...
本文实例讲述了android开发中自定义progressbar控件的方法。分享给大家供大家参考,具体如下:
很简单,首先加载drawable,在onmeasure设置好其区域大小,
然后使用canvas.cliprect绘图
public class progressview extends imageview { private drawable maskdraw; /** * 加载的进度 0-100 */ private int mprocess = 20; public progressview(context context, attributeset attrs) { super(context, attrs); maskdraw = context.getresources().getdrawable(r.drawable.red_bg); } @override protected void ondraw(canvas canvas) { super.ondraw(canvas); // 保存当前画笔的状态 canvas.save(); int topline = (int) (getheight() - getheight() * getprocess() / 100); /* * canvas 剪切出一个区域,使在这个区域里面的内容是有效的,区域之外是无效的。 */ canvas.cliprect(0, topline, getwidth(), getheight()); maskdraw.draw(canvas); // 恢复到之前保存的状态 canvas.restore(); } @override protected void onmeasure(int widthmeasurespec, int heightmeasurespec) { super.onmeasure(widthmeasurespec, heightmeasurespec); maskdraw.setbounds(0, 0, getwidth(), getheight()); } public float getprocess() { return mprocess; } /** * 设置新的进度以后,自动刷新 */ public void setprogress(int mprocess) { if (mprocess > 100) { this.mprocess = 100; } if (mprocess < 0) { this.mprocess = 0; } this.mprocess = mprocess; invalidate(); } }
使用方法
public class progressactivity extends activity { private progressview piv; private int pivdeep = 0; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_progressview); piv = (progressview) findviewbyid(r.id.my_pro_iv); handler.sendemptymessage(2); } private handler handler = new handler() { @override public void handlemessage(message msg) { switch (msg.what) { case 1: piv.setprogress(pivdeep); break; case 2: new thread() { public void run() { while (true) { pivdeep = (pivdeep + 5) % 100; handler.sendemptymessage(1); try { thread.sleep(200); } catch (interruptedexception e) { e.printstacktrace(); } } }; }.start(); break; default: break; } } }; }
更多关于android相关内容感兴趣的读者可查看本站专题:《android窗口相关操作技巧总结》、《android开发入门与进阶教程》、《android调试技巧与常见问题解决方法汇总》、《android基本组件用法总结》、《android视图view技巧总结》、《android布局layout技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。