ProgressDialog ist veraltet. Was ist die Alternative?

213

Ich bin rübergekommen, um zu sehen, dass ProgressDialogdas jetzt veraltet ist. Was würde alternative sein anstatt dass abgesehen davon , zu verwenden ProgressBar. Ich benutze Android Studio Version 2.3.3.

ProgressDialog progressDialog=new ProgressDialog(this);
progressDialog.show();
Sunil P.
quelle
Mögliches Duplikat von ProgressDialog ist veraltet
Lalit Jadav

Antworten:

196

Ja, API level 26es ist veraltet. Stattdessen können Sie verwenden progressBar.

So erstellen Sie es programmgesteuert:

Holen Sie sich zuerst einen Verweis auf das Root-Layout

RelativeLayout layout = findViewById(R.id.display);  //specify here Root layout Id

oder

RelativeLayout layout = findViewById(this);

Fügen Sie dann den Fortschrittsbalken hinzu

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

Anzeigen des Fortschrittsbalkens

progressBar.setVisibility(View.VISIBLE);

So blenden Sie den Fortschrittsbalken aus

progressBar.setVisibility(View.GONE);

Um die Benutzerinteraktion zu deaktivieren, müssen Sie nur den folgenden Code hinzufügen

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

Um die Benutzerinteraktion wiederherzustellen, müssen Sie nur den folgenden Code hinzufügen

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

Ändern Sie zum späteren Nachschlagen das android.R.attr.progressBarStyleSmallin android.R.attr.progressBarStyleHorizontal.

Der folgende Code funktioniert nur oben API level 21

progressBar.setProgressTintList(ColorStateList.valueOf(Color.RED));

So erstellen Sie es über XML:

<ProgressBar
        android:id="@+id/progressbar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:indeterminate="true"
        android:max="100"
        android:backgroundTint="@color/white"
        android:layout_below="@+id/framelauout"
        android:indeterminateTint="#1a09d6"
        android:layout_marginTop="-7dp"/>

In Ihrer Tätigkeit

progressBar = (ProgressBar) findViewById(R.id.progressbar);

Das Ein- und Ausblenden des Fortschrittsbalkens ist dasselbe

 progressBar.setVisibility(View.VISIBLE); // To show the ProgressBar 
 progressBar.setVisibility(View.INVISIBLE); // To hide the ProgressBar

Hier ist ein Beispielbild, wie es aussehen würde:

Für weitere Details:
1. Referenz eins
2. Referenz zwei

Gowthaman M.
quelle
Es ist, als hättest du das benutzt und du gehst so, als ob der Fortschrittsdialog endlich veraltet ist, damit ich der Welt mein Potenzial zeigen kann: D, nur ein Scherz, vielen Dank für diese detaillierte Antwort.
Mohamed Hajr
1
aber wie setzt man Message () darauf?
Reverie_ss
Schau dir das an ; stackoverflow.com/questions/18410984/…
Gowthaman M
Bitte aktualisieren Sie den XML-Code auf "@android: Farbe / Weiß"
Musterjunk
Um eine horizontale Leiste zu erhalten, verwenden Sie bitte: ProgressBar progressBar = new ProgressBar (youractivity.this, null, android.R.attr.progressBarStyleHorizontal); progressBar.setIndeterminate (true);
Taranjeetsapra
43

Sie können AlertDialogwie ProgressDialogunten angegeben Code für die verwenden ProgressDialog. Diese Funktion müssen Sie aufrufen, wenn Sie einen Fortschrittsdialog anzeigen.

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().getAttributes());
        layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT;
        layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT;
        dialog.getWindow().setAttributes(layoutParams);
    }
}

Ausgabe:

Geben Sie hier die Bildbeschreibung ein

