寫啟動界面Splash的正確姿勢,解決啟動白屏(轉)


從我學習寫第一個android項目以來,我都是這樣寫着啟動界面:
  • 在里面做一些事,比如:第一次啟動時拷貝數據。
  • 然后讓啟動界面一定待夠一定時間,比如兩秒三秒的。

就在前兩天我打開app的時候,我感覺啟動界面的時間太長了,而且為什么會先白屏一下然后進入啟動界面。很多app都有啟動界面,也有很多app沒有啟動界面,但是我發現這些沒有啟動界面的app,當我點擊桌面那個icon的時候,也會先白屏一下,然后進入主頁。

然后我決定做兩件事:

  • 做完啟動界面的事就進入首頁,不故意睡了。
  • 消滅白屏(跟主題設置的關系也有可能是黑屏),在點擊桌面app icon的瞬間開啟啟動界面,因為我點了美團,發現它是秒開的。。

如何消滅白屏

  1. 刪除啟動界面的xml布局,刪除setContentView。
  2. 在res/drawable里寫一個這種玩意:
    <?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item><bitmapandroid:id="@+id/bitmap_splash"android:src="@mipmap/splash_bg"></bitmap></item><itemandroid:top="@dimen/splash_logo_marginTop"><bitmapandroid:gravity="top"android:src="@mipmap/splash_logo"></bitmap></item><itemandroid:bottom="80dp"><bitmapandroid:gravity="bottom"android:src="@mipmap/splash_word"></bitmap></item></layer-list>
    item有drawable屬性,但是不能接收mipmap參數,所以我又包了bitmap。
  3. 在style里配置主題,我這里AppBaseTheme的parent是Theme.AppCompat.Light.NoActionBar,然后還有其他的一些配置。
    <style name="Splash" parent="AppBaseTheme"> <item name="android:windowBackground">@drawable/splash</item> </style>
  4. 在manifest中splash的activity標簽中配置主題:
    ...
    android:theme="@style/Splash"...
  5. 啟動一下看看效果吧。

網上搜啟動消除白屏的方法,有設置啟動界面主題的背景為透明的,splash的xml布局還和以前一樣,這樣確實不白屏了,但是點擊桌面上的icon開始會等一會splash才會出現,體驗也不好。

參考

splash-screens-the-right-way






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM