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.
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
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é?
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.
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
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)