如何在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
相关产品推荐
相关产品推荐

