解决安卓App启动页面会闪一下

在安卓中,我们的App都会独享一个Liunx虚拟机,我们启动一个app也类似与你的手机开启启动一样,App的运行环境需要有一个加载过程,这个加载过程页面,我们安卓开发人员就称它为App的启动页面。
一般的安卓启动页面都会有一个启动动画,设置一个公司目前正在推广的广告网页,这个广告网页一般由后台接口提供链接和显示时长。这样,我们就可以通过后台控制来展示不同的活动启动页面。
测试人员突然提了一个优化问题,当我们的程序退出到后台之后,再次启动的时候在启动页面会有一个闪动的一瞬间。经过查看众多的App,发现这个闪动是不正常现象,所以我们来分析一下这个闪动的原因。
首先,我们会在AndroidManifest文件里面配置:

<!--闪屏-->
        <activity
            android:name=".activity.SplashActivity"
            android:screenOrientation="portrait"
            android:theme="@style/LauncherTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

这里标识我们的App点击启动首先打开的页面,一般我们都取名为SplashActivity。

/**
 * 启动页面
 */
class SplashActivity : UmengSplashMessageActivity() {

    override fun onCustomPretreatment(): Boolean {
        val mInAppMessageManager = InAppMessageManager.getInstance(this)
        //设置应用内消息为Debug模式
        mInAppMessageManager.setInAppMsgDebugMode(false)
        //跳转Activity的完整包路径
        if (ObjectUtils.isEmpty(TokenManager.getInstance().token)) {
            mInAppMessageManager.setMainActivityPath(ConstantExtra.MAIN_WELCOME)
        } else {
            mInAppMessageManager.setMainActivityPath(ConstantExtra.MAIN_STUDENT)
        }
        return super.onCustomPretreatment()
    }
}

这里我们的启动页面是继承了友盟第三方的启动页面。这里就判断了用户的Token,然后进行跳转到不同的页面。
所以我们定位到我们是通过设置Activity的主题进行设置背景图片的:

 <!--启动页-->
    <style name="LauncherTheme" parent="android:Theme.NoTitleBar.Fullscreen">
        <item name="android:windowBackground">@drawable/ic_splash_bg</item>
        <item name="android:windowAnimationStyle">@style/ActivitySwitchAnimation</item>
    </style>
   <!-- 隐现进入进出动画 -->
    <style name="ActivitySwitchAnimation">
        <item name="android:windowEnterAnimation">@android:anim/fade_in</item>
        <item name="android:windowExitAnimation">@android:anim/fade_out</item>
    </style>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@interpolator/decelerate_quad"
        android:fromAlpha="0.0" android:toAlpha="1.0"
        android:duration="@android:integer/config_longAnimTime" />

<alpha xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@interpolator/accelerate_quad" 
    android:fromAlpha="1.0"
    android:toAlpha="0.0"
    android:duration="@android:integer/config_mediumAnimTime" 
/>

会闪一下是因为我们了一个慢慢显示的动画导致的,这个动画效果也不是很友好,从黑到白导致的,如果要解决这个闪动的问题,我们就只需要设置一个图片,不需要动画就行了。
去掉主题的启动动画:

   <item name="android:windowAnimationStyle">@style/ActivitySwitchAnimation</item>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值