Haben Sie eine Idee, wie Sie einen kreisförmigen Fortschrittsbalken wie den der Google Fit-Anwendung erstellen können? Wie das Bild unten.

Haben Sie eine Idee, wie Sie einen kreisförmigen Fortschrittsbalken wie den der Google Fit-Anwendung erstellen können? Wie das Bild unten.

Antworten:
Sie können diese Circle Progress- Bibliothek ausprobieren


NB: Bitte verwenden Sie für Fortschrittsansichten immer die gleiche Breite und Höhe
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"/>
Es ist einfach, dies selbst zu erstellen
ProgressBarFügen Sie in Ihr Layout Folgendes mit einem bestimmten Zeichen hinzu ( beachten Sie, dass Sie die Breite stattdessen aus den Abmessungen erhalten sollten ). Der Maximalwert ist hier wichtig:
<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" />
Erstellen Sie nun das Zeichnungsobjekt in Ihren Ressourcen mit der folgenden Form. Spielen Sie mit den Werten für Radius (Sie können innerRadiusanstelle von verwenden innerRadiusRatio) und Dicke.
Rundschreiben (Pre Lollipop OR API Level <21)
<shape
android:innerRadiusRatio="2.3"
android:shape="ring"
android:thickness="3.8sp" >
<solid android:color="@color/yourColor" />
</shape>
Rundschreiben (> = 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 ist in API Level 21 (Lollipop) standardmäßig "false" .
Animation starten
Verwenden Sie als Nächstes in Ihrem Code ein ObjectAnimator, um das Fortschrittsfeld ProgessBarIhres Layouts zu animieren .
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();
Animation stoppen
progressBar.clearAnimation();
PS Im Gegensatz zu den obigen Beispielen bietet es eine reibungslose Animation.