同様にタイトルバーに表示を行うのですが、円ではなく縞模様のバーで表示する方法です。
◆ プログレス(縞模様バー)の表示
それではこのサンプルを作成してみましょう。
ProgressBarOnTitleBarTest1cActivity.java
package jp.co.triware.samples.ProgressBarOnTitleBarTest1c;
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 ProgressBarOnTitleBarTest1cActivity extends Activity {
// プログレスバーの更新周期(100)から増分値を設定
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) {
// プログレスバー表示開始
setProgressBarVisibility(true);
// プログレスバーを縞模様バーに設定
setProgressBarIndeterminate(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) {
;
}
}
handler.post(new Runnable() {
public void run() {
// プログレスバー表示終了
setProgressBarVisibility(false);
setProgressBarIndeterminate(false);
Toast.makeText(getApplicationContext(), "Done.", Toast.LENGTH_SHORT).show();
}
});
}
};
}
時間あるいは処理量が未定のサンプルですが、他のサンプルと同様にプログレスバーを10秒間表示して終了することにします。最初に、タイトルバーにプログレスを設定している箇所が19行目です。
requestWindowFeature(Window.FEATURE_PROGRESS);
このAPIはsetContentView()の前に呼び出す必要があります。
次に設定したプログレスを表示しているのが29行目です。
setProgressBarVisibility(true);
そしてその次の行がプログレスバーを縞模様にするAPIの呼び出しです。
setProgressBarIndeterminate(true);
処理が終了してプログレスの表示を消しているのは、55行目です。
setProgressBarVisibility(false);
そしてその次の行で縞模様の設定を解除しています。
setProgressBarIndeterminate(false);
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バージョンは、お使いの開発環境に合わせて設定してください。
プロジェクト名: ProgressBarOnTitleBarTest1c アプリケーション名: ProgressBarOnTitleBarTest1c パッケージ名: jp.co.triware.samples.ProgressBarOnTitleBarTest1c アクティビティーの作成: ProgressBarOnTitleBarTest1cActivity
実行結果
プログレス表示中、タイトルバーの上で縞模様のバーが表示されます。
10秒間待つとプログレスの表示が消えます。




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