Android中使用Handler及Countdowntimer实现包含倒计时的闪屏页面

上一篇博文《Android中Handler使用浅析》通过实现倒计时闪屏页面的制作引出了Handler的使用方法以及实现原理,博文末尾也提到了实现过程中的Bug,有兴趣的朋友可以点击链接回去看看。今天通过使用Handler以及CountDownTimer来实现完整版的倒计时闪屏(不会出现在退出闪屏页后,依然会跳转页面的现象)。

1. 实现效果如下:

1.1  正常进入跳转的效果以及log显示

1.2  倒计时未结束时退出以及log显示

对比上篇博文的实现,退出后计时停止且不会再跳到新的界面

2. 实现方法

2.1 去除actionBar

闪屏页面一般都为全屏显示,这里我们首先需要去除actionBar,在res/values/styles.xml中设置:

这里也建议大家在后期开发中尽量不要用死板的actionBar,可以根据项目需求使用ToolBar或者自定义TitleBar组件来替代actionBar,这样的话界面设计会更加灵活。

2.2 layout布局

这里仅仅设置布局背景图片,以及在右上角添加TextView用于显示倒计时,做的有点糙,见谅,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_splash"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="@mipmap/background_login"
 tools:context="com.mly.panhouye.handlerdemo.SplashActivity">
 <TextView
 android:gravity="right"
 android:id="@+id/tv_time"
 android:textColor="@color/colorAccent"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:text="SS"
 android:textSize="30sp"/>
</RelativeLayout>

2.3 java实现代码

2.1中只是去除了app的ActionBar,要做的全屏显示,仍需要在activity中使用代码设置。

package com.mly.panhouye.handlerdemo;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
public class SplashActivity extends AppCompatActivity {
 private MyHandler myHandler = new MyHandler();
 private TextView tv_time;
 private MyCountDownTimer mc;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 //设置Activity为全屏
 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
 WindowManager.LayoutParams.FLAG_FULLSCREEN);
 //去标题状态栏
 requestWindowFeature(Window.FEATURE_NO_TITLE);
 setContentView(R.layout.activity_splash);
 tv_time = (TextView) findViewById(R.id.tv_time);
 mc = new MyCountDownTimer(5000, 1000);
 mc.start();
 /**
 * 使用handler的postDelayed延迟5秒执行页面跳转
 * (与CountDownTimer的millisInFuture一致)
 */
 myHandler.postDelayed(new Runnable() {
 @Override
 public void run() {
 startMainActivity();
 }
 },5000);
 }
 //将Handler声明为静态内部类
 private static class MyHandler extends Handler {
 @Override
 public void handleMessage(Message msg) {
 super.handleMessage(msg);
 }
 }
 //页面跳转的方法
 private void startMainActivity(){
 Intent intent = new Intent(this,Main3Activity.class);
 startActivity(intent);
 finish();//完成跳转后销毁闪屏页(从栈内移除)
 }
 class MyCountDownTimer extends CountDownTimer {
 /**
 * @param millisInFuture
 * 表示以毫秒为单位 倒计时的总数
 * 例如 millisInFuture=1000 表示1秒
 * @param countDownInterval
 * 表示 间隔 多少微秒 调用一次 onTick 方法
 * 例如: countDownInterval =1000 ; 表示每1000毫秒调用一次onTick()
 */
 public MyCountDownTimer(long millisInFuture, long countDownInterval) {
 super(millisInFuture, countDownInterval);
 }
 public void onFinish() {
 tv_time.setText("正在跳转");
 }
 public void onTick(long millisUntilFinished) {
 tv_time.setText("倒计时(" + millisUntilFinished / 1000 + ")");
 Log.i("tag","倒计时"+millisUntilFinished / 1000);
 }
 }
 @Override
 protected void onDestroy() {
 super.onDestroy();
 //闪屏页销毁时将消息对象从消息队列移除并结束倒计时
 myHandler.removeCallbacksAndMessages(null);
 mc.cancel();
 Log.i("tag","destory");
 }
}

以上所述是小编给大家介绍的Android中使用Handler及Countdowntimer实现包含倒计时的闪屏页面,希望对大家有所帮助!

(0)

