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

发布时间 - 2026-01-10 23:26:33    点击率:

上一篇博文《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实现包含倒计时的闪屏页面,希望对大家有所帮助!


# android  # handler实现倒计时  # countdownview  # 倒计时  # Android实现闪屏页效果  # Android Handler实现闪屏页倒计时代码  # Android 自定义闪屏页广告倒计时view效果  # Android应用闪屏页延迟跳转的三种写法  # Android 实现闪屏页和右上角的倒计时跳转实例代码  # Android App实现闪屏页广告图的全屏显示实例  # 跳转  # 全屏  # 博文  # 移除  # 出现在  # 要在  # 要做  # 给大家  # 有兴趣  # 自定义  # 上一篇  # 可以根据  # 会再  # 来实现  # 跳到  # 都为  # 所述  # 不要用  # 结束时 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何生成腾讯云建站专用兑换码?  Java解压缩zip - 解压缩多个文件或文件夹实例  个人摄影网站制作流程,摄影爱好者都去什么网站?  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  香港服务器建站指南:免备案优势与SEO优化技巧全解析  香港服务器网站卡顿?如何解决网络延迟与负载问题?  如何快速使用云服务器搭建个人网站?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何在Windows服务器上快速搭建网站?  简单实现Android验证码  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何快速搭建安全的FTP站点?  bing浏览器学术搜索入口_bing学术文献检索地址  什么是javascript作用域_全局和局部作用域有什么区别?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  jQuery validate插件功能与用法详解  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel怎么清理缓存_Laravel optimize clear命令详解  EditPlus中的正则表达式实战(6)  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  Bootstrap整体框架之JavaScript插件架构  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  如何正确下载安装西数主机建站助手?  Swift开发中switch语句值绑定模式  Laravel Session怎么存储_Laravel Session驱动配置详解  韩国服务器如何优化跨境访问实现高效连接?  如何快速搭建高效可靠的建站解决方案?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  详解阿里云nginx服务器多站点的配置  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  香港服务器租用费用高吗?如何避免常见误区?  googleplay官方入口在哪里_Google Play官方商店快速入口指南  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  如何为不同团队 ID 动态生成多个独立按钮  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  高性价比服务器租赁——企业级配置与24小时运维服务  js代码实现下拉菜单【推荐】  如何在阿里云域名上完成建站全流程?  如何在Tomcat中配置并部署网站项目?  油猴 教程,油猴搜脚本为什么会网页无法显示?  Linux系统命令中tree命令详解  JS中对数组元素进行增删改移的方法总结  MySQL查询结果复制到新表的方法(更新、插入)