Ответ 1
Это для ProgressBars. Например этот метод использует форму кольца в качестве допустимого прогресса.
Рез/рисуем/github_232_circular.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadiusRatio="2.3"
android:shape="ring"
android:thickness="3.8sp"
android:useLevel="true">
<solid android:color="#ff0000" />
</shape>
В вашем макете:
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="top|end"
android:max="100"
android:progress="0"
android:progressDrawable="@drawable/github_232_circular"
/>
В принципе, useLevel
делает так, чтобы выталкиваемый можно было отрисовать частично. Например, существует метод ImageView.setImageLevel(), который позволяет вам установить "уровень", например. 25% прогресса, поэтому кольцо можно было бы вычертить как четверть круга. И ProgressBar.setProgress() делает то же самое, обновляя "уровень" выпадающего, который вы установили на ProgressBar.