Apakah Anda tahu cara membuat bilah kemajuan bundar seperti yang ada di aplikasi Google Fit? Seperti gambar di bawah ini.
Apakah Anda tahu cara membuat bilah kemajuan bundar seperti yang ada di aplikasi Google Fit? Seperti gambar di bawah ini.
Jawaban:
Anda dapat mencoba pustaka Circle Progress ini
NB: harap selalu menggunakan lebar dan tinggi yang sama untuk tampilan kemajuan
Kemajuan Donut:
<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"/>
Kemajuan Circle:
<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"/>
Kemajuan Arc:
<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"/>
Mudah membuat ini sendiri
Dalam tata letak Anda, sertakan hal-hal berikut ProgressBar
dengan gambar yang dapat ditarik ( perhatikan bahwa Anda seharusnya mendapatkan lebar dari dimensi ) Nilai maks penting di sini:
<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" />
Sekarang buat drawable di sumber daya Anda dengan bentuk berikut. Mainkan dengan jari-jari (Anda bisa menggunakan innerRadius
bukan innerRadiusRatio
) dan nilai ketebalan.
bundar (Pre Lollipop ATAU API Level <21)
<shape
android:innerRadiusRatio="2.3"
android:shape="ring"
android:thickness="3.8sp" >
<solid android:color="@color/yourColor" />
</shape>
bundar (> = Lollipop ATAU Tingkat API> = 21)
<shape
android:useLevel="true"
android:innerRadiusRatio="2.3"
android:shape="ring"
android:thickness="3.8sp" >
<solid android:color="@color/yourColor" />
</shape>
useLevel adalah "false" secara default di API Level 21 (Lollipop).
Mulai Animasi
Selanjutnya dalam kode Anda gunakan a ObjectAnimator
untuk menghidupkan bidang kemajuan ProgessBar
tata letak Anda.
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();
Hentikan Animasi
progressBar.clearAnimation();
PS tidak seperti contoh di atas, ini memberikan animasi yang halus.