React Native Android 启动画面始终打开
React Native Android Splash Screen Always On
第一次设置 React Native 启动画面时遇到了一个我无法解决的小错误。
我关注了这篇文章并且我完全按照了它(现在 IOS 部分除外)https://medium.com/@appstud/add-a-splash-screen-to-a-react-native-app-810492e773f9
我已经在 google 等网站上搜索过类似的问题,但我没有找到任何与我的问题相似的人。
这是我的 addad/modified 文章中的文件:
已安装 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)。
非常感谢您抽出时间!
您将在 javascript 端使用 SplashScreen.hide()
。
当您准备好隐藏启动画面时,您需要在您的组件中 运行 SplashScreen.hide()
。
您还需要导入 SplashScreen
import SplashScreen from 'react-native-splash-screen';
第一次设置 React Native 启动画面时遇到了一个我无法解决的小错误。
我关注了这篇文章并且我完全按照了它(现在 IOS 部分除外)https://medium.com/@appstud/add-a-splash-screen-to-a-react-native-app-810492e773f9
我已经在 google 等网站上搜索过类似的问题,但我没有找到任何与我的问题相似的人。
这是我的 addad/modified 文章中的文件:
已安装 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)。
非常感谢您抽出时间!
您将在 javascript 端使用 SplashScreen.hide()
。
当您准备好隐藏启动画面时,您需要在您的组件中 运行 SplashScreen.hide()
。
您还需要导入 SplashScreen
import SplashScreen from 'react-native-splash-screen';