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

如何在Android Studio中为React Native项目启动页添加可控进度条并跳转主界面

Android端实现方案

你使用的react-native-splash-screen库默认是直接隐藏启动页,要实现带进度动画跳转的逻辑,可以按照下面的步骤修改:

  • 找到Android项目中的SplashActivity文件,路径一般为android/app/src/main/java/你的应用包名/SplashActivity.java,替换代码如下:
import android.animation.ValueAnimator;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ProgressBar;
import androidx.appcompat.app.AppCompatActivity;
import org.devio.rn.splashscreen.SplashScreen;

public class SplashActivity extends AppCompatActivity {
    private ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 绑定你写的启动页布局文件
        setContentView(R.layout.launch_screen);
        // 拿到进度条实例
        progressBar = findViewById(R.id.progress);

        // 配置进度条动画,3秒内从初始的10涨到100,时长可自行调整
        ValueAnimator progressAnimator = ValueAnimator.ofInt(10, 100);
        progressAnimator.setDuration(3000);
        progressAnimator.addUpdateListener(animation -> {
            int currentProgress = (int) animation.getAnimatedValue();
            progressBar.setProgress(currentProgress, true);
        });
        progressAnimator.start();

        // 动画结束后关闭启动页,跳转到React Native主界面
        new Handler().postDelayed(() -> {
            SplashScreen.hide(SplashActivity.this);
            finish();
        }, 3000);
        // 注意此处的延迟时长要和上面动画的时长保持一致
    }
}
  • 关于你猜测的进度更新代码的修正:R.id.progress只是Android系统生成的资源编号,属于int类型,不能直接调用setProgress方法,必须先通过findViewById(R.id.progress)拿到进度条实例后才能操作。
  • 如果需要和应用实际加载进度绑定,不想用固定时长的假进度,可以在React Native侧所有初始化逻辑执行完成后,调用原生方法通知Android端将进度设为100,延迟500毫秒后关闭启动页即可。如果对原生开发不熟悉,直接使用上面的固定时长方案即可覆盖绝大多数场景,动画时长调整到和应用平均启动时长一致即可。
  • iOS端实现逻辑类似,找到启动页对应的ViewController,在内部添加UIProgressView的进度动画,启动完成后关闭启动页即可。

内容的提问来源于stack exchange,提问作者Mir Stephen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:54:03