Kishan Donga
quelle
Wie kann man es abweisen?
Jay Dangar
1
Erstellen Sie eine Basisklasse wie BaseActivity, und fügen Sie nach dem Hinzufügen dieses Codeteils auch einen Methoden-Entlassungsdialog hinzu. Dazu müssen Sie das Objekt 'AlertDialog dialog' global definieren
Kishan Donga
Rufen Sie dann einfach die Methode dialog.dismiss () in Ihrer Methode zum Ausblenden des Dialogs auf.
Kishan Donga
1
Alles ist in Ordnung, aber wenn Sie auf eine beliebige Stelle im Bildschirm tippen, wird der Dialog abgewiesen. Serviceanrufe werden ausgeführt, und suer kann sie abweisen und mit der Benutzeroberfläche spielen, was nicht richtig ist. Jede Lösung?
Vivek Kumar
Sie können festlegen, dass es nicht stornierbar ist, aber wenn Sie das Gerät drehen oder den geteilten Bildschirm verwenden, wird es trotzdem geschlossen und der Benutzer kann mit der Benutzeroberfläche interagieren, die noch nicht bereit ist. Vielleicht AlertDialogsollte hier nicht verwendet werden.
Meow Cat 2012
30

Diese Klasse wurde in API-Stufe 26 nicht mehr unterstützt. ProgressDialog ist ein modaler Dialog, der verhindert, dass der Benutzer mit der App interagiert. Anstatt diese Klasse zu verwenden, sollten Sie eine Fortschrittsanzeige wie ProgressBar verwenden, die in die Benutzeroberfläche Ihrer App eingebettet werden kann. Alternativ können Sie eine Benachrichtigung verwenden, um den Benutzer über den Fortschritt der Aufgabe zu informieren. Verknüpfung

Es ist Android Oaufgrund des Googleneuen UI-Standards veraltet

Oussema Aroua
quelle
1
"Diese Klasse wurde in API-Level 26 veraltet" wird anstelle eines Datums verwendet. Sie wollen nicht, dass du es mehr benutzt. Ja, es liegt an neuen UI-Standards, aber sie gelten für jede API-Ebene ...
creativecreatorormaybenot
28
"Es ist bei Android O wegen des neuen UI-Standards von Google veraltet" - Link bitte neuer UI-Standard
Ajay S
22
Und der Grund für die Ablehnung ist, dass es Benutzereingaben blockiert? Manchmal frage ich mich, welche Art von Pulver Google-Ingenieure schnauben. Es ist viel einfacher, einen Blockierungsdialog zu verwenden, als Eingabesteuerelemente auszublenden / zu deaktivieren und dann einen Fortschrittsbalken zu aktivieren. Dummes Denken von Google.
TheRealChx101
@ TheRealChx101 Die Android-Benutzeroberfläche wurde entwickelt, um dem Benutzer ein falsches Gefühl der Freiheit auf Kosten teurer Problemumgehungen zu vermitteln, um schwerwiegende Fehler zu vermeiden, die sich daraus ergeben. Warten Sie, bis Sie die Berechtigungen erhalten und wissen, was die Netzbetreiber Google bezahlt haben, um zu sagen, dass Sie darauf zugreifen können und nicht.
Verlassener Wagen
3
Ich denke, sie sind mehr daran interessiert, den Missbrauch modaler Dialoge zu verhindern: Manchmal wird gezeigt, dass sie den Benutzer auf das Ende eines Vorgangs warten lassen, wenn der Benutzer überhaupt nicht warten muss, aber andere Dinge weiterhin tun kann Wenn sie also unnötig warten, wird die Benutzererfahrung beeinträchtigt. Ungeachtet dessen gibt es viele Umstände, unter denen der Benutzer keine andere Wahl hat, als auf den Abschluss eines Vorgangs zu warten. Daher stimme ich zu, dass es für diese Fälle eine nicht veraltete Standardmethode geben sollte, anstatt jeden Entwickler zu zwingen, seine eigene zu implementieren.
Fran Marzoa
25

Sie können einfach eine XML-Oberfläche für Ihren Fortschrittsbalken entwerfen und diese als Ansicht an einen AlertDialog übergeben. Anschließend können Sie den Dialog jederzeit anzeigen oder schließen.

progress.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:padding="13dp"
    android:layout_centerHorizontal="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ProgressBar
        android:id="@+id/loader"
        android:layout_marginEnd="5dp"
        android:layout_width="45dp"
        android:layout_height="45dp" />
    <TextView
        android:layout_width="wrap_content"
        android:text="Loading..."
        android:textAppearance="?android:textAppearanceSmall"
        android:layout_gravity="center_vertical"
        android:id="@+id/loading_msg"
        android:layout_toEndOf="@+id/loader"
        android:layout_height="wrap_content" />

