Android开发中自定义ProgressBar控件的方法示例
本文实例讲述了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程序设计有所帮助。
相关文章
解决Android ListView数据为空及加载错误的方法
这篇文章主要为大家提供了一个解决Android ListView数据为空及加载错误的方法,感兴趣的小伙伴们可以参考一下2016-02-02Android编程判断是否连接网络的方法【WiFi及3G判断】
这篇文章主要介绍了Android编程判断是否连接网络的方法,结合实例形式分析了Android针对WiFi及3G网络连接的判断方法,需要的朋友可以参考下2017-02-02Kotlin 封装万能SharedPreferences存取任何类型详解
这篇文章主要介绍了Kotlin 封装万能SharedPreferences存取任何类型详解的相关资料,需要的朋友可以参考下2017-05-05Android程序开发ListView+Json+异步网络图片加载+滚动翻页的例子(图片能缓存,图片不错乱)
这篇文章主要介绍了Android程序开发ListView+Json+异步网络图片加载+滚动翻页的例子(图片能缓存,图片不错乱) 的相关资料,需要的朋友可以参考下2016-01-01Android中的ViewPager视图滑动切换类的入门实例教程
Android中ViewPager通常与Fragments组件共同使用来实现视图切换功能,本文就带大家一起来学习Android中的ViewPager视图滑动切换类的入门实例教程:2016-06-06
最新评论