闪屏页也称之为欢迎页。在打开一个App时,我们第一眼看到的往往是一个闪屏页面,之所以叫闪屏页,是因为它出现之后会短暂地停留几秒钟再跳转到其他页面。闪屏页除了使用户体验更好外,还能给app留出初始化数据的时间。下面,是我总结的闪屏页的三种写法。

准备工作

打开Android Studio,新建一个projectMyStudy,新建一个SplashActivity并在清单文件中将其设置为启动Activity。在布局文件中将SplashActivity的背景设置为一张图片(可以是手机壁纸)。

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/splash"

tools:context=".SplashActivity">

然后再创建一个HomeActivity,作为闪屏页要跳转的页面。HomeActivity的布局简单地放一个TextView就可以了:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.lin.mr.mystudy.HomeActivity">

android:textSize="24sp"

android:text="HomeActivity"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

方法一:在子线程中延迟睡眠

这个方法很简单,开启一个子线程,然后睡眠2秒钟再执行跳转代码:

public class SplashActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_splash);

//方法一:开启一个子线程执行跳转任务

new Thread(){

@Override

public void run() {

super.run();

try {

Thread.sleep(2000);

Intent intent = new Intent(SplashActivity.this,HomeActivity.class);

startActivity(intent);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}.start();

}

}

方法二:使用Handler发送延迟消息

我们也可以使用Handler延迟发送一个空消息,这样Handler在2秒后收到消息后再去执行跳转代码。

public class SplashActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_splash);

//方法二:使用Handler发送延迟消息

new Handler(new Handler.Callback() {

@Override

public boolean handleMessage(Message msg) {

Intent intent = new Intent(SplashActivity.this,HomeActivity.class);

startActivity(intent);

return false;

}

}).sendEmptyMessageDelayed(0,2000);

}

方法三:使用Java计时器

Java提供了一个类:Timer,它能够起到一个计时器的作用。它的用法很简单,首先是创建一个外部类继承TimerTask,重写其中的run()方法,在里面编写跳转页面的代码。接着创建一个Timer的对象,让改对象去调用schedule()方法。schedule()需要传入两个参数,第一个参数是MyTask的对象,第二个参数则是延迟的时间。

public class SplashActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_splash);

//方法三:使用Java计时器

Timer timer = new Timer();

timer.schedule(new MyTask(),2000);//定时器延时执行任务的方法

}

//方法三:使用Java计时器

class MyTask extends TimerTask{

@Override

public void run() {

Intent intent = new Intent(SplashActivity.this,HomeActivity.class);

startActivity(intent);

}

}

}

完整代码

package com.lin.mr.mystudy;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import java.util.Timer;

import java.util.TimerTask;

public class SplashActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_splash);

//方法一:开启一个子线程执行跳转任务

// new Thread(){

// @Override

// public void run() {

// super.run();

// try {

// Thread.sleep(2000);

// Intent intent = new Intent(SplashActivity.this,HomeActivity.class);

// startActivity(intent);

// } catch (InterruptedException e) {

// e.printStackTrace();

// }

// }

// }.start();

//方法二:使用Handler发送延迟消息

// new Handler(new Handler.Callback() {

// @Override

// public boolean handleMessage(Message msg) {

// Intent intent = new Intent(SplashActivity.this,HomeActivity.class);

// startActivity(intent);

// return false;

// }

// }).sendEmptyMessageDelayed(0,2000);

//方法三:使用Java计时器

Timer timer = new Timer();

timer.schedule(new MyTask(),HomeActivity.class);

startActivity(intent);

}

}

}

以上所述是小编给大家介绍的Android应用闪屏页延迟跳转的三种写法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

