一個簡單的顯示倒計時的alertdialog。
dialog顯示及開始倒計時,倒計時結束則讓alertdialog消失,或者是alertdialog消失取消計時。
不依賴activity顯示dialog,需要許可權:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
alertdialog的建立:
public void CreateDialog() {if (mAlertDialog != null) {return;}LayoutInflater inflater = LayoutInflater.from(mContext);View v = inflater.inflate(R.layout.dialog_timertask, null);if (v != null) {mTextView = (TextView) v.findViewById(R.id.dialog_text);}Builder builder = new AlertDialog.Builder(mContext);builder.setTitle("倒計時:");builder.setView(v);builder.setNegativeButton("cancel", null);builder.setPositiveButton("sure", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});mAlertDialog = builder.create();mAlertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);//顯示mAlertDialog.setOnDismissListener(new OnDismissListener() {@Overridepublic void onDismiss(DialogInterface dialog) {mAlertDialog = null;if (mCountDownTimer!=null) {mCountDownTimer.cancel();mCountDownTimer=null;}}});}
倒計時:
private void CountDown(){ if (mCountDownTimer!=null) {return;} mCountDownTimer = new CountDownTimer(8000,1000) {@Overridepublic void onTick(long millisUntilFinished) {mTextView.setText(millisUntilFinished/1000+"s");}@Overridepublic void onFinish() {if (mAlertDialog!=null) {mAlertDialog.dismiss();}}};mCountDownTimer.start(); }