市面上好多優秀的應用(舉例新浪微博、UC瀏覽器)都採用了歡迎頁面與使用嚮導的方式給用戶帶來了良好的用戶體驗。java
通常來講用戶第一次安裝應用或者安裝了新版本後第一次進入應用都會顯示成 歡迎頁面-使用嚮導-主界面 的方式瀏覽器
用戶沒有安裝新版本或者不是第一次進入的時候都會顯示成 歡迎頁面-主界面的方式
ide
想要實現這種不一樣的分支,咱們就要使用一種變量來存儲咱們是不是第一次進入應用,固然這種變量不多是存儲在應用裏,而是要存儲在應用包名底下的文件中post
那麼咱們就來看看實現這種變量存儲和修改的步驟吧ui
一、在應用的歡迎頁面Splash Activity裏定義一個變量isFirstIn(前一篇文章中講了Splash),初始值無所謂,應爲咱們立刻要從文件中讀取這個值this
二、定義SharedPreferences對象,並經過該對象獲取文件中isFirstIn鍵(key)對應的值(value),這裏默認爲true,由於第一次進入應用時咱們並無建立該文件和該變量idea
三、在Splash中須要跳轉的地方作一個if判斷,若是是isFirstIn是true說明咱們是第一次進入,那麼跳轉到GuideActivity1,若是是false說明咱們不是第一次進入,那麼跳轉到主頁面MainActivity.net
四、假如GuideActivity1是最後一個使用嚮導頁,咱們要在GuideActivity1結束以後默認跳轉到MainActivity裏,那麼咱們須要在跳轉以前改變一下isFirstIn值爲false,並存到文件裏,這樣下次進入應用時Splash能夠從文件裏獲取值爲false的isFirstIn值,這樣就能夠經過分支直接跳轉到MainActivity了xml
下面關鍵部分的代碼對象
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存儲變量的方法不只可使用與歡迎頁面與使用嚮導,能夠隨意在程序任何位置使用,用來存儲應用退出以後也要記錄的某些關鍵變量或值