时间:2021-05-21
Android 实现自定义圆形进度条:
Android 自定义view,在大多数项目中根据客户需求及用户的体验度来说,都要重新写控件的来展示漂亮的界面,这里就对圆形进度条说下如何实现。
绘制自定义的圆形进度条,分为三个步骤,内圆、外圆、文字。
其中内圆和文字比较好绘制,进度条的变化是由外圆来控制的,所以核心就是绘制外圆。
首先定义分别定义这三个画笔,两个Paint和一个TextPaint
然后让我们分别绘制出这三个部分获取自定义View的宽和高
float halfWidth = getMeasuredWidth() / 2;
float halfHeight = getMeasuredHeight() / 2;
绘制外圆
canvas.drawCircle(halfWidth, halfHeight, CIRCLE_RADIUS,mCirclePaint);
绘制内圆
canvas.drawCircle(halfWidth, halfHeight,CIRCLE_RADIUS - CIRCLE_LINE_WIDTH / 2,mCircleInnerPaint);
绘制文字
canvas.drawText(mProgressText,halfWidth - mTextPaint.measureText(mProgressText) / 2,halfHeight - (mTextPaint.ascent() + mTextPaint.descent()) / 2,mTextPaint);
最后的效果如下图
绘制完了基本的图案,下一步就是实现进度条的动画效果
进度条是实时变化的,所以需要不断的去更新进度,进度可以用圆弧开绘制
设置进度的方法
在Activity中开一个线程模拟网络请求后更新进度条的操作
没30毫秒更新一次数据,当进度超过100,停止刷新界面
private void startProgress() { new Thread() { @Override public void run() { super.run(); float currentProgress = mCustomView.getCurrentProgress(); ++currentProgress; mCustomView.setProgress(currentProgress); try { sleep(30); if (currentProgress <= 100) { startProgress(); } else { mCustomView.progressFinished(); } } catch (InterruptedException e) { e.printStackTrace(); } } }.start();}最核心的部分,进度更新后更新绘制圆形进度条
绘制的思路就是把progress进度转换为圆弧的弧度,然后不断绘制出来,这里要注意,从-90开始,也就是时钟的0点时刻开始绘制。如果进度已经绘制完成,或者还没有开始,则直接绘制一个圆形。
大概思路就是这样,最后上两张效果图
如果有什么更好的实现思路,可以一起讨论学习。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Android自定义圆形进度条,分享给大家供大家参考。具体如下:大家也可以参考这两篇文章进行学习:《自定义Android圆形进度条(附源码)》《A
进度条样式在项目中经常可以见到,下面小编给大家分享Android三种方式实现ProgressBar自定义圆形进度条。Android进度条有4种风格可以使用。默认
本文实例讲述了Android编程实现自定义进度条颜色的方法。分享给大家供大家参考,具体如下:android自定义进度条颜色先看图基于产品经理各种自定义需求,经过
本文实例为大家分享了Android自定义带圆点的半圆形进度条,供大家参考,具体内容如下仅限用于半圆形,如须要带圆点的圆形进度条,圆点会出现错位现象,此代码仅供,
项目中常用到的圆形进度条有好多个,从网上搜到的自定义进度条多是封装的比较好的代码,但是不利于初学者,现在本博客就教给大家如何一步步实现自定义进度条的效果:先看效