Android使用主题实现Fade Splash Screen Theme启动页淡入效果失效求解
问题原因
- 动画引用错误:你自定义了时长2000ms的
fade_out.xml,但主题配置中引用的是系统自带的短时长淡出动画@android:anim/fade_out,没有用到你自定义的动画资源。 - 缺少配套淡入动画:仅配置了启动页的退出动画,没有配置主Activity的入场淡入动画,过渡效果会不连贯,甚至看起来像没生效。
- 仅靠主题配置动画覆盖不全,部分系统版本需要在跳转代码中主动触发过渡。
修复步骤
- 新增主页面淡入动画配置,在
res/anim目录下创建fade_in.xml:
<?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromAlpha="0.0" android:toAlpha="1.0" android:fillAfter="true" android:duration="2000" />
- 修改
themes.xml中的动画引用,将系统动画替换为自定义的本地动画:
<!-- Setting window animation --> <style name="SplashTheme.WindowTransition"> <item name="android:windowExitAnimation">@anim/fade_out</item> <item name="android:windowEnterAnimation">@anim/fade_in</item> </style>
- 在启动页跳转主Activity的代码中主动调用过渡方法:
Kotlin示例:
startActivity(Intent(this, MainActivity::class.java)) finish() // 主动触发过渡动画,第一个参数为新页面入场动画,第二个为当前页面退出动画 overridePendingTransition(R.anim.fade_in, R.anim.fade_out)
Java示例:
startActivity(new Intent(this, MainActivity.class)); finish(); overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
注意事项
如果修改后仍无效果,检查设备开发者选项中的「动画缩放」是否设置为1x,动画缩放关闭时所有过渡动画都会失效。
内容的提问来源于stack exchange,提问作者Suds
相关产品推荐
相关产品推荐

