第一次设置 React Native 启动画面时,我遇到了一个无法解决的小错误。
我遵循了这篇文章,并且完全遵循了它(目前除了 IOS 部分)https://medium.com/@appstud/add-a-splash-screen-to-a-react-native-app-810492e773f9
我在谷歌等上搜索过类似的问题,但没有找到任何与我的问题类似的问题。
这是我从文章中添加/修改的文件:
已安装的 npm 包 npm install react-native-splash-screen --save
。
android/app/src/main/res/drawable/background_splash.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/splashscreen_bg"/>
<item
android:width="300dp"
android:height="300dp"
android:drawable="@mipmap/splash_icon"
android:gravity="center" />
</layer-list>
AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:allowBackup="false"
android:theme="@style/AppTheme">
<!-- Add this SplashActivity -->
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Remove the intent-filter of the MainActivity and add a param android:exported="true" -->
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize"
android:exported="true"/>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
android/app/src/main/java/[your_package_name]/SplashActivity.java:
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}
android/app/src/main/java/[your_package_name]/MainActivity.java:
import com.facebook.react.ReactActivity;
import org.devio.rn.splashscreen.SplashScreen;
import android.os.Bundle;
public class MainActivity extends ReactActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
SplashScreen.show(this);
super.onCreate(savedInstanceState);
}
@Override
protected String getMainComponentName() {
return "nameOfPackage";
}
}
我遗漏了所有的 android 样式文件(不认为它们是相关的等)。我在 Android 开发或 Java 方面也完全没有经验(虽然我可以阅读),这就是我问这个问题的原因。
如果我删除
@Override
protected void onCreate(Bundle savedInstanceState) {
SplashScreen.show(this);
super.onCreate(savedInstanceState);
}
在MainActivity中,当内容准备好显示时,启动画面就会消失,但是,启动画面的背景会停留一两秒钟。然后我被告知在上面添加此代码,以便我无缝地移动到内容,但这是初始屏幕卡住的地方,添加了上面的代码。我尝试在 onCreate 之后做 SplashScreen.hide(this)
,但没有任何帮助(同样,不知道 android 开发或 java)。
感谢您的时间!
答案 0 :(得分:2)
您将在 javascript 端使用 SplashScreen.hide()
。
当您准备好隐藏启动画面时,您需要在您的组件中运行 SplashScreen.hide()
。
您还需要导入 SplashScreen
import SplashScreen from 'react-native-splash-screen';