Android端无需依赖包创建Splash Screen(启动页)方法求助
Android端不依赖第三方包配置启动页的方法
步骤1:准备启动页图片资源
- 将适配不同分辨率的启动页图片(如
.png或.9.png)放入android/app/src/main/res下对应的drawable-xxx或mipmap-xxx文件夹,确保图片能适配不同屏幕尺寸。
步骤2:创建启动页布局文件
在android/app/src/main/res/layout目录下新建launch_screen.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@color/white"> <!-- 可根据需求设置背景色 --> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/launch_image" <!-- 替换为你的图片文件名 --> android:scaleType="centerCrop" /> <!-- 可选:centerInside、fitXY等缩放类型 --> </LinearLayout>
步骤3:配置启动主题
- 打开
android/app/src/main/res/values/styles.xml,添加启动页专属主题:
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowBackground">@layout/launch_screen</item> <item name="android:windowFullscreen">true</item> <!-- 可选:开启全屏显示 --> <item name="android:windowContentOverlay">@null</item> </style>
- 修改
AndroidManifest.xml中主Activity的主题配置,将默认主题替换为上述SplashTheme:
<activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/SplashTheme" <!-- 设置启动时使用的主题 --> android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
步骤4:切换回应用默认主题
打开android/app/src/main/java/com/你的项目包名/MainActivity.java(或Kotlin文件),在onCreate方法中先切换回应用默认主题,避免启动页布局残留:
Java版本:
@Override protected void onCreate(Bundle savedInstanceState) { setTheme(R.style.AppTheme); // 替换为你的应用默认主题名称 super.onCreate(savedInstanceState); }
Kotlin版本:
override fun onCreate(savedInstanceState: Bundle?) { setTheme(R.style.AppTheme) // 替换为你的应用默认主题名称 super.onCreate(savedInstanceState) }
步骤5:优化RN初始化过渡(可选)
为避免RN加载时出现白屏,可在RN入口组件(如App.js)中先显示与原生启动页一致的组件,待RN初始化完成后再切换到首页:
import React, { useState, useEffect } from 'react'; import { View, Image, StyleSheet } from 'react-native'; import HomeScreen from './HomeScreen'; // 替换为你的首页组件 export default function App() { const [showSplash, setShowSplash] = useState(true); useEffect(() => { // 模拟RN初始化完成时机,实际可根据业务逻辑调整(如数据加载完成、AppState切换) const timer = setTimeout(() => setShowSplash(false), 1000); return () => clearTimeout(timer); }, []); if (showSplash) { return ( <View style={styles.splashContainer}> <Image source={require('./assets/launch_image.png')} // 替换为你的RN端启动图路径 style={styles.splashImage} resizeMode="cover" /> </View> ); } return <HomeScreen />; } const styles = StyleSheet.create({ splashContainer: { flex: 1, backgroundColor: 'white', }, splashImage: { width: '100%', height: '100%', }, });
内容的提问来源于stack exchange,提问作者ctr1L
相关产品推荐
相关产品推荐

