Android 啟動頁面延遲跳轉與第二次啟動分支跳轉
前言
這篇部落格是關於啟動APP時頁面都會延遲幾秒跳轉,如果第一次啟動就會歡迎頁延遲幾秒後跳到一個指導頁面,指導頁面用viewpager來實現,如果是第二次啟動與接下來的啟動都是直接從歡迎頁面直接跳到主頁面去。
程式碼
package com.zhanghaiping.happyacount;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import com.zhanghaiping.happyacount.com.zhanghaiping.happyacount.utils.SharedUtils;
/**
* Created by hangping on 2016/5/19.
*/
public class WelcomeStartActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
new Handler(new Handler.Callback() {
//處理接收到的訊息的方法
@Override
public boolean handleMessage(Message msg) {
//判斷是否是第一次進入,實現頁面分支跳轉
if (SharedUtils.getWelcomeBooleam(getBaseContext())){
startActivity(new Intent(getBaseContext(),MainActivity.class));
}else {
startActivity(new Intent(getBaseContext(),WelcomeGuideActivity.class));
SharedUtils.putWelcomeBooleam(getBaseContext(),true);//存取ture值,下次直接跳轉到main頁面
}
return false;
}
}).sendEmptyMessageDelayed(0,3000);
}
}
這裡延遲跳轉用的是Android的handler,也可以用JAVA的定時器Timer來實現延時跳轉,既然是Android就用Android裡面的知識來實現。
使用handler時首先要建立一個handler,如在Activity或Service中需要接受其他執行緒的訊息,則在需要接收訊息的Activity或Service中需要實現Handler.Callback介面。然後呼叫它的sendEmptyMessageDelayed方法,接受兩個引數,第一個引數傳入0,這個0的意思是what的值,你可以傳隨便數字,在handleMessage方法中,你可以用switch來區分不同的傳值來做不同的事,第二個引數的意思是延遲多久,單位是毫秒,3000就是延遲3秒,延遲3秒後開始執行handleMessage方法。
接下來就是第二次啟動頁面分支的跳轉得類SharedUtils類
程式碼
package com.zhanghaiping.happyacount.com.zhanghaiping.happyacount.utils;
import android.content.Context;
import android.content.SharedPreferences;
/**
* Created by hangping on 2016/5/28.
*/
//實現是否是第一次進入標記的讀寫和寫入
public class SharedUtils {
private static final String FILE_NAME = "happuAcount";
private static final String MODE_NAME ="welcome";
//獲取boolean型別值
public static boolean getWelcomeBooleam(Context context){
return context.getSharedPreferences(FILE_NAME,context.MODE_PRIVATE)
.getBoolean(MODE_NAME,false);//getBoolean的第二個引數為預設值,這裡先傳入false,然後在第二次啟動時用putboolean將值覆蓋為true
}
//寫入boolean型別的值
public static void putWelcomeBooleam(Context context,boolean isFirst){
SharedPreferences.Editor editor = context.getSharedPreferences(FILE_NAME,Context.MODE_APPEND)
.edit();
editor.putBoolean(MODE_NAME,isFirst);
editor.commit();
}
}
這裡用sharedPreference來記錄是否是首次啟動,定義了兩個靜態方法分別用來獲取和寫入Boolean值,第一個靜態方法返回的是false,如果是第一次啟動的話WelcomeStartActivity類裡面的判斷語句就會呼叫putWelcomeBooleam方法,並傳過來ture值然後記錄並且startActivity(new Intent(getBaseContext(),WelcomeGuideActivity.class));跳到指導頁面去,第二次啟動的時候WelcomeStartActivity類裡面的判斷語句就會呼叫getWelcomeBooleam方法,此時我們boolean值已經是true了,Intent(getBaseContext(),MainActivity.class));語句就會執行,跳到主頁面去,就實現了第一次啟動跳到指導頁面,第二次啟動跳轉到main頁面。
關於Android sharedpreference教程