如何使用Android实现3秒钟自动关闭界面

这篇文章将为大家详细讲解有关如何使用Android实现3秒钟自动关闭界面,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

功能如标题所示,简单的android的3秒倒计时关闭界面或点击关闭,如果3秒内点击就不会再开启自动关闭。看图说话,代码简单,注释清晰,一目了然:

下载整个项目代码。 

如何使用Android实现3秒钟自动关闭界面

 

如何使用Android实现3秒钟自动关闭界面

如何使用Android实现3秒钟自动关闭界面

3秒过后进入下一界面:

如何使用Android实现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; /**  * 支付成功页面  *  */ 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秒关闭后进入的界面  *  */ 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帮助类  *   */ 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();  } }

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。