文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android应用闪屏页延迟跳转的三种写法

2022-06-06 11:26

关注

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

准备工作

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


<?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:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@drawable/splash"
  tools:context=".SplashActivity">
</RelativeLayout>

然后再创建一个HomeActivity,作为闪屏页要跳转的页面。HomeActivity的布局简单地放一个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: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">
  <TextView
    android:textSize="24sp"
    android:text="HomeActivity"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
</RelativeLayout>

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

这个方法很简单,开启一个子线程,然后睡眠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(),2000);//定时器延时执行任务的方法
  }
  //方法三:使用Java计时器
  class MyTask extends TimerTask{
    @Override
    public void run() {
      Intent intent = new Intent(SplashActivity.this,HomeActivity.class);
      startActivity(intent);
    }
  }
}

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

您可能感兴趣的文章:Android中应用界面主题Theme使用方法和页面定时跳转应用Android如何跳转到应用商店的APP详情页面android 跳转到应用通知设置界面的示例android判断手机是否安装地图应用实现跳转到该地图应用Android 应用中跳转到应用市场评分示例Android应用自动跳转到应用市场详情页面的方法Android通过滑动实现Activity跳转(手势识别器应用)Android 8.0升级不跳转应用安装页面的解决方法Android实现外部唤起应用跳转指定页面的方法


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