功能如標題所示,簡單的android的3秒倒計時關閉界面或點擊關閉,如果3秒內點擊就不會再開啟自動關閉。看圖說話,代碼簡單,注釋清晰,一目了然:
下載整個項目代碼。



3秒過后進入下一界面:

代碼:
PaySuccessActivity.java
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;/** * 支付成功頁面 *http://download.csdn.net/user/qq_29614465 */public class PaySuccessActivity extends Activity { private ImageView im_back; private TextView tv_title; private TextView tv_paysuccess_time;//開始是3秒 private ImageView im_paysuccess;//對號 private Button b; private Boolean abc=false; @Override protected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.paysuccess); im_back= (ImageView) findViewById(R.id.im_back); tv_title= (TextView) findViewById(R.id.tv_title); tv_title.setText("支付成功"); tv_paysuccess_time=(TextView) findViewById(R.id.paysuccess_time); im_paysuccess= (ImageView) findViewById(R.id.paysuccess_im); im_paysuccess.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //點擊成功后跳轉到當前訂單的界面 Intent intent = new Intent(PaySuccessActivity.this, AfterPayActivity.class); startActivity(intent); finish(); abc=true; } }); CountDownTextViewHelper helper_pay=new CountDownTextViewHelper(tv_paysuccess_time, "0", 3, 1); helper_pay.setOnFinishListener(new CountDownTextViewHelper.OnFinishListener() { @Override public void finish() {// TODO Auto-generated method stub if (abc==false) { Intent intent2 = new Intent(PaySuccessActivity.this, AfterPayActivity.class); startActivity(intent2); } } }); helper_pay.start(); }}AfterPayActivity.java
import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;/** * 3秒關閉后進入的界面 *http://download.csdn.net/user/qq_29614465 */public class AfterPayActivity extends Activity { private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.after_pay); btn=(Button) findViewById(R.id.button_close); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub finish(); } }); }}CountDownTextViewHelper.java
import android.graphics.Color;import android.os.CountDownTimer;import android.util.Log;import android.widget.TextView;/** * 倒計時TextView幫助類 * http://download.csdn.net/user/qq_29614465 */public class CountDownTextViewHelper { // 倒計時 private CountDownTimer countDownTimer; // 倒計時結束的回調接口 private OnFinishListener listener; private TextView textView; /** * * @param textView * 需要顯示倒計時的TextView * @param defaultString * 默認顯示的字符串 * @param max * 需要進行倒計時的最大值,單位是秒 * @param interval * 倒計時的間隔,單位是秒 */ public CountDownTextViewHelper(final TextView textView, final String defaultString, int max, int interval) { this.textView = textView; // 由于CountDownTimer并不是準確計時,在onTick方法調用的時候,time會有1-10ms左右的誤差,這會導致最后一秒不會調用onTick() // 因此,設置間隔的時候,默認減去了10ms,從而減去誤差。 // 經過以上的微調,最后一秒的顯示時間會由于10ms延遲的積累,導致顯示時間比1s長max*10ms的時間,其他時間的顯示正常,總時間正常 countDownTimer = new CountDownTimer(max * 1000, interval * 1000 - 10) { @Override public void onTick(long time) { // 第一次調用會有1-10ms的誤差,因此需要+15ms,防止第一個數不顯示,第二個數顯示2s textView.setText(((time + 15) / 1000) + ""); textView.setTextColor(Color.BLACK); Log.d("CountDownTextViewHelper", "time = " + (time) + " text = " + ((time + 15) / 1000)); } @Override public void onFinish() { textView.setEnabled(true); textView.setText(defaultString); if (listener != null) { listener.finish(); } } }; } /** * 開始 倒計時 */ public void start() { textView.setEnabled(false); countDownTimer.start(); } /** * 設置倒計時結束的監聽器 * @param listener */ public void setOnFinishListener(OnFinishListener listener) { this.listener = listener; } /** * 倒計時結束的回調接口 */ public interface OnFinishListener { public void finish(); }}到這里就是全部的關鍵代碼了,布局文件當然由你自己處理了,如果想下載整個項目代碼,可到我的資源頁下載 (下載頁里的代碼稍微舊一點,但保證都可以用。新一點的代碼以博客里的為準。)
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答