相关推荐

  • Android基于CountDownTimer实现倒计时功能

    本文实例讲述了Android编程基于CountDownTimer实现倒计时功能的方法.分享给大家供大家参考,具体如下: 在逛论坛的时候,看到一个网友提问,说到了CountDownTimer这个类,从名字上面大家就可以看出来,记录下载时间.将后台线程的创建和Handler队列封装成一个方便的类调用. 查看了一下官方文档,这个类及其简单,只有四个方法,上面都涉及到了onTick,onFinsh.cancel和start.其中前面两个是抽象方法,所以要重写一下. 下面是官方给的一个小例子: new C

  • Android使用CountDownTimer实现倒计时效果

    在开发中会经常用到倒计时这个功能,包括给手机发送验证码等等,之前我的做法都是使用Handler + Timer + TimerTask来实现,现在发现了这个类,果断抛弃之前的做法,相信还是有很多人和我一样一开始不知道Android已经帮我们封装好了一个叫CountDownTimer的类. 从字面上就可以看出来它叫倒数计时器又称定时器或计时器,采用Handler的方式实现,将后台线程的创建和Handler队列封装而成. 看了一下源码,发现这个类的调用还蛮简单,只有四个方法: (1)public a

  • Android CountDownTimer实现倒计时器

    使用介绍 开发中经常会遇到一些和倒计时有关的场景,比如发送验证码的按钮,会在点击发送后,显示倒计时间,倒计时结束后才能够刷新按钮,再次允许点击.为了不阻塞软件的运行,又要实时刷新界面,我们通常会用到 Handler 或者 AsyncTask 等技术,自己写逻辑实现.其实 Android 中已经封装好了一套 CountDownTimer 来实现这个功能需求. CountDownTimer(long millisInFuture, long countDownInterval) CountDownT

  • Android中CountDownTimer 实现倒计时功能

    CountDownTimer CountDownTimer 是android 自带的一个倒计时类,使用这个类可以很简单的实现 倒计时功能 CountDownTimer 的实现方式 new CountDownTimer(6000,1000) {//第一个参数表示的是倒计时的总时间,第二参数表示的是倒计时的间隔时间. @Override public void onTick(long millisUntilFinished) {//倒计时的过程 textView.setText(millisUnti

  • Android利用CountDownTimer实现点击获取验证码倒计时效果

    本文实例为大家分享了Android点击获取验证码倒计时的具体代码,供大家参考,具体内容如下 package com.loaderman.countdowntimerdemo; import android.os.Bundle; import android.os.CountDownTimer; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.TextV

  • Android利用CountDownTimer实现倒计时功能 Android实现停留5s跳转到登录页面

    利用CountDownTimer实现倒计时,停留5s跳转到登录页面功能,具体如下 举个栗子,引导页面最后一个界面要停留5s跳转到登录页面.代码如下: //假设 这是引导页面最后一个界面 public class MainActivity extends Activity { private TextView count_time; private MyCountDownTimer myCountDownTimer; @Override protected void onCreate(Bundle

  • Android利用CountDownTimer实现验证码倒计时效果实例

    前言 等待总是让人感到焦急和厌烦的,特别是看不到进展的等待.所以为了不让用户痴痴地等,我们在进行某些耗时操作时,一般都要设计一个进度条或者倒计时器,让进度可视化,告诉用户"等待之后更精彩".在使用短信验证码注册或者登录App就可以看到这样的设计:点击"发送验证码"的按钮之后,按钮上就会出现倒计时(一般为60秒),倒计时结束之后,按钮的文字就会变成"重新发送". 在Android中要实现这样的效果可以使用Handler发送消息,但其实还有一个已经封

  • Android 列表倒计时的实现的示例代码(CountDownTimer)

    实习一段时间了,一直想写点技术总结,但一直没找到合适的主题.刚好,最近版本中我负责的模块遇到了个线程相关问题(之前一直画界面,做点基础功能,有点乏味),列表项倒计时的实现. 于是乎,我的第一篇android技术文章就诞生了. [醒目]该demo用Kotlin语言实现. 背景介绍 需要在ListView的item里实现倒计时,初看还挺简单的,但是真正做的时候也遇到了不少坑. 网上有不少类似文章,有用对TextView扩展实现的,也有用自带的CountDownTimer实现的,本文就是用CountD

  • Android中CountDownTimer倒计时器用法实例

    本文实例讲述了Android中CountDownTimer倒计时器用法.分享给大家供大家参考,具体如下: 在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了一个类,往往都自己写.现在发现了这个类,大家共享一下: 在一个TextView不断显示剩下的时间,代码如下: private TextView vertifyView; private CountDownTimer timer = new CountDownTimer(10000, 1000) { @Ov

  • Android使用CountDownTimer实现倒数定时器效果

    实现倒计时的效果 例子:发送验证码按钮 效果图: /** * 倒计时 * * @author admin * */ public class MainActivity extends ActionBarActivity { private Button tvTime;// 显示时间 private MyCountDownTimer myCountDownTimer;// 倒计时对象 @Override protected void onCreate(Bundle savedInstanceSta

随机推荐