Android应用闪屏页延迟跳转的三种写法
程序员文章站
2023-12-15 14:17:58
闪屏页也称之为欢迎页。在打开一个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应用闪屏页延迟跳转的三种写法,希望对大家有所帮助