市面上好多優秀的應用(舉例新浪微博、UC瀏覽器)都采用了歡迎頁面與使用向導的方式給用戶帶來了良好的用戶體驗。
一般來說用戶第一次安裝應用或者安裝了新版本后第一次進入應用都會顯示成 歡迎頁面-使用向導-主界面 的方式
用戶沒有安裝新版本或者不是第一次進入的時候都會顯示成 歡迎頁面-主界面的方式
想要實現這種不同的分支,我們就要使用一種變量來存儲我們是否是第一次進入應用,當然這種變量不可能是存儲在應用里,而是要存儲在應用包名底下的文件中
那么我們就來看看實現這種變量存儲和修改的步驟吧
1、在應用的歡迎頁面Splash Activity里定義一個變量isFirstIn(前一篇文章中講了Splash),初始值無所謂,應為我們馬上要從文件中讀取這個值
2、定義SharedPreferences對象,並通過該對象獲取文件中isFirstIn鍵(key)對應的值(value),這里默認為true,因為第一次進入應用時我們並沒有創建該文件和該變量
3、在Splash中需要跳轉的地方做一個if判斷,如果是isFirstIn是true說明我們是第一次進入,那么跳轉到GuideActivity1,如果是false說明我們不是第一次進入,那么跳轉到主頁面MainActivity
4、假如GuideActivity1是最后一個使用向導頁,我們要在GuideActivity1結束之后默認跳轉到MainActivity里,那么我們需要在跳轉之前改變一下isFirstIn值為false,並存到文件里,這樣下次進入應用時Splash可以從文件里獲取值為false的isFirstIn值,這樣就可以通過分支直接跳轉到MainActivity了
下面關鍵部分的代碼
Splash.Java
boolean isFirstIn = false;
//onCreate中
SharedPreferences preferences = getSharedPreferences("first_pref",
MODE_PRIVATE);
isFirstIn = preferences.getBoolean("isFirstIn", true);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (isFirstIn) {
// start guideactivity1
intent = new Intent(Splash.this, GuideActivity1.class);
} else {
// start TVDirectActivity
intent = new Intent(Splash.this, TVDirectActivity.class);
}
Splash.this.startActivity(intent);
Splash.this.finish();
}
}, SPLASH_DISPLAY_LENGHT);
GuideActivity1.java 在引導頁面結束前一定要修改SharedPreferences里邊的值,這樣第二次進入的話才會跳轉到主頁面,不進引導頁。
SharedPreferences preferences = getSharedPreferences(
"first_pref", MODE_PRIVATE);
Editor editor = preferences.edit();
editor.putBoolean("isFirstIn", false);
editor.commit();
最后可以在應用包名底下shared_prefs文件夾下找到我們在應用里定義的first_pref.xml文件,打開可以看到里面
這種使用SharedPreferences存儲變量的方法不僅可以使用與歡迎頁面與使用向導,可以隨意在程序任何位置使用,用來存儲應用退出之后也要記錄的某些關鍵變量或值