React Native:如何禁用Android默认启动页(Splash Screen)
解决Android默认启动页先显示的问题
步骤1:修改Android主题配置
打开React Native项目下的android/app/src/main/res/values/styles.xml文件,调整App主题的相关属性,替换或覆盖系统默认的启动背景:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- 替换为你的自定义启动页drawable资源,保证和react-native-splash-screen的启动页视觉一致 --> <item name="android:windowBackground">@drawable/your_custom_splash</item> <!-- 禁用系统默认的启动预览窗口,避免先显示默认页 --> <item name="android:windowDisablePreview">true</item> <item name="android:windowContentOverlay">@null</item> </style>
注意:your_custom_splash是你提前放入android/app/src/main/res/drawable(或对应分辨率目录如hdpi、xhdpi)的启动页图片资源。
步骤2:配置Android端启动页初始化
在MainActivity.java或MainActivity.kt中,调整启动逻辑,先处理系统窗口再初始化自定义启动页:
Java版本
import android.os.Bundle; import org.devio.rn.splashscreen.SplashScreen; public class MainActivity extends ReactActivity { @Override protected void onCreate(Bundle savedInstanceState) { // 设置全屏(按需启用) getWindow().setFlags(android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN, android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN); // 初始化自定义启动页,第二个参数为true时隐藏状态栏,可按需调整 SplashScreen.show(this, true); super.onCreate(savedInstanceState); } }
Kotlin版本
import android.os.Bundle import org.devio.rn.splashscreen.SplashScreen class MainActivity : ReactActivity() { override fun onCreate(savedInstanceState: Bundle?) { window.setFlags(android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN, android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN) SplashScreen.show(this, true) super.onCreate(savedInstanceState) } }
步骤3:React Native端隐藏启动页
在App根组件中,确保React Native引擎加载完成后隐藏自定义启动页:
import SplashScreen from 'react-native-splash-screen'; import { useEffect } from 'react'; function App() { useEffect(() => { // 组件挂载后隐藏启动页,保证App内容加载完成后过渡 SplashScreen.hide(); }, []); return ( // 你的App内容组件 ); } export default App;
额外注意事项
- 不要直接删除
android:windowBackground,否则启动时会出现短暂黑屏/白屏,保持和自定义启动页视觉一致才能实现无缝过渡。 - 修改配置后执行
./gradlew clean清理Android缓存,避免旧配置残留。 - 如果启动页需要适配不同屏幕尺寸,建议使用.9.png格式的图片资源。
内容的提问来源于stack exchange,提问作者Hamza Ch
相关产品推荐
相关产品推荐