android 闪屏页处理_Android应用闪屏页延迟跳转的三种写法相关推荐

  1. android 缩略图uri_课题_android系统通过图片绝对路径获取URI的三种方法

    最近做项目要通过图片的绝对路径找到图片的 URI ,然后删除图片,小小总结一下获取 URI 的方法,亲自试 验在 android 4.1.3 的系统上都是可用的. 1. 将所有的图片路径取出,遍历比较 ...

  2. android 强制打开gps定位_Android 6.0动态权限及跳转GPS设置界面的方法

    1.动态权限申请 模糊的位置信息android.permission.ACCESS_COARSE_LOCATION权限为例 在AndroidManifest文件中加入权限 然后java代码中动态申请 ...

  3. android 每隔2秒执行_Android中实现延迟执行操作的三种方法

    今天在敲代码的过程中,有个需求是延迟执行某方法. 整理收集了三种方法,自己用的是第三种. 第一种线程休眠:new Thread() { @Override public void run() { su ...

  4. 【Android Protobuf 序列化】Protobuf 性能测试 ( fastjson 序列化与反序列化 | gson 序列化与反序列化 | 三种序列化与反序列化性能对比 )

    文章目录 一.导入依赖库 二.构造 JavaBean 三.fastjson 序列化与反序列化 四.gson 序列化与反序列化 五.完整代码 1.主界面代码 2.JSON 测试代码 3.执行结果 六.参 ...

  5. javascript返回上一页的三种写法

    window.history.go(-1);  //返回上一页 window.history.back();  //返回上一页 window.location.go(-1); //刷新上一页 wind ...

  6. iPhone锁屏密码已停用!不花钱就能解决的三种解锁方法

    前几天听自家表嫂在吐槽,说是总会有客人到他们的维修店修手机.我一听,这是好事啊,为啥嫂子要吐槽呢?结果嫂子很无奈的说,有一半都是因为手机忘了锁屏密码,然后到店里问解决方法的.她表示无法理解,为什么记不 ...

  7. android 国内 更新方法,手机安卓系统怎么升级 安卓系统更新升级的三种方法介绍...

    最近有网友问小编"安卓系统怎么升级?",针对该问题,笔者也在网上查找了下相关资料,不过并没有找到什么有价值的相关介绍,多数都是介绍如何自动升级.或者下载升级版包等等方法,对于一些常 ...

  8. 荣耀android手机怎么截图,华为荣耀8怎么截图/截屏 荣耀8三种截屏方法教程

    昨天晚上,荣耀带来了又一款小屏旗舰新机----荣耀8,主打高颜值外观.该机关于7月19日正式全国上市.相信小伙伴们拿到真机之后,在使用过程当中难免会使用截图分享.那么荣耀8怎么截图呢?下面脚本之家小编 ...

  9. Android代码规范----按钮单击事件的四种写法

    [前言] 按钮少的时候用第三种的匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类. 按钮多的时候一般选择第四种写法. 一.第一种写法:在XML文件中声明onClick属性(很少用) 在XM ...

最新文章

  1. AD环境部署文件服务器2012,Windows_server_2012部署AD域及辅域环境.doc
  2. 《互联网理财一册通》一一第12章 移动互联网“指尖上的理财”
  3. 大数据实训报告_教学大数据实训平台解决方案_德拓信息_上海市徐汇区
  4. 编程笔试(解析及代码实现):字符串反转(字符串逆序输出)代码实现十多种方法对比(解析思路及其耗费时间)详细攻略
  5. 全球及中国特殊教育行业十四五趋势展望与发展战略建议报告2022版
  6. DNS实现域名负载均衡
  7. Dubbo使用启动时检查 check=“true“
  8. C memset 踩坑
  9. spark内核揭秘-02-spark集群概览
  10. 算法入门篇九 暴力递归
  11. Canvas Clock
  12. Java继承、封装、多态
  13. grDevices | 如何在图形中使用数学表达式作为标注文本
  14. 使用计算机进行电路分析,计算机辅助电路分析,computer aided analysis of circuits,音标,读音,翻译,英文例句,英语词典...
  15. 牛客练习赛22C Bitset
  16. PyQt 5信号与槽的几种高级玩法
  17. 帧传送、关联与身份验证状态
  18. Cocos2d—X游戏开发之VS2010 控制台输出中文,模拟器中文乱码问题解决
  19. 2022年,教你跳过验证快速创建Google账户!
  20. docker-the input device is not a TTY. If you are using mintty, try prefixing the command with ‘winp

热门文章

  1. xps15u盘装linux,Dell XPS 15 9560 安装 Ubuntu 18.04
  2. linux查看tomcat启动内存溢出,Linux下 Tomcat内存溢出
  3. linux如何创建共享内存,linux实现共享内存同步的四种方法
  4. c语言如何存储已编译内容,二级C语言教程章节测试13.编译预处理和动态存储分配...
  5. java重载能否发生多次,java - 在Java中重载和多次调度 - SO中文参考 - www.soinside.com...
  6. nginx访问本地目录一直不好使_Nginx跳转本地目录容易犯的错误
  7. Java 并发编程之 Atomic 类
  8. SpringBoot项目集成Mybatis Plus(五)条件构造器
  9. 解决python报错写入文件 io.UnsupportedOperation: not writable
  10. Python使用pyechart绘制3d散点图