? ? ? ? ? ? ? ? ? ? ? ? ? ? ? android啟動頁優化
? ? ? ?啟動頁也稱之為閃屏頁,就是在android應用第一次啟動時展現的頁面,但它并不是引導頁(一般是應用首次安裝或者更新的時候出現的頁面)。
啟動頁黑白閃爍:
? ? ? ? 在剛啟動應用時,往往會出現黑白閃屏現象,這是由于Them初始化默認顏色就是黑/白色,我們可以先給主題設置與啟動頁背景色相同的背景色,而啟動頁采用純背景+logo形式,而且logo大小不宜超過1M(防止oom),可先到tinypng網站對.png或.jpg格式圖片壓縮處理,這樣在項目啟動時就不會有黑/白閃屏了;
或直接修改啟動頁(welcome頁)的theme中屬性:
<item name="android:windowBackground"> @drawable/ic_window_background</item>
延遲啟動之按back后自動啟動:
? ? ? ?另外啟動頁后進入首頁的延遲,不管采用handler還是countDownTimer等,都需要在回退鍵方法onBackPressed()中取消掉延遲跳轉操作,這樣當用戶剛啟動app后直接按back鍵,而導致該app過會兒自動啟動問題;
其實這個界面的實現很簡單,代碼量也很少,主界面代碼:
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回調:
? ? ? ?當然,這不是唯一的處理方案,類似,愛奇藝,網易新聞這種就稍微流氓一些,當用戶誤點以后,是不允許用戶返回的,是直接禁用了back鍵,只能通過殺死進程的方式退出了。
延遲啟動之按Home鍵后自動啟動:
方法與上邊的相同只要這樣:
@Override
protected void ?onStop() {
? ? ?super.onStop();
? ? ?mhandler.removeCallbacks(myRunnable);
}