ProgressBar实现圆形进度条,并且可以设置起点和终点的进度,以及可设置时间

最近项目需要,做一个进度条,要求前面跑70%,后面跑剩下的30%,要求圆形

于是想到了最简单的办法,肯定是用安卓自带的ProgressBar啊,这个View有很多属性,查询了很多属性值

这里感谢这几位大佬的博客,给我指点迷津

android-ProgressBar属性

ProgressBar 深入分析

Android更改ProgressBar颜色

 

好啦,如果要正常使用ProgressBar,上面的几篇文章足够了,这里直接回到主题,我要自定义一个进度条,并且可以设置动画从0到100,或者50到200,并且可以定义动画的时间。那么直接上代码吧。

 

这里要说一下,为啥我上面说的圆形,这里要设置style为水平呢,其实这就如上面大佬的文章里面说的那样,因为有这一行android:indeterminate=“false”  代表着允许使用不确定模式,在不确定模式下,进度条动画无限循环,也就是模糊模式,圆形本身就是模糊模式,所以这里不用担心,当然你也可以去掉上面的属性,或者改成大圆小圆的style都可以

 

下面来看Activity里面的代码

  public void jindutiao(final ProgressBar view, int startprogress, int endprogress) {//进度条的控件,以及起始的值

        progressBar.setVisibility(View.VISIBLE);
        

        ValueAnimator animator = ValueAnimator.ofInt(startprogress, endprogress).setDuration(800);

        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                view.setProgress((int) valueAnimator.getAnimatedValue());
            }
        });
        animator.start();

    }

我这里直接写了一个方法,传入对应的view,以及起点和终点的数值即可,这里动画的执行时间设置的是0.8秒

 

最后附上布局里面的两个文件:

circle_shape




    

circular_progress_bar




    



        

    

 

你可能感兴趣的:(原创)