2013-08-27 2 views
5

В соответствии с рекомендациями Google рекомендуется сначала открыть DrawerLayout только после того, как приложение установлено и открыто (чтобы показать пользователю функциональность).Как открыть NavigationDrawer только при первом запуске приложения?

Как бы вы это сделали?

Похоже, что это будет комбинация метода openDrawer() с некоторыми предпочтениями.

ответ

10

Я рекомендовал бы использовать в SharedPreferences для этого:

Основная идея заключается в том, что вы читали SharedPreferences и искать логическое значение, которое не существует там при первом запуске приложения. По умолчанию по умолчанию вы вернете «истину», если значение, которое вы искали , не найдено, что указывает на то, что на самом деле это первое начало приложения. Затем, после первого запуска приложения, вы сохраните значение «false» в своих SharedPreferences, а после следующего запуска значение «false» будет считано из SharedPreferences, что указывает на то, что это больше не первое начало приложения.

Вот пример того, как это может выглядеть следующим образом:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // your other code... 
    // setContentView(...) initialize drawer and stuff like that... 

    // use thread for performance 
    Thread t = new Thread(new Runnable() { 

     @Override 
     public void run() { 

      SharedPreferences sp = Context.getSharedPreferences("yoursharedprefs", 0); 
      boolean isFirstStart = sp.getBoolean("key", true); 
      // we will not get a value at first start, so true will be returned 

      // if it was the first app start 
      if(isFirstStart) { 
       mDrawerLayout.openDrawer(mDrawerList); 
       Editor e = sp.edit(); 
       // we save the value "false", indicating that it is no longer the first appstart 
       e.putBoolean("key", false); 
       e.commit(); 
      } 
     }   
    }); 

    t.start(); 
} 
Смежные вопросы