You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 12 Splash Screen退出动画致BottomNavigationView下方空白

解决Android 12启动页退出动画后BottomNavigationView下方空白问题

问题场景

在Android 12设备上,自定义Splash Screen退出动画结束后,页面底部的BottomNavigationView下方会出现一块额外空白区域,动画运行过程中无此问题,仅在动画结束后出现。

修复方案

问题根源在于自定义退出动画的实现未遵循SplashScreen API的正确过渡流程,导致视图布局出现异常偏移。以下是具体修复步骤:

1. 替换动画实现方式

放弃使用TranslateAnimation,改用ViewPropertyAnimator执行平移动画,这种方式能更好地与SplashScreen的视图生命周期兼容:

package prateek_gupta.physical_device_tester;

import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.splashscreen.SplashScreen;
import androidx.core.splashscreen.SplashScreenViewProvider;
import prateek_gupta.physical_device_tester.databinding.ActivityMain2Binding;

public class MainActivity extends AppCompatActivity {

    ActivityMain2Binding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
        splashScreen.setOnExitAnimationListener(new SplashScreen.OnExitAnimationListener() {
            @Override
            public void onSplashScreenExit(@NonNull SplashScreenViewProvider splashScreenViewProvider) {
                // 使用ViewPropertyAnimator实现左移动画
                splashScreenViewProvider.getView()
                        .animate()
                        .translationX(-splashScreenViewProvider.getView().getWidth())
                        .setDuration(1000)
                        .withEndAction(new Runnable() {
                            @Override
                            public void run() {
                                // 动画结束后安全移除启动页视图
                                splashScreenViewProvider.remove();
                            }
                        });
            }
        });
        super.onCreate(savedInstanceState);
        binding = ActivityMain2Binding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
    }
}

2. 额外验证项

  • 检查postSplashScreenTheme对应的主题(Theme.PhysicalDeviceTester),确保没有设置android:windowInsets、android:paddingBottom这类会影响底部布局的属性;
  • 确认布局文件中BottomNavigationView的约束app:layout_constraintBottom_toBottomOf="parent"已正确配置(当前代码中该约束是正常的)。

内容的提问来源于stack exchange,提问作者Prateek Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:10:31