前回は進捗率を示して表示を行う「バー」のプログレスを紹介しました。こちらはセカンダリプログレスバーを使ったサンプルです。プログレスバーに加え、セカンダリプログレスバーを表示しています。先行して処理しているものの進捗状況について、セカンダリ値に指定すると、プログレスバーより薄めの色で進捗状況を表示します。
◆ プログレス(バー)の表示(セカンダリ)
ProgressBarOnTitleBarTest1bActivity.java
package jp.co.triware.samples.ProgressBarOnTitleBarTest1b;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.Toast;
public class ProgressBarOnTitleBarTest1bActivity extends Activity {
// プログレスバーの更新周期(100)から増分値を設定
private static final int progressPeriod = (Window.PROGRESS_END - Window.PROGRESS_START) / 100;
private int progressUpdate;
private Handler handler;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// タイトルバーにプログレスバーを設定する
requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
handler = new Handler();
Button btnStart = (Button)findViewById(R.id.start_btn);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
progressUpdate = 0;
// プログレスバー表示開始
setProgressBarVisibility(true);
Toast.makeText(getApplicationContext(), "Processing....", Toast.LENGTH_LONG).show();
// プログレスバー表示中の処理(別スレッドで実行)
(new Thread(runnable)).start();
}
});
}
// 10秒後にプログレスバーの表示を終了する
private Runnable runnable = new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100; i ++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
;
}
// プログレスバーの進捗率計算
progressUpdate += progressPeriod;
handler.post(new Runnable() {
public void run() {
// セカンダリプログレスバーを更新する
setSecondaryProgress(progressUpdate * 2);
// プログレスバーを更新する
setProgress(progressUpdate);
}
});
}
handler.post(new Runnable() {
public void run() {
// プログレスバー表示終了
setProgressBarVisibility(false);
Toast.makeText(getApplicationContext(), "Done.", Toast.LENGTH_SHORT).show();
}
});
}
};
}
基本的には、前回のブログ「タイトルバーにプログレス(バー)の表示」で紹介したコードと同じで、タイトルバーへのプログレスバー設定はrequestWindowFeature(Window.FEATURE_PROGRESS)、プログレスバーの表示はsetProgressBarVisibility(true)、プログレスバーの非表示がsetProgressBarVisibility(false)です。
セカンダリプログレスバーは、先行して進む処理に割り当てます。これはセカンダリ部分の進捗を設定する処理を追加するのみで59行目で行っています。他の処理や注意事項なども前回と全く同様です。
setSecondaryProgress(progressUpdate * 2);
画面レイアウトも前回と同じです。
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/start_btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Start ProgressBar on TitleBar"
/>
</LinearLayout>
Androidプロジェクトの設定
ビルドターゲットや最小SDKバージョンは、お使いの開発環境に合わせて設定してください。
プロジェクト名: ProgressBarOnTitleBarTest1b アプリケーション名: ProgressBarOnTitleBarTest1b パッケージ名: jp.co.triware.samples.ProgressBarOnTitleBarTest1b アクティビティーの作成: ProgressBarOnTitleBarTest1bActivity
実行結果
プログレスバーは100回更新されます。
10秒間待つとプログレスバーがフェードアウトして消えます。




0 件のコメント:
コメントを投稿