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查询结果复制到新表的方法(更新、插入)

