1. 程式人生 > >android應用程式第一次啟動時顯示引導介面

android應用程式第一次啟動時顯示引導介面

市面上好多優秀的應用(舉例新浪微博、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儲存變數的方法不僅可以使用與歡迎頁面與使用嚮導,可以隨意在程式任何位置使用,用來儲存應用退出之後也要記錄的某些關鍵變數或值