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

如何在React Native项目的Android(Java)端无第三方库实现启动页?

不借助第三方库在React Native Android(Java)端实现启动页

完全可以不用任何第三方库,直接通过Android原生代码实现React Native项目的启动页,核心就是利用Android的启动Activity配合布局完成,下面是具体步骤:

1. 创建启动页布局

在android/app/src/main/res/layout目录下新建activity_splash.xml,编写你需要的启动页布局(示例为带logo和应用名称的简洁布局):

<?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:background="#FFFFFF"
    android:gravity="center"
    android:orientation="vertical">

    <ImageView
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/ic_launcher_round" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="我的RN应用"
        android:textSize="20sp"
        android:textColor="#333333" />
</LinearLayout>

2. 创建启动页Activity

在android/app/src/main/java/com/你的项目包名目录下新建SplashActivity.java,实现启动页跳转逻辑:

package com.yourpackage; // 替换为你的项目实际包名

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import androidx.appcompat.app.AppCompatActivity;

public class SplashActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        // 延迟1.5秒跳转到RN主Activity,可根据需求调整时长
        new Handler().postDelayed(() -> {
            Intent intent = new Intent(SplashActivity.this, MainActivity.class);
            startActivity(intent);
            finish(); // 关闭启动页Activity,避免返回键回到启动页
        }, 1500);
    }
}

3. 修改AndroidManifest.xml配置

打开android/app/src/main/AndroidManifest.xml,调整Activity的启动配置:

  • 将原MainActivity的启动过滤器移到SplashActivity,设置其为应用入口
  • 给SplashActivity设置无标题栏主题,避免顶部出现默认ActionBar

关键配置片段:

<activity
    android:name=".SplashActivity"
    android:theme="@style/Theme.AppCompat.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity
    android:name=".MainActivity"
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
    android:label="@string/app_name"
    android:windowSoftInputMode="adjustResize">
</activity>

4. 优化启动体验(可选)

如果RN启动时出现短暂白屏,可给MainActivity设置与启动页一致的背景主题:
在res/values/styles.xml中新增主题:

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/splash_background</item>
</style>

将MainActivity的android:theme改为@style/SplashTheme,待RN加载完成后,可通过原生模块切换回原主题(或直接在MainActivity的onCreate方法中监听RN加载状态后切换)。

内容的提问来源于stack exchange,提问作者At-U

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:32:50