欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-09 18:17:33
 闪屏页也称之为欢迎页。在打开一个app时,我们第一眼看到的往往是一个闪屏页面,之所以叫闪屏页,是因为它出现之后会短暂地停留几秒钟再跳转到其他页面。闪屏页除了使用...

 闪屏页也称之为欢迎页。在打开一个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应用闪屏页延迟跳转的三种写法,希望对大家有所帮助