如何在android中创build循环ProgressBar?

你有任何想法如何使一个圆形的进度栏像谷歌飞度的应用程序之一? 像下面的图片一样。

在这里输入图像说明

你可以试试这个Circle Progress库

在这里输入图像说明

在这里输入图像说明

注意:请始终使用相同的宽度和高度来查看进度

CircularProgress:

<com.github.lzyzsd.circleprogress.CircleProgress android:id="@+id/circle_progress" android:layout_marginLeft="50dp" android:layout_width="100dp" android:layout_height="100dp" custom:circle_progress="20"/> 

CircleProgress:

  <com.github.lzyzsd.circleprogress.CircleProgress android:id="@+id/circle_progress" android:layout_marginLeft="50dp" android:layout_width="100dp" android:layout_height="100dp" custom:circle_progress="20"/> 

ArcProgress:

 <com.github.lzyzsd.circleprogress.ArcProgress android:id="@+id/arc_progress" android:background="#214193" android:layout_marginLeft="50dp" android:layout_width="100dp" android:layout_height="100dp" custom:arc_progress="55" custom:arc_bottom_text="MEMORY"/> 

自己创build这个很容易

在你的布局中,包含以下具有特定可绘制的ProgressBar请注意,您应该从尺寸中获取宽度 )。 最大值在这里很重要:

 <ProgressBar android:id="@+id/progressBar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="150dp" android:layout_height="150dp" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:max="500" android:progress="0" android:progressDrawable="@drawable/circular" /> 

现在使用以下形状在您的资源中创build绘图。 玩半径(你可以使用innerRadius而不是innerRadiusRatio )和厚度值。

通告(前棒棒糖OR API水平<21)

  <shape android:innerRadiusRatio="2.3" android:shape="ring" android:thickness="3.8sp" > <solid android:color="@color/yourColor" /> </shape> 

通告(> =棒棒糖OR API等级> = 21)

  <shape android:useLevel="true" android:innerRadiusRatio="2.3" android:shape="ring" android:thickness="3.8sp" > <solid android:color="@color/yourColor" /> </shape> 

默认情况下,API Level 21(Lollipop)中的useLevel“false”

开始animation

接下来在您的代码中,使用ObjectAnimatorProgessBar布局的ProgessBar的进度字段。

 ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.progressBar); ObjectAnimator animation = ObjectAnimator.ofInt (progressBar, "progress", 0, 500); // see this max value coming back here, we animale towards that value animation.setDuration (5000); //in milliseconds animation.setInterpolator (new DecelerateInterpolator ()); animation.start (); 

停止animation

 progressBar.clearAnimation(); 

PS不像上面的例子,它给予stream畅的animation。