Google Fit uygulamasında olduğu gibi dairesel bir ilerleme çubuğunun nasıl oluşturulacağına dair bir fikriniz var mı? Aşağıdaki resim gibi.
Google Fit uygulamasında olduğu gibi dairesel bir ilerleme çubuğunun nasıl oluşturulacağına dair bir fikriniz var mı? Aşağıdaki resim gibi.
Yanıtlar:
Bu Circle Progress kütüphanesini deneyebilirsiniz
Not: ilerleme görünümleri için lütfen her zaman aynı genişlik ve yüksekliği kullanın
DonutProgress:
<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"/>
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"/>
Bunu kendiniz oluşturmak kolaydır
Düzeninize ProgressBar
belirli bir çekilebilir ile aşağıdakileri ekleyin ( bunun yerine genişliği boyutlardan almanız gerektiğini unutmayın ). Burada maksimum değer önemlidir:
<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" />
Şimdi kaynaklarınızdaki çekmeceyi aşağıdaki şekil ile oluşturun. Yarıçap ( innerRadius
yerine kullanabilirsiniz innerRadiusRatio
) ve kalınlık değerleri ile oynayın .
dairesel (Lolipop Öncesi VEYA API Seviyesi <21)
<shape
android:innerRadiusRatio="2.3"
android:shape="ring"
android:thickness="3.8sp" >
<solid android:color="@color/yourColor" />
</shape>
dairesel (> = Lolipop VEYA API Seviyesi> = 21)
<shape
android:useLevel="true"
android:innerRadiusRatio="2.3"
android:shape="ring"
android:thickness="3.8sp" >
<solid android:color="@color/yourColor" />
</shape>
API Seviye 21'de (Lollipop) useLevel varsayılan olarak "false" değeridir .
Animasyonu Başlat
Kodunuzda , mizanpajınızın ObjectAnimator
ilerleme alanını canlandırmak için a tuşunu kullanın 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 animate towards that value
animation.setDuration(5000); // in milliseconds
animation.setInterpolator(new DecelerateInterpolator());
animation.start();
Animasyonu Durdur
progressBar.clearAnimation();
PS, yukarıdaki örneklerden farklı olarak, düzgün bir animasyon verir.