目录
一、Splash的作用二、Splash的三种实现1、SplashActivity2、MainActivity中控制view的显示3、设置Application或者MainActivity的主题
三、总结
一、Splash的作用
最近做flutter项目,由于app启动时需要初始化flutter引擎,这个过程比较耗时,会有较长时间的白屏(或黑屏,跟设置的application、activity的theme有关),用户体验不太好,于是需要加一个splash页面。 那什么时候需要用到splash呢?1、启动阶段有耗时的初始化操作,影响到了用户体验;2、需要展示公司logo、广告等信息。
二、Splash的三种实现
1、SplashActivity
将SplashActivity作为app启动的第一个activity,SplashActivity启动后延时一段时间跳转到MainActivity。网上可以搜到很多实现,这里就不展开了。
2、MainActivity中控制view的显示
将MainActivity作为app启动的第一个activity,MainActivity启动后先展示SplashView,延迟一段时间将SplashView隐藏并显示主页面。
3、设置Application或者MainActivity的主题
AndroidManifest.xml
android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:name="com.xxx.MyApplication" android:theme="@style/my.NoTitleBar.Theme"> android:screenOrientation="portrait" android:name="com.xxx.views.MainActivity" android:theme="@style/my.NoTitleBar.Theme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:windowSoftInputMode="adjustResize">
res/values/styles.xml
res/drawable/splash_bg.xml
android:gravity="bottom" android:src="@drawable/launch_splash" /> 三、总结 前两种实现,在app初始化耗时的情况下,依旧会闪现白屏。而设置Application或者MainActivity的主题可以避免闪现白屏,但是无法设置延迟时间,适用于“启动阶段有耗时的初始化操作,影响到了用户体验”。若是需要使公司logo、广告等信息展示固定时间,则可以将设置主题和SplashActivity(或MainActivity中控制view的显示)结合使用来实现。 【参考文档】 https://www.zhihu.com/question/29424875https://blog.csdn.net/qq_36455052/article/details/78429713