AndroidのProgressDialogの例
Android ProgressDialogの例へようこそ。このチュートリアルでは、ProgressBarを含んだAndroidの進行ダイアログの作成方法について学びます。また、ProgressDialogとProgressBarの違いについても詳しく説明します。
AndroidのProgressDialog
Android ProgressDialogはAlertDialogの拡張機能です。AlertDialogについて詳しく知りたい場合は、こちらのチュートリアルをご覧ください。Android ProgressDialogはタスクの進捗状況を表示するダイアログボックス/ダイアログウィンドウです。Android Progress DialogはProgressBarとほぼ同じですが、ダイアログボックスとして表示される点が異なります。プログレスバーを表示するためにProgressDialogを作成するには、次のようにインスタンス化する必要があります。
ProgressDialog progress = new ProgressDialog(this);
AndroidのProgressDialogとProgressBarの違いについて説明してください。
-
- ProgressBarはビュー(例:TextView、ImageView、Buttonなど)であり、レイアウトで使用して進捗を表示するために使用できます。ProgressBarは、アプリの何かがまだ読み込まれていることを示すために使用されますが、ユーザーは他の部分とのやり取りもできます。
ProgressDialogは、内蔵のProgressBarを持つダイアログです。待機中にユーザーがアプリとやり取りすることを防ぎたい場合にProgressDialogが使用されます。ダイアログの特性により、解除されるまでユーザーは何もできません。
Android ProgressDialogの属性
AndroidのProgressDialogのいくつかの重要な属性は以下の通りです。
-
- メッセージを表示するためにsetMessage()メソッドを使用します。例:読み込み中…
-
- ダイアログボックスにタイトルを設定するためにsetTitle()メソッドを使用します。
-
- ProgressDialog.STYLE_HORIZONTALを指定してsetProgressStyle()メソッドを使用すると、ダイアログボックスに水平プログレスバーが表示されます。
-
- ProgressDialog.STYLE_SPINNERを指定してsetProgressStyle()メソッドを使用すると、ダイアログボックスに円形/回転プログレスバーが表示されます。
-
- 最大値を設定するためにsetMax()メソッドを使用します。
-
- 現在の進行状況の数値を取得するためにgetProgress()メソッドを使用します。
-
- 進行状況の最大値を返すためにgetMax()メソッドを使用します。
-
- show(Context context, CharSequence title, CharSequence message)は、プログレスダイアログを表示するための静的なメソッドです。
- incrementProgressBy(int diff)メソッドは、パラメータとして渡された値の差分でプログレスバーを増やします。
このチュートリアルでは、200ミリ秒ごとに増加する水平のProgressBarを含むProgressDialogを表示するアプリケーションを開発します。
AndroidのProgressDialogのプロジェクトの構造
AndroidのProgressDialogの例を示します。
activity_main.xmlには、以下のxmlコードに示されているように、クリック時にProgressDialogを呼び出すボタンが含まれています。
<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.scdev.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 プロジェクト」をダウンロードする。