天天看點

關于android啟動頁的一些優化建議

啟動頁也稱之為閃屏頁,就是在android應用第一次啟動時展現的頁面,值得一提的是大家不要了解為引導頁(一般是應用首次安裝或者更新的時候出現)

關于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這個網站先将圖檔壓縮一下

繼續閱讀