Есть ли у вас какие-либо идеи, как сделать круговой индикатор выполнения, как приложение Google Fit? Как изображение ниже.
 
Есть ли у вас какие-либо идеи, как сделать круговой индикатор выполнения, как приложение Google Fit? Как изображение ниже.
 
Вы можете попробовать эту Circle Progress library
 
 
NB: всегда используйте ту же ширину и высоту для просмотров прогресса
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"/>
Легко создать это самостоятельно
В вашем макете укажите следующий 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) и значения толщины.
круговой (уровень LLLIPPOP для OR LOLIPOP и уровень 21)
   <shape
        android:innerRadiusRatio="2.3"
        android:shape="ring"
        android:thickness="3.8sp" >
        <solid android:color="@color/yourColor" />
   </shape>
round ( >= Lollipop OR API Level >= 21)
    <shape
        android:useLevel="true"
        android:innerRadiusRatio="2.3"
        android:shape="ring"
        android:thickness="3.8sp" >
        <solid android:color="@color/yourColor" />
     </shape>
useLevel "false" по умолчанию в API-интерфейсе 21 (Lollipop).
Запустить анимацию
Далее в вашем коде используйте 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 animale towards that value
animation.setDuration (5000); //in milliseconds
animation.setInterpolator (new DecelerateInterpolator ());
animation.start ();
Остановить анимацию
progressBar.clearAnimation();
P.S. в отличие от приведенных выше примеров, он обеспечивает плавную анимацию.