啟動頁也稱之為閃屏頁,就是在android應用第一次啟動時展現的頁面,值得一提的是大家不要了解為引導頁(一般是應用首次安裝或者更新的時候出現)
其實這個界面的實作很簡單,代碼量也很少
- 第一步,配置AndroidManifest檔案,将他作為應用入口
<activity
android:name=".activity.StartActivity"
android:screenOrientation="portrait"
android:theme="@style/StartTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
- 第二步,配置xml檔案,設定background或者放置一個ImageView設定scaleType都行,這裡我采用最簡單的方式
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="@mipmap/start_jianshu"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
- 第三步,設定代碼,隻需要做一個延遲跳轉到登入或者是主界面就行了
public class Start1Activity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(StartActivity.this,MainActivity.class));
}
}, 3000);
}
}
這樣寫啟動頁,是存在很大的問題的
- 問題場景:當使用者誤點了你的應用圖示,想趕緊撤回去,于是點選了back鍵,過了幾秒鐘我在其他的應用浏覽,突然跳轉到你的應用 這種使用者體驗相當不好吧
- 問題分析:雖然你的activity銷毀了,你的handler卻還存在,雖然你已退出啟動頁,延遲加載的代碼依然會執行
- 優化後代碼,當使用者點選back鍵,移除handler回調
public class StartActivity extends AppCompatActivity {
private Handler handler;
private MyThread thread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
ButterKnife.bind(this);
handler = new Handler();
thread = new MyThread();
handler.postDelayed(thread, 3000);
}
private class MyThread implements Runnable {
@Override
public void run() {
startActivity(new Intent(StartActivity.this, MainActivity.class));
finish();
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
handler.removeCallbacks(thread);//移除回調
}
}
當然,這不是唯一的處理方案,類似,愛奇藝,網易新聞這種就稍微流氓一些,當使用者誤點以後,是不允許使用者傳回的,是直接禁用了back鍵,隻能通過殺死程序的方式退出了。
針對啟動頁圖檔選擇的建議
當然,這個問題不是我們開發能決定的,圖一般都是設計給的,android加載大圖的時候容易oom,在啟動頁加載大圖,會導緻啟動短暫的黑屏,白屏,增加記憶體消耗,低端機上可能直接oom,使用純背景加logo的方式,會比直接用一張大圖好得多,即使真的需要用圖檔,也不要動不動幾百K或者達到1M以上的圖檔,可以使用較小一點分辨率,可以通過tinypng這個網站先将圖檔壓縮一下