Saya mencoba membuat progressbar bulat. Inilah yang ingin saya capai
Ada cincin latar belakang warna abu-abu. Di atasnya, progressbar warna biru muncul yang bergerak dalam lintasan melingkar dari 0 hingga 360 dalam 60 atau berapa pun jumlah detiknya.
Ini contoh kode saya.
<ProgressBar
android:id="@+id/ProgressBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="?android:attr/progressBarStyleLarge"
android:indeterminateDrawable="@drawable/progressBarBG"
android:progress="50"
/>
Untuk melakukan ini, dalam "progressBarBG" yang dapat digambar, saya membuat daftar lapisan dan di dalam daftar lapisan itu saya memberikan dua item seperti yang ditunjukkan.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape
android:shape="ring"
android:innerRadius="64dp"
android:thickness="8dp"
android:useLevel="false">
<solid android:color="@color/grey" />
</shape>
</item>
<item android:id="@android:id/progress">
<clip>
<shape
android:shape="ring"
android:innerRadius="64dp"
android:thickness="8dp"
android:useLevel="false">
<solid android:color="@color/blue" />
</shape>
</clip>
</item>
Sekarang, cincin abu-abu pertama dihasilkan dengan baik. Namun cincin biru dimulai dari kiri drawable dan pergi ke kanan sama seperti cara progressbar linear bekerja. Ini adalah bagaimana ia menunjukkan kemajuan 50% dengan panah warna merah menunjukkan arah.
Saya ingin memindahkan progressbar biru di jalur melingkar seperti yang diharapkan.
sumber
Jawaban:
Inilah dua solusi saya.
Jawaban singkat:
Alih-alih membuat
layer-list
, saya memisahkannya menjadi dua file. Satu untukProgressBar
dan satu untuk latar belakangnya.Ini adalah
ProgressDrawable
file (folder @drawable): circular_progress_bar.xmlDan ini untuk
background
foldernya (@drawable folder): circle_shape.xmlDan pada akhirnya, di dalam tata letak yang sedang Anda kerjakan:
Inilah hasilnya:
Jawaban panjang:
Gunakan tampilan kustom yang mewarisi
android.view.View
Ini adalah proyek lengkap tentang github
sumber
setProgress
metodenya kemudian berikan nilainya. google.com/…android:fromDegrees="270" android:toDegrees="270"
menyelesaikannya !! Terimakasih banyak!Saya telah melakukannya dengan cara mudah:
Silakan periksa tangkapan layar untuk hal yang sama.
CustomProgressBarActivity.java :
activity_custom_progressbar.xml :
custom_progressbar_drawable.xml :
Semoga ini bisa membantu Anda.
sumber
Saya telah menulis contoh terperinci pada bilah kemajuan melingkar di android di sini di blog saya demonuts.com . Anda juga dapat menyukai kode sumber lengkap dan penjelasan di sana.
Inilah cara saya membuat progressbar melingkar dengan persentase di dalam lingkaran dalam kode murni tanpa pustaka.
pertama buat file yang dapat dipanggil bernama
circular.xml
Sekarang di
activity_main.xml
add Anda berikut:Dalam
activity_main.xml
saya telah menggunakan satu gambar lingkaran dengan latar belakang putih untuk menunjukkan latar belakang putih sekitar persentase. Ini gambarnya:Anda dapat mengubah warna gambar ini untuk mengatur warna khusus di sekitar teks persentase.
Sekarang akhirnya tambahkan kode berikut ke
MainActivity.java
:Jika Anda ingin membuat progressbar horizontal, ikuti tautan ini, ia memiliki banyak contoh berharga dengan kode sumber:
http://www.skholingua.com/android-basic/user-interface/form-widgets/progressbar
sumber
Saya menyadari perpustakaan Open Source di GitHub CircularProgressBar yang melakukan persis seperti yang Anda inginkan dengan cara sesederhana mungkin:
PEMAKAIAN
Untuk membuat ProgressBar melingkar, tambahkan CircularProgressBar di tata letak XML Anda dan tambahkan perpustakaan CircularProgressBar di proyektor Anda atau Anda juga bisa meraihnya melalui Gradle:
XML
Anda harus menggunakan properti berikut ini di XML Anda untuk mengubah CircularProgressBar Anda.
Properti:
app:progress
(integer) >> default 0app:progressbar_color
(warna) >> default BLACKapp:background_progressbar_color
(warna) >> GRAY standarapp:progressbar_width
(dimensi) >> 7dp defaultapp:background_progressbar_width
(dimensi) >> 3dp defaultJAWA
Fork atau Unduh perpustakaan ini di sini >> https://github.com/lopspower/CircularProgressBar
sumber
Berikut ini adalah customview sederhana untuk kemajuan lingkaran tampilan. Anda dapat memodifikasi dan mengoptimalkan lebih banyak agar sesuai untuk proyek Anda.
Contoh menggunakan
xml
kotlin
Hasil
sumber
Saya baru jadi saya tidak bisa berkomentar tetapi berpikir untuk berbagi perbaikan malas. Saya menggunakan pendekatan asli Pedram juga, dan hanya mengalami masalah Lollipop yang sama. Tapi alanv di pos lain sudah memperbaiki satu baris. Ini semacam bug atau pengawasan di API21. Secara harfiah tambahkan saja
android:useLevel="true"
ke progres xml lingkaran Anda. Pendekatan baru Pedram masih merupakan perbaikan yang tepat, tetapi saya hanya berpikir saya juga berbagi perbaikan yang malas.sumber
coba metode ini untuk membuat bitmap dan atur ke tampilan gambar.
sumber
https://github.com/passsy/android-HoloCircularProgressBar adalah salah satu contoh perpustakaan yang melakukan ini. Seperti yang dinyatakan Tenfour04, itu harus agak khusus, karena ini tidak didukung langsung di luar kotak. Jika perpustakaan ini tidak berperilaku seperti yang Anda inginkan, Anda dapat memotongnya dan memodifikasi detailnya agar sesuai dengan keinginan Anda. Jika Anda menerapkan sesuatu yang dapat digunakan kembali oleh orang lain, Anda bahkan bisa mengirimkan permintaan tarik untuk memasukkannya kembali!
sumber
@Pedram, solusi lama Anda juga berfungsi dengan baik di lollipop (dan lebih baik daripada yang baru karena dapat digunakan di mana-mana, termasuk dalam tampilan jarak jauh) ubah saja
circular_progress_bar.xml
kode Anda ke ini:sumber
sumber
Dengan Perpustakaan Komponen Bahan Anda dapat menggunakan
ProgressIndicator
denganWidget.MaterialComponents.ProgressIndicator.Circular.Determinate
gaya.Sesuatu seperti:
Anda dapat menggunakan atribut ini:
circularRadius
: mendefinisikan radius indikator progres melingkartrackColor
: warna yang digunakan untuk trek kemajuan. Jika tidak ditentukan, itu akan diatur keindicatorColor
dan menerapkanandroid:disabledAlpha
dari tema.indicatorColor
: warna tunggal yang digunakan untuk indikator dalam mode determinate / indeterminate. Secara default menggunakan warna utama temaGunakan
progressIndicator.setProgressCompat((int) value, true);
untuk memperbarui nilai dalam indikator.Catatan: setidaknya memerlukan versi
1.3.0-alpha01
.sumber
1.3.0-alpha01
.Perubahan
untuk
untuk sahpe kedua dengan
id="@android:id/progress
semoga berhasil
sumber