美文网首页Android Tipsandroid 界面小技巧
写启动界面Splash的正确姿势,解决启动白屏

写启动界面Splash的正确姿势,解决启动白屏

作者: never615 | 来源:发表于2016-01-25 19:15 被阅读8932次

    从我学习写第一个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>
            <bitmap
                android:id="@+id/bitmap_splash"
                android:src="@mipmap/splash_bg">
            </bitmap>
        </item>
        <item
            android:top="@dimen/splash_logo_marginTop">
            <bitmap
                android:gravity="top"
                android:src="@mipmap/splash_logo">
            </bitmap>
        </item>
        <item
            android:bottom="80dp">
            <bitmap
                android:gravity="bottom"
                android:src="@mipmap/splash_word">
            </bitmap>
        </item>
    </layer-list>
    

    item有drawable属性,但是不能接收mipmap参数,所以我又包了bitmap。

    1. 在style里配置主题,我这里AppBaseTheme的parent是Theme.AppCompat.Light.NoActionBar,然后还有其他的一些配置。
    <style name="Splash" parent="AppBaseTheme">
        <item name="android:windowBackground">@drawable/splash</item>
    </style>
    
    1. 在manifest中splash的activity标签中配置主题:
    ...
    android:theme="@style/Splash"
    ...
    
    1. 启动一下看看效果吧。

    网上搜启动消除白屏的方法,有设置启动界面主题的背景为透明的,splash的xml布局还和以前一样,这样确实不白屏了,但是点击桌面上的icon开始会等一会splash才会出现,体验也不好。

    参考

    splash-screens-the-right-way

    相关文章

      网友评论

      • mimimomo:如果是一副图片作为背景。全面屏会被拉伸。非16:9
      • 蒙着面会很强:如果有引导页应该怎么处理呢,就是第一次进入有4张放在viewpager里面的图片,第一次进入应该显示这个,但是会有启动页闪过...
      • 林北:点个赞
      • Destiny_ZRJ:如何设置启动页面的时长呢??
      • 大前端圈:不错,解决了问题
      • 螃蟹钓鱼:我的app不知为什么要白屏7秒左右,设置了背景图,就变成了显示背景图7秒,还是不友好,楼主知道原因吗
        8622219787ca:@z彭 非常感谢 我一直以为是我第三方库太多导致的启动缓慢 原来坑在这里
        z彭:@螃蟹钓鱼 用的是studio吗,设置搜索instant run,去掉,或者搜索下instant run
        never615:@螃蟹钓鱼 耗时操作太多,
      • 螃蟹钓鱼:亲测可用,赞一个

      本文标题:写启动界面Splash的正确姿势,解决启动白屏

      本文链接:https://www.haomeiwen.com/subject/gpqdkttx.html