同様にタイトルバーに表示を行うのですが、円ではなく縞模様のバーで表示する方法です。
◆ プログレス(縞模様バー)の表示
それではこのサンプルを作成してみましょう。
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 件のコメント:
コメントを投稿