Android ProgressDialogの例

Android ProgressDialogの例へようこそ。このチュートリアルでは、ProgressBarを含むAndroid ProgressDialogの作成方法について学びます。また、ProgressDialogとProgressBarの違いについて詳しく説明します。

Android ProgressDialog

Android ProgressDialogはAlertDialogの拡張です。AlertDialogについては、こちらのチュートリアルをご覧ください。Android ProgressDialogは、タスクの進捗状況を表示するダイアログボックス/ウィンドウです。Android Progress Dialogは、ProgressBarとほぼ同じですが、ダイアログボックスとして表示されます。ProgressBarを表示するProgressDialogを作成するには、次のようにインスタンス化する必要があります。

ProgressDialog progress = new ProgressDialog(this);

Android ProgressDialogとProgressBarの違い

  1. ProgressBarはView(TextView、ImageView、Buttonなど)であり、レイアウトに使用できます。ProgressBarは、アプリの何かがまだ読み込まれていることを示すために使用されますが、ユーザーは他の部分と対話することができます。
  2. ProgressDialogは「組み込み」のProgressBarを備えたDialogです。ProgressDialogは、ユーザーが待機中にアプリケーションと対話するのを防ぎたい場合に使用されます。Dialogの側面は、それが解除されるまでユーザーが何もできなくなります

Android ProgressDialogの属性

Android ProgressDialogのいくつかの重要な属性は以下の通りです。

  1. setMessage():このメソッドはユーザーにメッセージを表示するために使用されます。例:Loading…
  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):このメソッドは、パラメータとして渡された値の差分でプログレスバーを増分します。

このチュートリアルでは、200ミリ秒ごとに増分される水平プログレスバーを含むProgressDialogを表示するアプリケーションを開発します。

Android ProgressDialogのプロジェクト構造

Android ProgressDialogの例

activity_main.xmlには、クリック時にProgressDialogを呼び出すボタンが含まれています。以下はxmlコードです: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プログレスダイアログの例アプリケーションを実行した際の出力ビデオです。これにより、Android ProgressDialogの例チュートリアルは終了します。以下のリンクから最終的なAndroid ProgressDialogプロジェクトをダウンロードできます。

Android ProgressDialogプロジェクトのダウンロード

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