Android实现3秒钟自动关闭界面

 更新时间:2018年02月09日 08:36:32   作者:我梦醒九分  
这篇文章主要为大家详细介绍了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();
 }
}

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

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

相关文章

  • android gradle如何修改生成的apk名字

    android gradle如何修改生成的apk名字

    Gradle是当前非常“劲爆”得构建工具,而这篇文章主要给大家介绍了关于android gradle如何修改生成的apk名字的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-12-12
  • RecyclerView嵌套RecyclerView滑动卡顿的解决方法

    RecyclerView嵌套RecyclerView滑动卡顿的解决方法

    这篇文章主要为大家详细介绍了RecyclerView嵌套RecyclerView滑动卡顿的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Android TextView跑马灯实现原理及方法实例

    Android TextView跑马灯实现原理及方法实例

    字的跑马灯效果在移动端开发中是一个比较常见的需求场景,下面这篇文章主要给大家介绍了关于Android TextView跑马灯实现原理及方法的相关资料,需要的朋友可以参考下
    2022-05-05
  • Android客户端程序Gradle如何打包

    Android客户端程序Gradle如何打包

    这篇文章主要介绍了Android客户端程序Gradle如何打包 的相关资料,需要的朋友可以参考下
    2016-01-01
  • Android消息个数提醒控件使用详解

    Android消息个数提醒控件使用详解

    这篇文章主要为大家详细介绍了Android消息个数提醒控件的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Android仿淘宝物流追踪的实例代码

    Android仿淘宝物流追踪的实例代码

    本篇文章主要介绍了Android仿淘宝物流追踪的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • android UI绘制加减号按钮

    android UI绘制加减号按钮

    这篇文章主要为大家详细介绍了android UI绘制加减号按钮,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Android悬浮窗按钮实现点击并显示/隐藏多功能列表

    Android悬浮窗按钮实现点击并显示/隐藏多功能列表

    这篇文章主要为大家详细介绍了Android悬浮窗按钮实现点击并显示/隐藏多功能列表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Android Dialog对话框用法实例详解

    Android Dialog对话框用法实例详解

    这篇文章主要介绍了Android Dialog对话框用法,结合实例形式分析了Android使用Dialog对话框过程中所涉及的创建、保存、回复等操作相关技巧与注意事项,需要的朋友可以参考下
    2016-07-07
  • 详解Android观察者模式的使用与优劣

    详解Android观察者模式的使用与优劣

    这篇文章主要介绍了Android观察者模式的相关资料,帮助大家更好的理解和学习Android的设计模式,感兴趣的朋友可以了解下
    2020-09-09

最新评论