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();
 }
}

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

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

(0)

相关推荐

  • android支付宝客户端html5网页无法自动关闭问题的解决方法

    公司产品使用支付宝移动网页接口支付,当三方商户传入跳转地址,在支付宝页面支付成功后跳转到该地址,如果没传将会自动关闭页面. 测试的时候在ios客户端上面可以,但是在Android客户端上偶尔行偶尔不行. 以前代码: $(function(){ if('$[code]'=="00") { if('${merUrl}'!="") { window.location.href='${merUrl}'; }else{ AlipayJSBridge.call('closeWe

  • 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.

  • Android自定义EditText实现登录界面

    本文实例为大家分享了Android自定义EditText实现登录界面的具体代码,供大家参考,具体内容如下 先看效果图: 自定义edittext 控件,监听focus和textchange 状态 实现是否显示删除图片. public class ClearEditText extends EditText implements OnFocusChangeListener, TextWatcher { private Drawable right; private boolean hasfocus;

  • Android开发之完成登陆界面的数据保存回显操作实例

    本文实例讲述了Android开发之完成登陆界面的数据保存回显操作.分享给大家供大家参考,具体如下: LoginActivity.java: package com.example.login; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import android.view.Menu; import android.view

  • Android编程实现泡泡聊天界面实例详解(附源码)

    本文实例讲述了Android编程实现泡泡聊天界面的方法.分享给大家供大家参考,具体如下: 昨天写了个界面,实现了Android泡泡聊天界面.运行结果如下,点击发送按钮,屏幕就显示Text的内容. 我也是在网上的一份源码的基础上更改的,整个泡泡界面的实现要点: (1)主界面其实就是一个List View (2)文字显示界面其实就使用了android:background="@drawable/incoming"这个东西.背景图片的格式是xxx.9.png,专门用来缩放的,不然显示效果非常

  • Android高仿微信聊天界面代码分享

    微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先给大家展示下实现效果图: OK,下面我们来看一下整个小项目的主体结构: 下面是Activity的代码: package com.way.demo; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import jav

  • Android仿QQ空间动态界面分享功能

    先看看效果: 用极少的代码实现了 动态详情 及 二级评论 的 数据获取与处理 和 UI显示与交互,并且高解耦.高复用.高灵活. 动态列表界面MomentListFragment支持 下拉刷新与上拉加载 和 模糊搜索,反复快速滑动仍然非常流畅. 缓存机制使得数据可在启动界面后瞬间加载完成. 动态详情界面MomentActivity支持 (取消)点赞.(删除)评论.点击姓名跳到个人详情 等. 只有1张图片时图片放大显示,超过1张则按九宫格显示. 用到的CommentContainerView和Mom

  • Android实现QQ新用户注册界面遇到问题及解决方法

    在上篇文章给大家介绍了Android实现QQ登录界面遇到问题及解决方法,本篇文章继续给大家介绍有关android qq界面知识. 先给大家展示下效果图: 问题: 1.下拉列表(因为还没看到这里...) 2.标题栏显示问题 3.按钮的 Enable 设置 以下是代码: 布局 fragment_main(问题1) <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools

  • Android判断现在所处界面是否为home主桌面的方法

    本文实例讲述了Android判断现在所处界面是否为home主桌面的方法.分享给大家供大家参考.具体实现方法如下: /** * 获得属于桌面的应用的应用包名称 * @return 返回包含所有包名的字符串列表 */ private List<String> getHomes() { List<String> names = new ArrayList<String>(); PackageManager packageManager = this.getPackageMan

  • Android开发实例之登录界面的实现

    本文要演示的Android开发实例是如何完成一个Android中的miniTwitter登录界面,下面将分步骤讲解怎样实现图中的界面效果,让大家都能轻松的做出美观的登录界面.        miniTwitter登录界面效果图 先贴上最终要完成的效果图:   miniTwitter登录界面的布局分析 首先由界面图分析布局,基本可以分为三个部分,下面分别讲解每个部分. 第一部分是一个带渐变色背景的LinearLayout布局,关于背景渐变色就不再贴代码了,效果如下图所示: 第二部分,红色线区域内,

  • Android 模拟新闻APP显示界面滑动优化实例代码

    内容: 1.滑动优化(滑动时不加载图片,停止才加载) 2.第一次进入时手动加载 代码如下: 1.界面布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:

随机推荐