閃屏頁設置

相信每一個app都須要一個閃屏頁 就是一個開始頁面  對於新手來講 可能就直接一個activity 弄個背景圖片 ,細心地同窗也許會發現 每次啓動 應用程序的時候 一開始顯示的不是那個設置的背景圖片  而是白色或黑色背景 可能時間很短 這是爲何呢 。再看看其餘市面上的應用都是一開始就是顯示背景圖片 而沒有白色背景  研究了好久 其實 設置一下主題就好了  給activity設置主題 屬性android

<style name="Appstyle" parent="AppTheme">
    //閃屏頁圖片
    <item name="android:windowBackground">@mipmap/splashscreen</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

進階app

應用App一般會設置一個固定的閃屏頁展現時間,例如2000ms,因此咱們能夠根據用戶手機的運行速度,對展現時間作出調整,可是總時間仍然爲 2000ms。ide

閃屏頁政展現總時間 = 組件初始化時間 + 剩餘展現時間。優化

也就是2000ms的總時間,組件初始化了800ms,那麼就再展現1200ms便可。spa

 Application 初始化後會調用 attachBaseContext() 方法,再調用 Application 的 onCreate(),再到入口 Activity的建立和執行 onCreate() 方法。因此咱們就能夠在 Application 中記錄啓動時間。.net

//記錄Application初始化時間
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        SPUtil.putLong("application_attach_time", System.currentTimeMillis());
//        Log.e("TAG", "attachBaseContext: "+System.currentTimeMillis() );
    }

有了啓動時間,咱們得知道入口的 Acitivty 顯示給用戶的時間(View繪製完畢),在博客( View的工做流程)中瞭解到,在onWindowFocusChanged()的回調時機中表示能夠獲取用戶的觸摸時間和View的流程繪製完畢,因此咱們能夠在這個方法裏記錄顯示時間。code

@Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);

        if (SPUtil.cha("application_attach_time")){
            long appAttachTime = SPUtil.getLong("application_attach_time");
            //從application到入口Acitity的時間
            diffTime = System.currentTimeMillis() - appAttachTime;
//            Log.e("TAG", "onWindowFocusChanged: "+diffTime );
        }
    }

因此咱們就能夠動態的設置應用閃屏的顯示時間,儘可能讓每一部手機展現的時間一致,這樣就不會讓手機配置較低的用戶感受漫長難熬的閃屏頁時間(例如初始化了2000ms,又要展現2000ms的閃屏頁時間.),優化用戶體驗。blog

相關文章
相關標籤/搜索