欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 應(yīng)用的歡迎界面實(shí)現(xiàn)代碼

 更新時(shí)間:2016年07月26日 17:03:16   投稿:lqh  
本文主要介紹Android 應(yīng)用歡迎界面的開(kāi)發(fā),這里提供實(shí)現(xiàn)方法和實(shí)現(xiàn)代碼以供大家參考,有需要的朋友可以參考下

本文詳細(xì)描述了如何實(shí)現(xiàn)如下圖中的微信啟動(dòng)界面. 該類(lèi)啟動(dòng)界面的特點(diǎn)是在整個(gè)Application的生命周期里, 它只會(huì)出現(xiàn)在第一次進(jìn)入應(yīng)用時(shí), 即便按回退鍵到桌面之后. 使用該類(lèi)啟動(dòng)界面的應(yīng)用還有: QQ, QQ音樂(lè), 網(wǎng)易云音樂(lè)和微博等等.

知識(shí)要點(diǎn):

AndroidManifest.xml 中 activity 的 android:noHistory 屬性, 即 Intent.FLAG_ACTIVITY_NO_HISTORY

隱式Intent

回退棧(BackStack) 

詳細(xì)內(nèi)容見(jiàn)官方文檔.

實(shí)現(xiàn)代碼:

定義

SplashActivity 為啟動(dòng)界面

MainActivity 為主界面

AndroidManifest.xml

<!-- 該文件為AndroidManifest.xml, 以下代碼為application下的activity聲明 -->

<!-- 啟動(dòng)界面 -->
<activity android:name=".SplashActivity"
  android:label="@string/app_name"
  android:noHistory="true">
 <intent-filter>
 <action android:name="android.intent.action.MAIN"/>
 <category android:name="android.intent.category.LAUNCHER"/>
 </intent-filter>
</activity>

<!-- 主界面 -->
<activity android:name=".MainActivity" android:label="@string/app_name">
</activity>

特別需要注意的是, 在上述Activity-XML定義中, 我們?cè)O(shè)置了SplashActivity為noHistory的屬性為true, 該設(shè)置是告訴系統(tǒng)只要離開(kāi)該activity, 則請(qǐng)把該activity從回退棧中清除. 另外, 直接在Intent中設(shè)置Intent.FLAG_ACTIVITY_NO_HISTORY標(biāo)識(shí)的效果同設(shè)置該屬性為true的.

SplashActivity.java

import ...

public abstract class SplashActivity extends Activity implements Runnable {
 final Handler mHandler = new Handler();

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_splash);

 mHandler.postDelayed(this, 2000);
 }

 @Override
 public void run() {
 Intent intent = new Intent(this, MainActivtiy.class);
 startActivity(intent);
 // 此處可以不需要調(diào)用finish()了, 因?yàn)橐呀?jīng)設(shè)置了noHistory屬性, 從而使得系統(tǒng)接管finish操作
 }
}

 MainActivity.java

import ...

public abstract class MainActivity extends Activity {
 ...

 @Override
 public void onBackPressed() {     
    // 方法 1: goto the default launcher. It's not recommended.
    // Intent i = new Intent(Intent.ACTION_MAIN);
    // i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    // i.addCategory(Intent.CATEGORY_HOME);
    // startActivity(i);

    // 方法 2: goto the default launcher. It's recommended.
    moveTaskToBack(true);
  }
}

上述代碼中, 提供了兩個(gè)方法, 第一個(gè)方法通過(guò)隱式Intent來(lái)切換到桌面應(yīng)用(即Launcher), 第二個(gè)方法則是將當(dāng)前activity所在的task切換到后臺(tái), 需要注意的是, moveTaskToBack(boolean nonRoot) 的 nonRoot 參數(shù), 如果nonRoot=false, 則要求當(dāng)前activity為棧頂activity, 否則, 調(diào)用將不起任何效果, 如果nonRoot=true, 則忽略nonRoot=false時(shí)的條件, 因此, 我們?cè)谶@里直接設(shè)置nonRoot=true

到這里, 我們可以一直按回退鍵, 直到切換到桌面, 這時(shí)SplashActivity已經(jīng)被系統(tǒng)清理了, MainActivity連同它所在的Task已經(jīng)切換到后臺(tái)了. 下次我們?cè)賳?dòng)應(yīng)用時(shí), 只要MainActivity沒(méi)有被系統(tǒng)回收, 那么我們?cè)倏吹降腗ainActivity還是退回到桌面前的那個(gè)MainActivity.

希望本篇文章能幫助開(kāi)發(fā)Android應(yīng)用的朋友。

相關(guān)文章

最新評(píng)論