サイト移転のお知らせ:http://techbooster.org/に移転しました

プログレスバー、プログレスダイアログを使って進捗を表示する

7月 22, 2010   //   by kkato   //   ユーザインターフェース  //  1 Comment

画像にエフェクトをかけている間や、サーバからファイルをダウンロードするなど、アプリを作る上でユーザに何かの実行中ということ、もしくは進捗度合いを示す場面は多々あるかと思います。

AndroidではProgressBarクラスを用いることでプログレスバーを表示することが可能です。


ProgressBarクラスは上記のスクーンショットのように4つの表示形式をスタイル(Style)として指定することができます。

ProgressBarのStyle

Style 形状
android:progressBarStyle 通常の円
android:progressBarStyleHorizontal 水平方向のバー
android:progressBarStyleLarge 大きい円
android:progressBarStyleSmall 小さい円

レイアウトファイルに記述する場合はそれぞれ以下のように行います。

<ProgressBar android:id="@+id/ProgressBarDefault"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content">
	</ProgressBar>
<ProgressBar android:id="@+id/ProgressBarHorizontal"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	style="?android:attr/progressBarStyleHorizontal">
	</ProgressBar>
<ProgressBar android:id="@+id/ProgressBarLarge"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	style="?android:attr/progressBarStyleLarge">
	</ProgressBar>
<ProgressBar android:id="@+id/ProgressBarSmall"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	style="?android:attr/progressBarStyleSmall">
	</ProgressBar>

進捗の値設定

水平方向の進捗バーのスタイルを指定した場合は、現在の進捗度合いを設定することが可能です。
setMaxメソッドで最大値を設定し、setProgressメソッドとsetSecondaryProgressメソッドで現在の値(進捗)を設定します。
setSecondaryProgressは薄い表示になります。

ProgressBar progressBar1 = (ProgressBar)findViewById(R.id.ProgressBarHorizontal1);
progressBar1.setMax(100); // 水平プログレスバーの最大値を設定
progressBar1.setProgress(20); // 水平プログレスバーの値を設定
progressBar1.setSecondaryProgress(60); // 水平プログレスバーのセカンダリ値を設定

ProgressBar progressBar2 = (ProgressBar)findViewById(R.id.ProgressBarHorizontal2);
progressBar2.setMax(200);  // 水平プログレスバーの最大値を設定
progressBar2.setProgress(150); // 水平プログレスバーの値を設定
progressBar2.setSecondaryProgress(100); // 水平プログレスバーのセカンダリ値を設定

下のsetSecondaryProgressで設定した値よりsetProgressで設定した値の方が大きいので見えなくなってしまっています。

また、単純に1つの作業の進捗を示すのであればsetSecondaryProgressは設定する必要が無いかもしれません。必要に応じて使うことになります

プログレスダイアログ ProgressDialog

もう1つの進捗の表示としてダイアログであるProgressDialogを使う方法があります。


このプログレスダイアログを出すのは簡単です。ProgressDialogクラスのオブジェクトを生成し、必要な設定を行ってshowメソッドを呼べば表示されます。

progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setMessage("処理を実行中しています");
progressDialog.setCancelable(true);
progressDialog.show();

※private ProgressDialog progressDialog;と宣言されているとします
このダイアログを表示した後に別スレッドで必要な処理を行い、完了すればdismissメソッドでダイアログを閉じます。

progressDialog.dismiss();

関連する記事:

Sponsored Link

1 Comment

  • [...] プログレスバー、プログレスダイアログを使って進捗を表示する [...]

技術書新刊 発売中

アンドロイドアカデミアには、CIやテスト、互換検証など実務に生きるノウハウをあつめています

技術書新刊 発売中

Android Next!はAndroid 7.0に対応したはじめての技術書です!


The Web Explorer 2はCSSの中央寄せやWebAudioなど未来を読み解く一冊です


Revised TypeScript in DefinitelylandはTypeScript 2.0(β)に対応した解説書です。インストールから型定義まで幅広くサポートしています


技術書をかこう!はエンジニアらしい執筆環境を構築、HowTo本です