◆ タイトルバー文字列の変更
サンプルプログラムは「タイトルバーにプログレス(バー)の表示」で作成したプログラムをもとに作成します。当該プログラムではタイトルバーにプログレスバーを表示しますが、その間にタイトルバー文字列の後に続けて進捗率を示すパーセンテージを表示します。
TitleBarStringTest1aActivity.java
package jp.co.triware.samples.TitleBarStringTest1a; 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 TitleBarStringTest1aActivity extends Activity { // プログレスバーの更新周期(100)から増分値を設定 private static final int prograssPeriod = (Window.PROGRESS_END - Window.PROGRESS_START) / 100; private int progressUpdate; private int percentage; private CharSequence titleString; 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; // タイトル文字列の保存 titleString = getTitle(); // プログレスバー表示開始 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 (percentage = 1; percentage <= 100; percentage ++) { try { Thread.sleep(100); } catch (InterruptedException e) { ; } // プログレスバーの進捗率計算 progressUpdate += prograssPeriod; handler.post(new Runnable() { public void run() { // プログレスバーを更新する setProgress(progressUpdate); // 進捗率をタイトルバーに表示する setTitle(titleString + " " + Integer.toString(percentage) + "%"); } }); } handler.post(new Runnable() { public void run() { // タイトルバーを元に戻す setTitle(titleString); // プログレスバー表示終了 setProgressBarVisibility(false); Toast.makeText(getApplicationContext(), "Done.", Toast.LENGTH_SHORT).show(); } }); } }; }
プログレスを10秒間表示して終了することにします。プログレスの進捗状況の更新は100ms毎に100回行うことによって0~100%までを表します。
先ず、現在のタイトルバーの文字列を取得します。35行目のgetTitle();でこの処理を行っています。
処理中に進捗率を数値で表示している箇所が67行目setTitle(titleString + ...);です。今回のサンプルプログラムではプログレスバーの更新回数が100回なので、このカウンタをパーセンテージとして表示しています。
※パーセンテージの表示位置は動作確認に使用した機種(MEDIAS N-04C)で調整しています。実際のアプリケーションに組み込む場合は表示方法に工夫が必要です。
処理が終了してタイトルバーの文字列を元に戻しているのは、75行目のsetTitle(titleString);です。
画面レイアウトは「タイトルバーにプログレス(バー)の表示」のレイアウトと同じです。
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バージョンは、お使いの開発環境に合わせて設定してください。
プロジェクト名: TitleBarStringTest1a アプリケーション名: TitleBarStringTest1a パッケージ名: jp.co.triware.samples.TitleBarStringTest1a アクティビティーの作成: TitleBarStringTest1aActivity
実行結果
プログレス表示中、タイトルバーに数値で進捗率が表示されます。
10秒間待つとプログレスバーがフェードアウトして消えます。
0 件のコメント:
コメントを投稿