サンプルプログラム工場

AAKAKA Appで使われているプログラムのサンプルコードをそのまま公開!

サンプルプログラム工場 > android > 一定時間で勝手に消えるダイアログサンプル#tryCustomDialog01
Google Play AAKAKAxSOFTへ

一定時間で勝手に消えるダイアログサンプル#tryCustomDialog01

実行ファイル(APK)やサンプル(zip)をダウンロードする
tryCustomDialog01の実行イメージtryCustomDialog01の実行イメージ

一定時間経過したら勝手に消えるダイアログ。
今は操作ができないけど、一定時間後に操作ができるよ「3,2,1」みたいにカウントを表示するときとかに使う。
タイトルバーを消す。見た目がとっても悪くないからこの場合はいらない。
res/value/style.xmlを作ってダイアログのスタイルを変更する
android:windowNoTitleを指定して、ダイアログの実体化させるときにスタイルを指定する
CustomDialog dlg = new CustomDialog(this, R.style.Theme_Dialog);
Handlerには何個も時間ごとのイベントを設定できる。なので今回はダイアログを閉じるための処理とカウントダウンを書き換える処理に使っている。
postDelayedは1度しか実行されないので、実行が終わるたびに再度設定しないといけない。

検索した
 一定期間ごとに呼び出す Android
 Android ダイアログバー 消す
 Android style xml
 
開発環境
 Eclipse IDE バージョン: 3.7 Indigo Service Release 2
 ターゲットプラットフォーム: 2.1
 API レベル: 7

package trial.sample.trycustomdialog01;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface.OnCancelListener;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class TryCustomDialog01Activity extends Activity {
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       // ダイアログの実体化
       CustomDialog dlg = new CustomDialog(this, R.style.Theme_Dialog);
       dlg.setShowTime(10000);
       dlg.show();
    }
    
}

//////////////////////////////////////////////////////////////・
//拡張したダイアログ
class CustomDialog extends Dialog {
	
	private Handler mHandler = new Handler();	// ハンドラー
	private int mShowTime;
	private Runnable mRunDismiss;
	private Runnable mRunCountdown;
	private int mCount;
	
	// ////////////////////////////////////////////////////////////・
	// コンストラクタ一式
	public CustomDialog(Context context, boolean cancelable,
			OnCancelListener cancelListener) {
		super(context, cancelable, cancelListener);
		this.setContentView(R.layout.custom_dialog);
	}
	public CustomDialog(Context context, int theme) {
		super(context, theme);
		this.setContentView(R.layout.custom_dialog);
	}
	public CustomDialog(Context context) {
		super(context);
		this.setContentView(R.layout.custom_dialog);
	}
	
	// ////////////////////////////////////////////////////////////
	// カウントダウンしたい期間を設定する
	public void setShowTime(int time) {
		this.mShowTime = time;
		this.mCount = time / 1000;
	}
	
	// ////////////////////////////////////////////////////////////
	// ダイアログの表示開始
	@Override
	public void show() {
		final CustomDialog dlg = this;
		
		// ダイアログを削除するためのモノ
		this.mRunDismiss = new Runnable() {
			public void run() {
				dlg.dismiss();
			}
		};
		
		// 一定期間ごとに表示されるタイマーを更新するためのモノ
		this.mRunCountdown = new Runnable() {
			public void run() {
				dlg.updateCountdown();
				// 一定期間ごとにカウントダウン
				dlg.mHandler.postDelayed(dlg.mRunCountdown, 1000);
			}
		};
		// しばらくまってから実行
		this.mHandler.postDelayed(this.mRunDismiss, this.mShowTime + 1000);
		this.mHandler.postDelayed(this.mRunCountdown, 1000);
		
		super.show();
	}

	// ////////////////////////////////////////////////////////////
	// カウントダウンを更新する
	public void updateCountdown() {
		this.mCount--;
		EditText editText = (EditText)this.findViewById(R.id.editText1);
		editText.setText("" + this.mCount);
	}
}


APKファイルをダウンロード サンプルプロジェクトをダウンロード

, , , , , ,

プリファレンス(Preferences)でデータの読み込み、保存#tryPreferences00 加速度センサーの値を取得するサンプル#trySensor00

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>