为什么会有闪屏页
记得很久之前,那时候android手机才刚刚出来,我们学校工作室里手机游戏开发相关的还更多的是window phone,可能很多人没有见过,就是跟电脑一样有开始菜单那种。那时候工作室是跟韩国一家游戏公司合作成立的,有一款音乐播放软件需要移植到IOS设备上,说来也奇怪,当时觉得还特别正常的一件事,iPhone本身是有滑动解锁的,但是我们的App上居然也有一个启动页面需要解锁,现在来看这是多么傻的一个设计啊,不过那时候觉得滑动一下就解锁了,好炫酷。。。
个人觉得闪屏目前还存在有几个原因:
- 所有软件都这么做
- 可以有个页面介绍自己的软件
- 可以放广告,做活动推广
- 可以给用户一个错觉,其实后台已经开始加载数据了,闪屏过后数据直接呈现出来
就我待过的团队来看,可能因为量级不够吧目前做闪屏页的方式都没有涉及到推广活动放广告,不过像微博啊 新闻资讯类应用啊,做到一定量级之后都会有广告漏出,也算是一个盈利的入口。 还有更多的闪屏,就直接是一个闪屏,闪屏启动了也没有去后台加载数据,比较奇怪。网络慢的时候还有存在的必要,完全为了展示而展示。
自己琢磨的闪屏页预加载数据的方式
实现方式很多,这只是其中一种,我自己也实现过别的很多种方法
- 通常需要设置SpalshActivity 为启动页,现在我们设置MainActivity为启动页
<activity
android:name=".main.view.SplashActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar.Splash" />
<activity
android:name="com.liananse.main.view.MainActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar.Splash" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- 注意!注意!注意!MainActivity & SplashActivity 一定要设置成透明的window,这样当在MainActivity启动SplashActivity的时候才不会影响MainActivity本身的数据加载和呈现(涉及到activity的生命周期)MainActivity设置透明的原因是,启动时因为会先启动MainActivity 这是会先呈现出MainActivity的windowbackground 因此导致启动时先看到一点白色然后才显示SplashActivity 因此,设置透明便不会看到白色页面闪过。Style设置如下
<style name="AppTheme.NoActionBar.Splash">
<item name="android:windowIsTranslucent">@bool/windowIsTranslucent</item>
<item name="android:windowBackground">@color/transparent</item>
</style>
- MainActivity 按照如下实现: 背景记得设置回来,不然看到的还是透明背景(这部分可能不一样,因为我本身在布局文件里没有添加根视图 用的activity自带的frameLayout)
@Override
protected void onCreate(Bundle savedInstanceState) {
startActivity(new Intent(this, SplashActivity.class));
getWindow().getDecorView().setBackgroundResource(R.color.main_bg);
super.onCreate(savedInstanceState);
}
以上搞完,就不用管MainActivity里面如何加载数据啊什么的了。再SplashActivity里面控制显示多久就好了。