[JAVA] [Android] Visualisieren Sie den Fortschritt usw. mit der Fortschrittsleiste

Es ist praktisch, die Fortschrittsanzeige zu verwenden, wenn Sie ein Bild laden, wenn Sie die HP des anderen Teilnehmers oder Ihrer eigenen HP usw. anzeigen, wenn Sie den Fortschritt oder das Laden anzeigen. Dieses Mal wollte ich den horizontal langen Fortschrittsbalken verwenden, daher werde ich die Implementierungsmethode kurz zusammenfassen.

Schließlich werde ich das Progressbar-Projekt auf meinem Github veröffentlichen. Bitte benutzen Sie es.

(Hinzugefügt am 15.02.2020) Vielen Dank für das Lesen viel. Ich habe auch den Quellcode für die Kotlin-Version hinzugefügt.

Erstellen Sie ein Layout

activity_main.xml


 <ProgressBar
     android:id="@+id/ProgressBarHorizontal"
     style="?android:attr/progressBarStyleHorizontal"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:background="@drawable/progress_bg"
     android:max="100"
     android:progress="86"
     android:progressDrawable="@drawable/progressbar" 
 />

Erstellen Sie einen solchen Fortschrittsbalken. Die horizontal lange Prigressbar kann durch den Teil style ="? Android: attr / progressBarStyleHorizontal " angegeben werden.

Der Teil, der nicht so angezeigt wird, wie er ist, ist jedoch transparent, sodass ich nicht weiß, wie viel er ist. Daher können Sie es sehen, indem Sie den Hintergrund mit "android: background" grau machen. Machen wir einen Hintergrund.

drawable/progress_bg.xml


<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="ring"
        android:thickness="5dp"
        android:useLevel="false">
        <solid android:color="@color/blue_grey_400" />
    </shape>
</layer-list>

Es ist eine gute Idee, andere Schaltflächen zu installieren, damit sich der Fortschritt der Leiste ändert, wenn Sie sie drücken. Dieses Mal werde ich es in Form von "android: onClick =" hogeButton "" schreiben. Versuchen Sie, den Balken beim Drücken auf 50% zu setzen. Es gibt keine tiefe Bedeutung lol

Schreiben Sie einen Prozess in eine Aktivität

java

MainActivity.java


public class MainActivity extends AppCompatActivity {
    private  ProgressBar progressBar;
    private int percent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        percent = 81; //81 Ausgangszustand%Zu

        progressBar = (ProgressBar)findViewById(R.id.ProgressBarHorizontal);
        progressBar.setMax(100);
        progressBar.setProgress(percent);
        progressBar.setMin(0);
    }

    public void hogeButton(View v){
        percent = 50;
        progressBar.setProgress(percent);
    }

Kotlin

MainActivity.kt


class KotlinMainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var percent = 81

        ProgressBarHorizontal.max = 100
        ProgressBarHorizontal.progress = percent
        ProgressBarHorizontal.min = 0

        hogebutton.setOnClickListener {
            percent = 0
            onHogeProgressChanged(percent)
        }

        .
        .
        .

Dies ist abgeschlossen. Hat es funktioniert?

Animation implementieren

Schließlich verbessert sich die Qualität der App, wenn Sie sie mit Animation verschieben. Deshalb werde ich es implementieren.

Es ist sehr einfach, eine Animation hinzuzufügen

Es ist nicht so schwierig.

MainActivity.java


progressBar.setProgress(percent,true);

MainActivity.kt


ProgressBarHorizontal.setProgress(percent,true)

Das ist es. Geben Sie einfach den Wert in () ein und setzen Sie "true" oder "flase". true = mit Animation flash = keine Animation

Verwenden Sie ObjectAnimator für eine flüssigere Animation

Die Animation von setProgress ist ziemlich schnell, nicht wahr? Sehr schnell. Ich wollte es selbst spezifizieren, also habe ich eine "ObjectAnimater" -Klasse erstellt, um eine schöne Animation zu erstellen.

MainActivity.java



    public void hogeButton(View v){
        percent = 50;
        onHogeProgressChanged(pacent);
    }

   private void onHogeProgressChanged(int percentage){
        Animator animation = ObjectAnimator.ofInt(progressBar,"progress",percentage);
        animation.setDuration(500); // 0.In 5 Sekunden animieren
        animation.setInterpolator(new DecelerateInterpolator());
        animation.start();
   }

MainActivity.kt



   hogeButton.setOnClickListener {
        percent = 0
        onHogeProgressChanged(percent)
   }

    private fun onHogeProgressChanged(percentage: Int) {
        val animation = ObjectAnimator.ofInt(ProgressBarHorizontal, "progress", percentage)
        animation.duration = 500
        animation.interpolator = DecelerateInterpolator()
        animation.start()
    }

Es ist so. Durch die Angabe von "DecelerateInterpolator" mit der "setInterpolator" -Methode bewegt sich die Änderungsgeschwindigkeit zunächst schnell und die Animation wird immer langsamer!

Was denken Sie? Ich hoffe, es hilft.

Lass uns ein lustiges Android-Leben haben! ** **.

# Referenzartikel - [ProgressBar | Android Developers](https://developer.android.com/reference/android/widget/ProgressBar) - [DecelerateIntetpolator | Android Developers](https://developer.android.com/reference/android/view/animation/DecelerateInterpolator) - [Ich war ein wenig süchtig nach der Fortschrittsanzeige](http://nyanyoni.hateblo.jp/entry/2018/02/07/022435) - [Fortschritt in Horizontal of ProgressBar anzeigen](http://dorodoro.info/tip/progressbar%E3%81%AEhorizontal%E3%81%A7%E9%80%B2%E6%8D%97%E3% 82% 92% E8% A1% A8% E7% A4% BA% E3% 81% 99% E3% 82% 8B /) - [github](https://github.com/yukiyuki961/ProgressbarApp)

Recommended Posts

[Android] Visualisieren Sie den Fortschritt usw. mit der Fortschrittsleiste
Kompatibel mit Android 10 (API 29)