ProgressDialog est obsolète.Qu’est-ce que l’autre doit utiliser?

Je suis tombé sur pour voir que ProgressDialog est maintenant obsolète. Que serait-il une alternative à utiliser à la place de ProgressBar . J’utilise la version 2.3.3 du studio Android.

 ProgressDialog progressDialog=new ProgressDialog(this); progressDialog.show(); 

Oui, au API level 26 il est obsolète, vous pouvez utiliser la progressbar .

Utilisez ce code pour créer par programmation:

RelativeLayout layout = findViewById (R.id.display); // spécifie ici la mise en page racine ID

(ou)

RelativeLayout layout = findViewById (this);

 progressBar = new ProgressBar(youractivity.this,null,android.R.attr.progressBarStyleLarge); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100,100); params.addRule(RelativeLayout.CENTER_IN_PARENT); layout.addView(progressBar,params); progressBar.setVisibility(View.VISIBLE); //To show ProgressBar progressBar.setVisibility(View.GONE); // To Hide ProgressBar 

Pour désactiver l’interaction utilisateur, il vous suffit d’append le code suivant

 getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); 

Pour récupérer l’interaction de l’utilisateur, il vous suffit d’append le code suivant

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

pour référence ultérieure, remplacez android.R.attr.progressBarStyleSmall par android.R.attr.progressBarStyleHorizontal .

Ce code de ligne ci-dessous fonctionne uniquement au-dessus de l’API 21 progressBar.setProgressTintList (ColorStateList.valueOf (Color.RED));


Solution 2: une autre façon

  

Activity.java

 progressBar = (ProgressBar) findViewById(R.id.progressbar); `progressBar.setVisibility(View.VISIBLE);`// To Show ProgressBar `progressBar.setVisibility(View.INVISIBLE);` //To Hide ProgressBar 

Pour plus de détails:

1.Référence

2.Référence Deux

J’espère que cela peut vous aider.

Cette classe est déconseillée au niveau 26 de l’API. ProgressDialog est une boîte de dialog modale qui empêche l’utilisateur d’interagir avec l’application. Au lieu d’utiliser cette classe, vous devez utiliser un indicateur de progression tel que ProgressBar, qui peut être intégré dans l’interface utilisateur de votre application. Vous pouvez également utiliser une notification pour informer l’utilisateur de la progression de la tâche. lien

Il est obsolète sur Android O raison de la nouvelle norme d’interface utilisateur de Google

Vous pouvez simplement concevoir une interface XML pour votre barre de progression et la transmettre à un AlertDialog, puis afficher ou fermer la boîte de dialog à tout moment.

progress.xml

     

Le code de code qui affiche la boîte de dialog de progression. Copiez simplement ce code et collez-le dans votre fragment.

  private void setDialog(boolean show){ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); //View view = getLayoutInflater().inflate(R.layout.progress); builder.setView(R.layout.progress); Dialog dialog = builder.create(); if (show)dialog.show(); else dialog.dismiss(); } 

Ensuite, appelez simplement la méthode chaque fois que vous voulez afficher le progressdialog et passez true comme argument pour le montrer ou false pour le supprimer.

Eh bien, si vous voulez vraiment aller à l’encontre de leur volonté, vous pouvez toujours utiliser le dialog Sweet Alert ou en créer un par vous-même.

 progress_dialog_layout        

Code Java:

 AlertDialog b; AlertDialog.Builder dialogBuilder; public void ShowProgressDialog() { dialogBuilder = new AlertDialog.Builder(DataDownloadActivity.this); LayoutInflater inflater = (LayoutInflater) getSystemService( Context.LAYOUT_INFLATER_SERVICE ); View dialogView = inflater.inflate(R.layout.progress_dialog_layout, null); dialogBuilder.setView(dialogView); dialogBuilder.setCancelable(false); b = dialogBuilder.create(); b.show(); } public void HideProgressDialog(){ b.dismiss(); } 

ProgressBar est la meilleure alternative pour ProgressDialog. Un élément d’interface utilisateur qui indique la progression d’une opération.

Pour plus d’informations, consultez ce document Google: https://developer.android.com/reference/android/widget/ProgressBar.html

Comme mentionné sur la page de documentation, l’alternative est ProgressBar . ProgressDialog look de ProgressDialog peut être répliqué en plaçant un ProgressBar dans un AlertDialog .

Vous pouvez toujours l’utiliser, mais Android ne veut pas que vous l’utilisiez, c’est pourquoi il est déconseillé. Vous devriez donc envisager de résoudre votre problème d’une autre manière, par exemple en intégrant un ProgressBar dans votre Layout .

Peut-être que ce guide pourrait vous aider.

En général, je préfère créer des AlertDialogs personnalisés avec des indicateurs. Il résout des problèmes tels que la personnalisation de la vue App.

vous pouvez utiliser AlertDialog comme ProgressDialog référez ProgressDialog vous au code ci-dessous pour ProgressDialog . Cette fonction doit être appelée chaque fois que vous affichez une boîte de dialog de progression.

Code:

  public void setProgressDialog() { int llPadding = 30; LinearLayout ll = new LinearLayout(this); ll.setOrientation(LinearLayout.HORIZONTAL); ll.setPadding(llPadding, llPadding, llPadding, llPadding); ll.setGravity(Gravity.CENTER); LinearLayout.LayoutParams llParam = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); llParam.gravity = Gravity.CENTER; ll.setLayoutParams(llParam); ProgressBar progressBar = new ProgressBar(this); progressBar.setIndeterminate(true); progressBar.setPadding(0, 0, llPadding, 0); progressBar.setLayoutParams(llParam); llParam = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); llParam.gravity = Gravity.CENTER; TextView tvText = new TextView(this); tvText.setText("Loading ..."); tvText.setTextColor(Color.parseColor("#000000")); tvText.setTextSize(20); tvText.setLayoutParams(llParam); ll.addView(progressBar); ll.addView(tvText); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setCancelable(true); builder.setView(ll); AlertDialog dialog = builder.create(); dialog.show(); Window window = dialog.getWindow(); if (window != null) { WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); layoutParams.copyFrom(dialog.getWindow().getAtsortingbutes()); layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT; layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT; dialog.getWindow().setAtsortingbutes(layoutParams); } } 

