你知道如何制作一个像Google Fit应用程序一样的圆形进度条吗?如下图所示。
发布于 2014-12-03 16:09:07
您可以试用此Circle Progress库
注意:对于进度视图,请始终使用相同的宽度和高度
DonutProgress:
<com.github.lzyzsd.circleprogress.DonutProgress
android:id="@+id/donut_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"/>
发布于 2014-12-03 18:32:14
你可以很容易的自己创建这个
在您的布局中,包含以下具有特定可绘制的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" />
现在用下面的形状在你的资源中创建可绘制的。使用半径(可以使用innerRadius
而不是innerRadiusRatio
)和厚度值。
循环(棒棒糖前或空气污染指数水平< 21)
<shape
android:innerRadiusRatio="2.3"
android:shape="ring"
android:thickness="3.8sp" >
<solid android:color="@color/yourColor" />
</shape>
通告( >=棒棒糖或API Level >= 21)
<shape
android:useLevel="true"
android:innerRadiusRatio="2.3"
android:shape="ring"
android:thickness="3.8sp" >
<solid android:color="@color/yourColor" />
</shape>
在21级(棒棒糖)中,useLevel默认为"false"。
开始动画
接下来,在您的代码中,使用ObjectAnimator
对布局的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 animate towards that value
animation.setDuration(5000); // in milliseconds
animation.setInterpolator(new DecelerateInterpolator());
animation.start();
停止动画
progressBar.clearAnimation();
另外,与上面的例子不同,它提供了流畅的动画效果。
https://stackoverflow.com/questions/27213381
复制相似问题