[JAVA] [Android] Visualisez la progression, etc. avec la barre de progression

Il est pratique d'utiliser la barre de progression lors du chargement d'une image, lors de l'affichage de l'autre partie ou de votre propre HP, etc., lors de l'affichage du degré de progression ou de chargement. Cette fois, je voulais utiliser la barre de progression horizontale, je vais donc résumer brièvement la méthode de mise en œuvre.

Enfin, je publierai le projet Progressbar sur mon github. Veuillez l'utiliser.

(Ajouté le 15/02/2020) Merci d'avoir beaucoup lu. J'ai également ajouté le code source de la version Kotlin.

Faire une mise en page

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" 
 />

Créez une barre de progression comme celle-ci. La Prigressbar horizontalement longue peut être spécifiée par la partie style ="? Android: attr / progressBarStyleHorizontal ".

Cependant, la partie qui n'est pas affichée telle quelle est transparente, donc je ne sais pas combien c'est. Par conséquent, vous pouvez le voir en rendant l'arrière-plan gris, etc. avec ʻandroid: background`. Faisons un arrière-plan.

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>

C'est une bonne idée d'installer d'autres boutons pour que la progression de la barre change lorsque vous appuyez dessus. Cette fois, je vais l'écrire sous la forme ʻandroid: onClick = "hogeButton" `. Essayez de faire la barre «50%» lorsque vous appuyez sur. Il n'y a pas de signification profonde lol

Ecrire un processus dans une activité

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 état initial%À

        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)
        }

        .
        .
        .

C'est tout ce qu'on peut en dire. Cela a-t-il fonctionné?

Mettre en œuvre une animation

Après tout, la qualité en tant qu'application s'améliorera si vous vous déplacez avec l'animation. C'est pourquoi je vais le mettre en œuvre.

C'est très simple d'ajouter une animation

Ce n'est pas si difficile.

MainActivity.java


progressBar.setProgress(percent,true);

MainActivity.kt


ProgressBarHorizontal.setProgress(percent,true)

C'est tout. Mettez simplement la valeur entre () et mettez «true» ou «flase». true = avec animation flash = pas d'animation

Utilisez ObjectAnimator pour une animation plus fluide

L'animation de setProgress est assez rapide, n'est-ce pas? Très rapide. Je voulais le spécifier moi-même, j'ai donc créé une classe ʻObjectAnimater` pour faire une belle animation.

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.Animer en 5 secondes
        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()
    }

C'est comme ça. En spécifiant DecelerateInterpolator avec la méthode setInterpolator, la vitesse de changement se déplace rapidement dans un premier temps, et l'animation ralentit de plus en plus!

Qu'est-ce que tu penses? J'espère que cela aide.

Ayons une vie Android amusante! ** **

# Article de référence - [ProgressBar | Android Developers](https://developer.android.com/reference/android/widget/ProgressBar) - [DecelerateIntetpolator | Android Developers](https://developer.android.com/reference/android/view/animation/DecelerateInterpolator) - [J'étais un peu accro à la barre de progression](http://nyanyoni.hateblo.jp/entry/2018/02/07/022435) - [Afficher la progression dans Horizontal of ProgressBar](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] Visualisez la progression, etc. avec la barre de progression
Compatible avec Android 10 (API 29)