Android 正确的启动页设置姿势

启动页是一个 APP 启动时用户第一眼看到的界面,通常我们是将产品的logo或者名称放在上面,以便加深用户的产品印象。一个好的产品体验从你点开 APP 图标就开始了,通常我们为了防止启动应用时出现卡顿,需要对启动页进行一些优化。

普通的 SplashActivity

通常情况下,我们只需要设置 SplashActivity 为启动页并将其全屏,之后在 SpalshActivity 中贴上背景图就行了。这也是大家经常使用的方法。

首先在 style.xml 文件中创建全屏的主题属性

    

    

然后在 AndroidManifest.xml 中使用


    
        
        
    

之后就可以在 SplashActivity 设置产品的logo图片以及其他要展现的说明。

启动时黑屏(或者白屏)了怎么办?

为什么会黑屏或者白屏呢?因为从用户点击 APP 图标进去到第一个 Activity,系统会进过一系列的 Framework 层操作,其中包括 Application 的初始化,如果在 Application 初始化过程中做了过多操作,就会导致应用已经启动了却迟迟没有界面显示出来。

一种优化方案是将黑屏或者白屏透明化,也就是说当你打开应用时你会在桌面上停留一会(恩,看起来就像系统卡住了一样),当应用准备好之后自然就会跳到第一个启动 Activity。

实现透明化也很简单,我们再新建一个主题样式

    

其中 android:windowIsTranslucent 为关键,将其设置为 true。

在代码里为先前的 SplashActivity 的 theme 设置为

android:theme="@style/AppTheme.Splash"

另一种方案是用一张图片替换原来的默认的黑色背景(或白色),将上面的 Splash 样式修改一下

 

注意,如果图片的尺寸没有适配机型的话图片会被拉伸。

这样子做的优点是可以完全用 windowBackground 来替换 SplashActivity,但缺点也很明显,这样做很死板,无法自定义启动页,比如说给其加一个动画效果什么的都不能实现。

总结

两种方案:

使用普通的 SplashActivity

作为启动页,你可以拥有一个自由的页面,可以在上面肆意妄为,但记住不要在 Application 创建时做太多工作,以免拖慢启动速度。

  • 尽量不将一些业务逻辑放于 Application 中;
  • 不以静态变量的方式在 Application 中保存应用数据;
  • 不要把文件、数据库的操作放在 Application 中。

使用 windowBackground 代替 SplashActivity

你可以完全不用操心启动页如何实现了,只要做好背景图片对不同分辨率机型的适配就行了。你可以在 Application 加上一些必需的初始化,再也不怕 Application 过长的初始化时间拖慢应用的启动时间了。

不同的需求选择不同的方案,当然也有人说我两种都用可以吗?当然可以!嘛,你开心就好。

你可能感兴趣的:(Android 正确的启动页设置姿势)