2014-01-31 53 views
1

我正在爲android應用程序實現splashscreen。我只想在應用程序新啓動時顯示一次splashscreen。在完成一些工作之後,我想繼續使用該應用。如果用戶然後按下後退按鈕,我不希望它返回到閃屏,我只想要退出該應用程序。我怎樣才能以最好的方式實現這一點?我如何清除第一個活動的後臺。Android splashscreen backstack

回答

0

當你要在啓動畫面後的第二個活動,調用finish()

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
if (preferences.getBoolean("firstTime", true)) { 
    // Show splash screen 
    // Wait a few seconds. 
} else { 
    // Nothing to do here. Go straight to the second activity. 
} 
SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(
      getSupportActivity()).edit(); 
editor.putBoolean("firstTime", false); 
editor.commit(); 
startActivity(MainActivity.this, ...) 
finish(); 

當用戶按壓背部通過這種方式,並且不會有堆棧中的任何活動。

+0

但我只是想顯示啓動畫面一次。如果用戶關閉應用程序並返回,我希望他直接進行第二個活動。 – AlexanderNajafi

+0

使用共享偏好 –

0

使用共享preeferences在Android和存儲值第1次..從第二次檢查,如果存在價值不要顯示啓動畫面

編輯的喜好跟隨this

-1

對於您應該使用SharedPreferences,

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    if(!prefs.getBoolean("first_time", false)) 
    { 
     SharedPreferences.Editor editor = prefs.edit(); 
     editor.putBoolean("first_time", true); 
     editor.commit(); 
     Intent i = new Intent(splash.this, otherSplash.class); 
     this.startActivity(i); 
     this.finish(); 
    } 
    else 
       // Not firsttime Direct it as you wish 
    } 
+0

這是你的錯?爲什麼然後它是downvoted –

2

如果您想要在啓動應用時第一次顯示啓動畫面, 然後你可以使用上面的共享偏好解決方案。 但我想你想通過以下情況:

  1. 你開始的應用程序,你得到啓動畫面。
  2. 然後你瀏覽應用程序。
  3. 然後你來到你的應用程序的主屏幕。
  4. 然後你想退出,但閃屏來。

如果您有這個問題,那麼你需要完成閃屏 當你開始家庭活動,並在結束時,您需要註銷或結束應用主活動。 也嘗試在Android清單中的啓動畫面活動選項卡中的android:launchMode="singleTask"

0

嗨,試試這個代碼它會幫助你,但它會顯示飛濺,每當你打開應用程序。

public class spash_scr extends Activity { 

ImageView t; 
//LoginButton b; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.spash_scr); 
    // bm1=drawable.shineme; 

    t = (ImageView) findViewById(R.id.textView1); 
    t.setImageResource(R.drawable.shineme); 

    RotateAnimation r = new RotateAnimation(0, 360, 
      Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 
      0.5f); 
    // r.setStartOffset(1000); 
    r.setDuration(2000); 
    r.setFillAfter(true); 
    t.startAnimation(r); 

    new Handler().postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      Intent i = new Intent(spash_scr.this, MainActivity.class); 
      startActivity(i); 
      finish(); 

     } 
    }, 3000); 

} 
0

你是不是在具體行爲明確,所以這裏有一些選擇:

答:你希望它每次的任務(應用程序)顯示啓動活動重新啓動,這樣因爲電話重啓後,用戶手動關閉任務,或者Android出於內存原因放棄它。 (這通常用於品牌或許可徽標。)在這些情況下,從主要活動的onCreate()啓動splash,然後單擊Finish()啓動屏幕以允許用戶返回到主視圖。這種導航返回不會使飛濺活動回來,因爲它不在導航堆棧中了。 B:您希望在安裝後第一次啓動應用程序時顯示啓動畫面,但不會再次顯示。 (通常用於'歡迎'或'開始'幫助視圖。)使用此處的其他答案或Using Shared Preferences文檔中所述的SharedPreference設置。在它應該顯示飛濺的情況下,我仍然建議選項A以最簡單的方式在首次啓動後首次解散後不再顯示啓動畫面。

C:甚至更多,未知的複雜導航?瞭解Tasks and Back Stack,你可以讓它做任何你想做的事情。

0

打開新的活動後this.finish();你應該做

Intent intent = new Intent(this, HomeActivity.class); 
startActivity(intent); 
this.finish();