Android自定义View实现圆形进度条

 更新时间:2022年06月29日 16:28:10   作者:360度旋转的猫  
这篇文章主要为大家详细介绍了Android自定义View实现圆形进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

本文实例为大家分享了Android自定义View实现圆形进度条的具体代码,供大家参考,具体内容如下

原理非常简单,在自定义View的基础上使用Canvas的drawCircle画两个圆,一个圆代表总体,一个圆代表现有进度,在主线程中使用set方法在Handler中传递进度,进度和总体都可以添加set、get方法进行自定义

//主线程代码如下

public class MainActivity extends Activity {
private Button mBtn_start;
private MyProgresscircle myProgresscircle;
private int progress;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
progress++;
if(progress<=100){//形成循环
myProgresscircle.setCurrentProgress(progress);//传递进度
handler.sendEmptyMessageDelayed(0,200);//模拟下载延迟
? ? ? ? ? ? ? ? ? ? }
break;
? ? ? ? ? ? }
? ? ? ? }
? ? };

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main);
myProgresscircle= (MyProgresscircle) findViewById(R.id.myprogress);
mBtn_start= (Button) findViewById(R.id.button_start);
mBtn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handler.sendEmptyMessage(0);//启动下载发送一个空消息开始
? ? ? ? ? ? }
? ? ? ? });
? ? }
}

//自定义View代码:

public class MyProgresscircle extends View {
private int width;
private int height;
private Paint mPaintText;
private Paint mPaintCircle;
private Paint mPaintCircleCurrent;
private int CurrentProgress;
private int MaxProgress=100;

public void setCurrentProgress(int currentProgress) {

CurrentProgress = currentProgress;
? ? ? ? invalidate();
? ? }

public int getMaxProgress() {
return MaxProgress;
? ? }

public void setMaxProgress(int maxProgress) {
MaxProgress = maxProgress;
? ? }

public MyProgresscircle(Context context) {
super(context);
? ? }

public MyProgresscircle(Context context, AttributeSet attrs) {
super(context, attrs);
mPaintText=new Paint();//字体进度画笔
mPaintText.setTextSize(80);
mPaintText.setColor(Color.WHITE);
mPaintText.setStrokeWidth(10);
mPaintText.setTextAlign(Paint.Align.CENTER);//偏移

mPaintCircle=new Paint();//外圆画笔
mPaintCircle.setColor(Color.GRAY);
mPaintCircle.setAntiAlias(true);
mPaintCircle.setStrokeWidth(10);

mPaintCircleCurrent=new Paint();//进度圆画笔
mPaintCircleCurrent.setColor(Color.YELLOW);
mPaintCircleCurrent.setAntiAlias(true);
mPaintCircleCurrent.setStrokeWidth(10);
? ? }

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {//这个复写方法用来得到宽和高
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
? ? ? ? setMeasuredDimension(width, height);
? ? }

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
? ? ? ? canvas.drawCircle(width / 2, height / 2, 200, mPaintCircle);
? ? ? ? canvas.drawCircle(width/2,height/2,CurrentProgress/100f*200,mPaintCircleCurrent);
? ? ? ? canvas.drawText(CurrentProgress*100f/MaxProgress+"%",width/2,height/2,mPaintText);//把进度转化为百分比
? ? }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。

相关文章

  • Android如何使用GestureDetector进行手势检测详解

    Android如何使用GestureDetector进行手势检测详解

    GestureDetector使用很方便,提供了单击,双击,长按等操作的处理,但是一般的定义界面都比较复杂,还用很多需要注意的地方,这篇文章主要给大家介绍了关于Android如何使用GestureDetector进行手势检测的相关资料,需要的朋友可以参考下
    2022-01-01
  • android 获取视频第一帧作为缩略图的方法

    android 获取视频第一帧作为缩略图的方法

    这篇文章主要介绍了android 获取视频第一帧作为缩略图的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • 清楚详解Android?进程间图传递图形buffer原理

    清楚详解Android?进程间图传递图形buffer原理

    这篇文章主要为大家清楚的详解了Android?进程间图传递图形buffer原理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Android onLoadFinished与onLoaderReset回调详解及实例

    Android onLoadFinished与onLoaderReset回调详解及实例

    这篇文章主要介绍了Android onLoadFinished与onLoaderReset回调详解及实例的相关资料,需要的朋友可以参考下
    2017-03-03
  • 详解App保活技术实现

    详解App保活技术实现

    随着Android阵营的各大手机厂商对于续航的高度重视,两三年前的手机发布会更是把反保活作为一个系统的卖点,不断提出了各种反保活的方案,导致现在想实现应用保活简直难于上青天,甚至都需要一个团队来专门研究这个事情。本文将详细介绍App保活技术实现,给大家一个参考
    2021-06-06
  • Android点击Button实现功能的几种方法总结

    Android点击Button实现功能的几种方法总结

    当Button有多个或者Button的使用次数很多时,我们需要采用绑定监听器的做法,其实,绑定监听器也有几种方法,不过,我在这里就不一一列举了,毕竟那些方法在实际的应用中也不常见
    2013-10-10
  • Android自定义分段式进度条

    Android自定义分段式进度条

    这篇文章主要为大家详细介绍了Android自定义分段式进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • Android实现淘宝商品列表切换效果

    Android实现淘宝商品列表切换效果

    这篇文章主要为大家详细介绍了Android实现淘宝商品列表切换效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Android 本地广播和强制下线功能的实现代码

    Android 本地广播和强制下线功能的实现代码

    这篇文章主要介绍了Android 本地广播和强制下线功能的实现代码,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Android app应用多语言切换功能实现

    Android app应用多语言切换功能实现

    这篇文章主要为大家详细介绍了Android app应用多语言切换功能实现代码,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论

?


http://www.vxiaotou.com