android 弹出弹框2秒消失_Android实现3秒钟自动关闭界面

功能如标题所示,简单的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();

}

}

到这里就是全部的关键代码了,布局文件当然由你自己处理了,如果想下载整个项目代码,可到我的资源页下载 (下载页里的代码稍微旧一点,但保证都可以用。新一点的代码以博客里的为准。)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

weixin_39720865

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值