</LinearLayout>

Der Codecode, der den Fortschrittsdialog anzeigt. Kopieren Sie einfach diesen Code und fügen Sie ihn in Ihr Fragment ein.

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

Rufen Sie dann einfach die Methode auf, wann immer Sie den Fortschrittsdialog anzeigen möchten, und übergeben Sie true als Argument, um ihn anzuzeigen, oder false, um den Dialog zu schließen.

DevMike01
quelle
2
@Alok Rajasukumaran Es scheint, dass Sie Aktivität verwenden, ersetzen Sie sie einfach durch this, damit es so aussieht. AlertDialog.Builder builder = new AlertDialog.Builder(this);Bitte stellen Sie sicher, dass Sie den richtigen Code kopieren.
DevMike01
1
layout_toEndOfkann entfernt werden, da nicht fürLinearLayout
Mark
21

ProgressBar ist sehr einfach und benutzerfreundlich. Ich beabsichtige, dies genauso wie einen einfachen Fortschrittsdialog zu machen. Der erste Schritt besteht darin, dass Sie ein XML-Layout des Dialogfelds erstellen können, das Sie anzeigen möchten. Nehmen wir an, wir nennen dieses Layout

layout_loading_dialog.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="20dp">
    <ProgressBar
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="4"
        android:gravity="center"
        android:text="Please wait! This may take a moment." />
</LinearLayout>

Der nächste Schritt ist das Erstellen eines AlertDialogs, der dieses Layout mit ProgressBar anzeigt

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();

Jetzt müssen Sie nur noch diesen Dialog in unseren Klickereignissen wie diesem ein- und ausblenden

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

und das ist es, es sollte funktionieren, wie Sie sehen können, ist es sehr einfach und leicht, ProgressBar anstelle von ProgressDialog zu implementieren. Jetzt können Sie dieses Dialogfeld entweder in Handler oder in ASyncTask anzeigen / schließen, je nach Bedarf

Syed Naeem
quelle
Bitte wechseln Sie progress_dialog.show();zu builder.show();. Danke dir.
Matheus Miranda
2
Ich habe den Namen in das richtige AlertDialog-Objekt geändert, show()/ dismiss(), aber ich habe es nicht gesetzt, builder.show()weil wir dann, um es zu verwerfen, etwas tun müssten, dialog.dismiss()was für jemanden verwirrend ist, der seinen Code einfach und leicht verständlich halten möchte , und auch Da builder.show()das AlertDialogObjekt zurückgegeben wird und wir diese Referenz wie AlertDialog dialog = builder.show();damals speichern müssen dialog.dismiss(), ist es einfacher, die builder.create()Rückgabe in einem AlertDialogObjekt zu haben und dieses Objekt dann zum Ein- und Ausblenden des Dialogs zu verwenden
Syed Naeem
Wir können "runOnUiThread (new Runnable () {@Override public void run () {dialog.show/dismiss ();}});" verwenden, wenn der aufrufende Thread kein Haupt-UI-Thread ist. (Nützlich, wenn wir von WebView aus aufrufen - sollten Methoden überschreiben.)
SHS
15

Ja, ProgressDialog ist veraltet, Dialog jedoch nicht.

Sie können Ihre eigene XML - Datei (mit einem Fortschrittsbalken und eine Lade Text) in das Dialog - Objekt aufzublasen und dann ein- oder ausblenden es die Verwendung show()und dismiss()Funktionen. Hier ist ein Beispiel (Kotlin):

ProgressDialog-Klasse :

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

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:background="#fff"
android:padding="13dp"
android:layout_height="wrap_content">
<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyle"
    android:layout_width="100dp"
    android:layout_margin="7dp"
    android:layout_height="100dp"
    android:layout_above="@+id/no_jobs_pickups"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_margin="7dp"
    android:layout_toEndOf="@+id/progressBar"
    android:text="Loading..." />
</RelativeLayout>

In Ihrem Code : Tun Sie es einfachvar dialog = ProgressDialog.progressDialog(context)

Zeigen: dialog.show()

