具有用户级别的自定义进度条

时间:2018-03-08 07:31:18

标签: android progress-bar android-progressbar

我想创建具有不同级别的自定义进度条,如下图;

enter image description here

xml代码;

 <ProgressBar
    android:id="@+id/progress"
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="20dp"
    android:indeterminate="true"
    android:indeterminateDrawable="@drawable/progress"  />

progrss.xml;

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" >

<shape
    android:innerRadiusRatio="3"
    android:shape="ring"
    android:thicknessRatio="10"
    android:useLevel="false" >

    <size
        android:height="76dip"
        android:width="76dip" />

    <gradient
        android:angle="0"
        android:endColor="#99cc33"
        android:startColor="#F15d36"
        android:type="sweep"
        android:useLevel="false" />

</shape>

</rotate>

2 个答案:

答案 0 :(得分:0)

您可以根据需要使用自定义进度条

CircularProgressView

https://android-arsenal.com/details/1/6152

答案 1 :(得分:0)

您需要自定义布局 -

class CircleLayout extends FrameLayout{
...
  void onDraw(Canvas canvas){
  .... 
  }
}

现在在onDraw()方法中绘制一个圆,其半径等于min的一半(高度,宽度) -
高度和宽度分别为Framelayout的高度和宽度 说int min= min(height,widht)

radius = min/2

x和y是中心点

canvas.drawCircle(x, y, radius, paint);

现在以相同的半径绘制两个弧,表示greenArc和redArc
画弧看到这个链接 - http://android-coding.blogspot.in/2012/04/draw-arc-on-canvas-canvasdrawarc.html