Sortie:

entrer la description de l'image ici

ProgressDialog est devenu obsolète au niveau de l’API 26.

"Deprecated" fait référence à des fonctions ou des éléments en cours de remplacement par des fonctions plus récentes.

ProgressDialog est une boîte de dialog modale qui empêche l’utilisateur d’interagir avec l’application. Au lieu d’utiliser cette classe, vous devez utiliser un indicateur de progression tel que ProgressBar , qui peut être intégré dans l’interface utilisateur de votre application.

Avantage

Je dirais personnellement que ProgressBar a l’avantage sur les deux. ProgressBar est un élément d’interface utilisateur qui indique la progression d’une opération. Afficher les barres de progression à un utilisateur de manière non interrompue . Afficher la barre de progression dans l’interface utilisateur de votre application.

Cela peut aider d’autres personnes.

Beaucoup d’applications populaires ont une approche différente pour montrer la progression de n’importe quelle demande, comme le chargement de fichiers, le chargement de fichiers, etc. Le chargement de spinner ne montre pas la quantité de contenu chargé ou restant à charger. Il y a une période d’incertitude qui est mauvaise dans la perspective de UI / UX. Beaucoup d’applications populaires (Facebook, Linkedin, etc.) ont résolu ce problème en affichant d’abord les affichages de l’interface utilisateur. Ensuite, le contenu chargé est progressivement rempli à l’écran.

J’ai utilisé le miroitement pour mes applications pour résoudre ce problème.

Il y a un bon article à ce sujet qui sera bénéfique pour d’autres personnes

J’utilise DelayedProgressDialog depuis https://github.com/Q115/DelayedProgressDialog Il fait la même chose que ProgressDialog avec l’avantage supplémentaire d’un délai si nécessaire.

Son utilisation est similaire à ProgressDialog avant Android O:

 DelayedProgressDialog progressDialog = new DelayedProgressDialog(); progressDialog.show(getSupportFragmentManager(), "tag"); 

Oui, ProgressDialog est obsolète mais Dialog ne l’est pas.

Vous pouvez gonfler votre propre fichier XML (contenant une barre de progression et un texte de chargement) dans votre object de dialog, puis l’afficher ou le masquer à l’aide des fonctions show() et dismiss() . Voici un exemple (Kotlin):

Classe ProgressDialog :

 class ProgressDialog { companion object { fun progressDialog(context: Context): Dialog{ val dialog = Dialog(context) val inflate = LayoutInflater.from(context).inflate(R.layout.progress_dialog, null) dialog.setContentView(inflate) dialog.setCancelable(false) dialog.window!!.setBackgroundDrawable( ColorDrawable(Color.TRANSPARENT)) return dialog } } } 

XML

      

Dans votre code : Just do var dialog = ProgressDialog.progressDialog(context)

Pour afficher: dialog.show()

Pour cacher: dialog.dismiss()

ProgressBar est très simple et facile à utiliser, j’ai l’intention de faire la même chose que la simple boîte de dialog de progression. la première étape est que vous pouvez faire la mise en page XML de la boîte de dialog que vous souhaitez afficher, disons que nous nommons cette mise en page

layout_loading_dialog.xml

     

la prochaine étape est de créer AlertDialog qui affichera cette disposition avec ProgressBar

 AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setCancelable(false); // if you want user to wait for some process to finish, builder.setView(R.layout.layout_loading_dialog); AlertDialog dialog = builder.create(); 

maintenant tout ce qui rest est de montrer et de cacher ce dialog dans nos événements de clic comme celui-ci

 progress_dialog.show(); // to show this dialog progress_dialog.dismiss(); // to hide this dialog 

Et c’est tout, cela devrait fonctionner, comme vous pouvez le voir, il est très simple et facile d’implémenter ProgressBar au lieu de ProgressDialog. vous pouvez maintenant afficher / fermer cette boîte de dialog dans Handler ou ASyncTask, à la mesure de vos besoins

Vous pouvez utiliser SpotDialog en utilisant la bibliothèque wasabeef, vous pouvez trouver le tutoriel complet à partir du lien suivant:

Exemple de SpotsDialog dans Android

Vous pouvez utiliser cette classe que j’ai écrite. Il n’offre que les fonctions de base. Si vous souhaitez un ProgressDialog entièrement fonctionnel, utilisez cette bibliothèque légère.

Gradle Setup

Ajoutez la dépendance suivante à module / build.gradle:

 comstack 'com.lmntrx.android.library.livin.missme:missme:0.1.5' 

Comment l’utiliser?

L’utilisation est similaire à l’original ProgressDialog

 ProgressDialog progressDialog = new progressDialog(YourActivity.this); progressDialog.setMessage("Please wait"); progressDialog.setCancelable(false); progressDialog.show(); progressDialog.dismiss(); 

NB : Vous devez remplacer l’activité de onBackPressed()

Implémentation Java8:

 @Override public void onBackPressed() { progressDialog.onBackPressed( () -> { super.onBackPressed(); return null; } ); } 

Mise en œuvre de Kotlin:

 override fun onBackPressed() { progressDialog.onBackPressed { super.onBackPressed() } } 
  • Référer exemple d’application pour la mise en œuvre complète
  • Une documentation complète peut être trouvée ici