Verstecken: dialog.dismiss()

Han
quelle
11

Wenn Sie wirklich gegen ihren Willen vorgehen möchten , können Sie dennoch den Sweet Alert Dialog verwenden oder einen eigenen erstellen.

progress_dialog_layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TableRow
        android:layout_centerInParent="true"
        android:layout_width="match_parent"
        android:layout_height="64dp" >

        <ProgressBar
            android:id="@+id/progressBar2"
            style="?android:attr/progressBarStyle"
            android:layout_width="wrap_content"
            android:layout_height="match_parent" />

        <TextView
            android:gravity="center|left"
            android:id="@+id/textView9"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textColor="@color/black"
            android:textSize="18sp"
            android:text="Downloading data. Please wait.." />
    </TableRow>
</RelativeLayout>

Java-Code:

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();
        }
Ramesh Jaya
quelle
2
Ich habe schreckliche Erfahrungen mit SweetAlertDialog in einer Produktionsumgebung gemacht. Seien Sie sehr vorsichtig, da es von Fenster zu Fenster leckt.
Jeremy
für mich HideProgresstut nichts.
Saeed Neamati
1
Warum eine Bibliothek verwenden, um nur einen Fortschrittsdialog anzuzeigen?
Khemraj
6

ProgressBar ist die beste Alternative für ProgressDialog. Ein Benutzeroberflächenelement, das den Fortschritt einer Operation anzeigt.

Weitere Informationen finden Sie in diesem Google-Dokument: https://developer.android.com/reference/android/widget/ProgressBar.html

Furqan
quelle
16
Er sagte "abgesehen von Progressbar".
CreativeCreatorormaybenot
6

Sie müssen keine benutzerdefinierte Bibliothek importieren.

Ich bevorzuge die moderne Version, AlertDialogdaher ist dies die Kotlin- Version für die großartige Antwort, die Kishan Donga auf dieser Seite veröffentlicht hat.

Kotlin-Code:

fun setProgressDialog(context:Context, message:String):AlertDialog {
    val llPadding = 30
    val ll = LinearLayout(context)
    ll.orientation = LinearLayout.HORIZONTAL
    ll.setPadding(llPadding, llPadding, llPadding, llPadding)
    ll.gravity = Gravity.CENTER
    var llParam = LinearLayout.LayoutParams(
                  LinearLayout.LayoutParams.WRAP_CONTENT,
                  LinearLayout.LayoutParams.WRAP_CONTENT)
    llParam.gravity = Gravity.CENTER
    ll.layoutParams = llParam

    val progressBar = ProgressBar(context)
    progressBar.isIndeterminate = true
    progressBar.setPadding(0, 0, llPadding, 0)
    progressBar.layoutParams = llParam

    llParam = LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT)
    llParam.gravity = Gravity.CENTER
    val tvText = TextView(context)
    tvText.text = message
    tvText.setTextColor(Color.parseColor("#000000"))
    tvText.textSize = 20.toFloat()
    tvText.layoutParams = llParam

    ll.addView(progressBar)
    ll.addView(tvText)

    val builder = AlertDialog.Builder(context)
    builder.setCancelable(true)
    builder.setView(ll)

    val dialog = builder.create()
    val window = dialog.window
    if (window != null) {
        val layoutParams = WindowManager.LayoutParams()
        layoutParams.copyFrom(dialog.window?.attributes)
        layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT
        layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT
                dialog.window?.attributes = layoutParams
    }
    return dialog
}

Verwendung:

val dialog = setProgressDialog(this, "Loading..")
dialog.show()

Ausgabe:

Geben Sie hier die Bildbeschreibung ein

Alessandro Ornano
quelle
wie in fragment zu verwenden? Was ist Kontext in Fragment?
Rogayeh Hosseini
Normalerweise können Sie in Ihrem Fragment Ihre aktuelle Ansicht erhalten, daher sollte der Kontext wie view!!.context
Alessandro Ornano
4

Wie auf der genannten Dokumentationsseite die Alternative ist ProgressBar . ProgressDialogDas Aussehen kann durch Platzieren eines ProgressBarin einem repliziert werden AlertDialog.

