先说一下为啥,启动会有黑屏:
(1)从生命周期来看,onResume 执行了,才会把界面呈现出来,这之前有:application的初始化,activity的onCreate onStart,啥的
(2)从绘制的周期来看,1. 绘制背景。 2. 绘制View本身的内容,别问我是怎么知道的,我也不知道。
我以前的解决办法是:
<style name="AppStartLoadTranslucent" parent="@style/BaseAppTheme"> <item name="android:windowIsTranslucent">true</item> </style>
然后把这个用在,第一个开启的activity上面。
好了问题解决,啪啪啪(别想歪了)。
好吧,我很悲剧的发现:动画木有了(当前activity跳转到下一个activity的)!
于是老哥想到了一个法子,style不让搞,
this.overridePendingTransition(R.anim.zoom_in, R.anim.zoom_out)这样总行了吧,结果是:席八。(自行补脑)
好吧,进入正题。
之前提到,绘制是从背景开始的,那么
<style name="AppStartLoadTranslucent" parent="AppTheme"> <item name="android:windowBackground">@drawable/first_bg</item> <item name="colorPrimary">@color/color_first_bg</item> <item name="colorPrimaryDark">@color/color_first_bg</item> <item name="colorAccent">@color/color_first_bg</item> </style>把这个style 用在了 第一个activity
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"/>
然后我第一个activity 啥都没设,当然你setContentView的时候可以直接new一个空的布局,用空的布局意思都知道吧,就是为了不挡住上面的style背景。
colorPrimary这个都知道吧,状态栏颜色(如果你继承AppCompatActivity并且style:Theme.AppCompat.)的话状态栏颜色就变了呢。
告辞。