溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android應(yīng)用閃屏頁(yè)延遲跳轉(zhuǎn)的三種寫法

發(fā)布時(shí)間:2020-09-27 11:57:33 來(lái)源:腳本之家 閱讀:222 作者:Luyifei666 欄目:移動(dòng)開(kāi)發(fā)

 閃屏頁(yè)也稱之為歡迎頁(yè)。在打開(kāi)一個(gè)App時(shí),我們第一眼看到的往往是一個(gè)閃屏頁(yè)面,之所以叫閃屏頁(yè),是因?yàn)樗霈F(xiàn)之后會(huì)短暫地停留幾秒鐘再跳轉(zhuǎn)到其他頁(yè)面。閃屏頁(yè)除了使用戶體驗(yàn)更好外,還能給app留出初始化數(shù)據(jù)的時(shí)間。下面,是我總結(jié)的閃屏頁(yè)的三種寫法。

準(zhǔn)備工作

打開(kāi)Android Studio,新建一個(gè)projectMyStudy,新建一個(gè)SplashActivity并在清單文件中將其設(shè)置為啟動(dòng)Activity。在布局文件中將SplashActivity的背景設(shè)置為一張圖片(可以是手機(jī)壁紙)。

<?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>

然后再創(chuàng)建一個(gè)HomeActivity,作為閃屏頁(yè)要跳轉(zhuǎn)的頁(yè)面。HomeActivity的布局簡(jiǎn)單地放一個(gè)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>

方法一:在子線程中延遲睡眠

這個(gè)方法很簡(jiǎn)單,開(kāi)啟一個(gè)子線程,然后睡眠2秒鐘再執(zhí)行跳轉(zhuǎn)代碼:

public class SplashActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
    //方法一:開(kāi)啟一個(gè)子線程執(zhí)行跳轉(zhuǎn)任務(wù)
    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發(fā)送延遲消息

我們也可以使用Handler延遲發(fā)送一個(gè)空消息,這樣Handler在2秒后收到消息后再去執(zhí)行跳轉(zhuǎn)代碼。

public class SplashActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
    //方法二:使用Handler發(fā)送延遲消息
    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計(jì)時(shí)器

Java提供了一個(gè)類:Timer,它能夠起到一個(gè)計(jì)時(shí)器的作用。它的用法很簡(jiǎn)單,首先是創(chuàng)建一個(gè)外部類繼承TimerTask,重寫其中的run()方法,在里面編寫跳轉(zhuǎn)頁(yè)面的代碼。接著創(chuàng)建一個(gè)Timer的對(duì)象,讓改對(duì)象去調(diào)用schedule()方法。schedule()需要傳入兩個(gè)參數(shù),第一個(gè)參數(shù)是MyTask的對(duì)象,第二個(gè)參數(shù)則是延遲的時(shí)間。

public class SplashActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
    //方法三:使用Java計(jì)時(shí)器
    Timer timer = new Timer();
    timer.schedule(new MyTask(),2000);//定時(shí)器延時(shí)執(zhí)行任務(wù)的方法
  }
  //方法三:使用Java計(jì)時(shí)器
  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);
    //方法一:開(kāi)啟一個(gè)子線程執(zhí)行跳轉(zhuǎn)任務(wù)
//    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發(fā)送延遲消息
//    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計(jì)時(shí)器
    Timer timer = new Timer();
    timer.schedule(new MyTask(),2000);//定時(shí)器延時(shí)執(zhí)行任務(wù)的方法
  }
  //方法三:使用Java計(jì)時(shí)器
  class MyTask extends TimerTask{
    @Override
    public void run() {
      Intent intent = new Intent(SplashActivity.this,HomeActivity.class);
      startActivity(intent);
    }
  }
}

以上所述是小編給大家介紹的Android應(yīng)用閃屏頁(yè)延遲跳轉(zhuǎn)的三種寫法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI