功能如标题所示,简单的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(); } }
到这里就是全部的关键代码了,布局文件当然由你自己处理了,如果想下载整个项目代码,可到我的资源页下载 (下载页里的代码稍微旧一点,但保证都可以用。新一点的代码以博客里的为准。)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。