Sie können es weiterhin verwenden, aber Android möchte nicht, dass Sie es verwenden. Deshalb ist es veraltet. Sie sollten also in Betracht ziehen, Ihr Problem auf eine andere Weise zu lösen, z. B. durch Einbetten eines ProgressBarin Ihr Problem Layout.

CreativeCreatorormaybenot
quelle
@PeterHaddad Es funktioniert "normal" in API 28 in meinem Projekt und genauso wie in der unteren API. Wie aus der Abwertung hervorgeht, wird es nicht mehr unterstützt und funktioniert möglicherweise in Zukunft nicht mehr.
DMonkey
3

ProgressDialog wurde in API-Level 26 veraltet.

"Deprecated" bezieht sich auf Funktionen oder Elemente, die gerade durch neuere ersetzt werden.

ProgressDialog ist ein modaler Dialog, der verhindert, dass der Benutzer mit der App interagiert. Anstatt diese Klasse zu verwenden, sollten Sie eine Fortschrittsanzeige wie verwenden ProgressBar, die in die Benutzeroberfläche Ihrer App eingebettet werden kann.

Vorteil

Ich würde persönlich sagen, dass ProgressBardas den Vorteil gegenüber den beiden hat. ProgressBarist ein Benutzeroberflächenelement, das den Fortschritt einer Operation anzeigt. Zeigen Sie einem Benutzer unterbrechungsfrei Fortschrittsbalken an . Zeigen Sie den Fortschrittsbalken in der Benutzeroberfläche Ihrer App an.

IntelliJ Amiya
quelle
2

Ich verwende DelayedProgressDialog von https://github.com/Q115/DelayedProgressDialog. Es funktioniert genauso wie ProgressDialog mit dem zusätzlichen Vorteil einer Verzögerung, falls erforderlich.

Die Verwendung ähnelt ProgressDialog vor Android O:

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

Sie können diese Klasse verwenden, die ich geschrieben habe. Es bietet nur die Grundfunktionen. Wenn Sie einen voll funktionsfähigen ProgressDialog wünschen, verwenden Sie diese kompakte Bibliothek .

Gradle-Setup

Fügen Sie module / build.gradle die folgende Abhängigkeit hinzu:

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

Wie benutzt man es?

Die Verwendung ähnelt dem ursprünglichen ProgressDialog

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

NB : Sie müssen die Aktivitäten überschreibenonBackPressed()

Java8-Implementierung:

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

Kotlin Implementierung:

override fun onBackPressed() {
   progressDialog.onBackPressed { super.onBackPressed() }
}
  • Die vollständige Implementierung finden Sie in der Beispiel-App
  • Die vollständige Dokumentation finden Sie hier
Livin Mathew
quelle
1

Vielleicht könnte Ihnen dieser Leitfaden helfen.

Normalerweise ziehe ich es vor, benutzerdefinierte AlertDialogs mit Indikatoren zu erstellen. Es löst Probleme wie die Anpassung der App-Ansicht.

Dmitry Ushkevich
quelle
1

Es kann anderen Menschen helfen.

Viele beliebte Apps haben einen anderen Ansatz, um den Fortschritt von Netzwerkanforderungen, Laden von Dateien usw. anzuzeigen. Beim Laden des Spinners wird nicht angezeigt, wie viel Inhalt geladen wurde oder noch geladen werden muss. Es gibt eine Zeit der Unsicherheit, die aus Sicht von UI / UX schlecht ist. Viele beliebte Apps (Facebook, Linkedin usw.) haben dieses Problem behoben, indem zuerst die Bare-Bones-Benutzeroberfläche angezeigt wurde. Anschließend wird der geladene Inhalt nach und nach auf dem Bildschirm angezeigt.

Ich habe den Schimmer für meine Apps verwendet, um dieses Problem zu lösen.

Es gibt einen guten Artikel darüber, der für andere Menschen von Vorteil sein wird

Rajesh Khadka
quelle
0

Im Fortschrittsdialog kann der Benutzer keine Arbeit verrichten. Alle Hintergrundprozesse werden während des Fortschrittsdialogs gestoppt. Es ist daher ratsam, den Fortschrittsbalken anstelle des Fortschrittsdialogs zu verwenden.

Nevil Ghelani
quelle