Android ProgressDialog 示例

歡迎來到 Android ProgressDialog 示例。在這個教程中,我們將學習如何創建包含 ProgressBar 的 Android 進度對話框。同時,我們將詳細討論 ProgressDialog 和 ProgressBar 之間的區別。

Android ProgressDialog

Android ProgressDialog 是 AlertDialog 的擴展。要了解有關 AlertDialog 的更多信息,請查看它的教程 這裡。Android ProgressDialog 是一個顯示任務進度的對話框/對話窗口。Android 進度對話框幾乎與 ProgressBar 相同,唯一的區別在於它顯示為對話框。為了創建一個顯示 ProgressBar 的 ProgressDialog,我們需要像這樣實例化它。

ProgressDialog progress = new ProgressDialog(this);

Android ProgressDialog 和 ProgressBar 之間的區別

  1. ProgressBar 是一個視圖(如 TextView、ImageView、Button 等),可用於佈局中顯示某些進度。ProgressBar 用於指示應用程序中的某些內容仍在加載,而用戶仍可與其他部分進行交互。
  2. ProgressDialog 是具有「內置」ProgressBar 的對話框。當我們希望防止用戶在等待時與應用程序交互時,就會使用 ProgressDialog。對話框方面會凍結用戶的所有操作,直到被關閉。

Android ProgressDialog 屬性

以下是一些重要的 android ProgressDialog 屬性。

  1. setMessage():此方法用於向用戶顯示消息。例如:正在加載…
  2. setTitle():此方法用於設置對話框的標題
  3. setProgressStyle(ProgressDialog.STYLE_HORIZONTAL):此方法用於在對話框中顯示水平進度條
  4. setProgressStyle(ProgressDialog.STYLE_SPINNER):此方法用於在對話框中顯示圓形/旋轉進度條
  5. setMax():此方法用於設置最大值
  6. getProgress():此方法用於獲取當前進度值
  7. getMax():此方法返回進度的最大值
  8. show(Context context, CharSequence title, CharSequence message):這是一個靜態方法,用於顯示進度對話框
  9. incrementProgressBy(int diff):此方法透過傳遞的值差異來增加進度條的進度。

在本教程中,我們將開發一個應用程序,顯示包含水平進度條的ProgressDialog,該進度條在每200毫秒後增加一次。

Android ProgressDialog項目結構

Android ProgressDialog示例

activity_main.xml 包含一個按鈕,單擊時調用ProgressDialog,如下所示:activity_main.xml

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" Start ProgressDialog"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="57dp" />

</RelativeLayout>

下面是MainActivity.java文件。 MainActivity.java

package com.journaldev.progressdialog;

import android.app.ProgressDialog;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button button;
    ProgressDialog progressDoalog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                progressDoalog = new ProgressDialog(MainActivity.this);
                progressDoalog.setMax(100);
                progressDoalog.setMessage("Its loading....");
                progressDoalog.setTitle("ProgressDialog bar example");
                progressDoalog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                progressDoalog.show();
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            while (progressDoalog.getProgress() <= progressDoalog
                                    .getMax()) {
                                Thread.sleep(200);
                                handle.sendMessage(handle.obtainMessage());
                                if (progressDoalog.getProgress() == progressDoalog
                                        .getMax()) {
                                    progressDoalog.dismiss();
                                }
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }

            Handler handle = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    progressDoalog.incrementProgressBy(1);
                }
            };
        });
    }
}

以下代碼啟動處理程序,在其中編寫代碼以增加進度條的進度。

handle.sendMessage(handle.obtainMessage());

以下是您在 Android 模擬器中運行 Android ProgressDialog 範例應用程式時的輸出視頻。這標誌著 Android ProgressDialog 範例教程的結束。您可以從下面的鏈接下載最終的Android ProgressDialog 專案

下載 Android ProgressDialog 專案

Source:
https://www.digitalocean.com/community/tutorials/android-progressdialog-example