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の違い
- ProgressBarはView(TextView、ImageView、Buttonなど)であり、レイアウトに使用できます。ProgressBarは、アプリの何かがまだ読み込まれていることを示すために使用されますが、ユーザーは他の部分と対話することができます。
- ProgressDialogは「組み込み」のProgressBarを備えたDialogです。ProgressDialogは、ユーザーが待機中にアプリケーションと対話するのを防ぎたい場合に使用されます。Dialogの側面は、それが解除されるまでユーザーが何もできなくなります
Android ProgressDialogの属性
Android ProgressDialogのいくつかの重要な属性は以下の通りです。
- setMessage():このメソッドはユーザーにメッセージを表示するために使用されます。例:Loading…
- setTitle():このメソッドはダイアログボックスにタイトルを設定するために使用されます
- setProgressStyle(ProgressDialog.STYLE_HORIZONTAL):このメソッドはダイアログボックスに水平プログレスバーを表示するために使用されます
- setProgressStyle(ProgressDialog.STYLE_SPINNER):このメソッドはダイアログボックスに円形/回転プログレスバーを表示するために使用されます
- setMax():このメソッドは最大値を設定するために使用されます
- getProgress():このメソッドは数値で現在の進捗値を取得するために使用されます
- getMax():このメソッドは進捗の最大値を返します
- show(Context context, CharSequence title, CharSequence message):これは静的メソッドで、進行中のダイアログを表示します
- 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プロジェクトをダウンロードできます。
Source:
https://www.digitalocean.com/community/tutorials/android-progressdialog-example