如何在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
接下来在您的代码中,使用ObjectAnimator
来ProgessBar
布局的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。