Splash-экран не работает в приложении-реактиве на Android - PullRequest
0 голосов
/ 08 октября 2019

У меня есть приложениеact-native, и мне нужно реализовать заставку на Android. Мой шаг заключался в том, чтобы: поместить png изображения в app / src / main / res / mibmap, создать background_splash.xml в app / src / main / res / drawable /, добавить SplashTheme в app / src / main / res / values ​​/ styles.xmlизмените AndroidManifest.xml, измените MainActivity.java, создайте класс SplashActivity.java в src / main / java /. Но мой заставка не появляется в приложении. Не могли бы вы объяснить мне, что я делаю не так?

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/black" />

    <item>
        <bitmap
            android:src="mipmap/splash_screen"
            android:gravity="center" />
    </item>
</layer-list>

styles.xml

<resources xmlns:tools="http://schemas.android.com/tools">

    <color name="primary_dark">#27409d</color>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->

        <!--<item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowTranslucentNavigation">true</item>
        <item name="android:statusBarColor" tools:targetApi="lollipop">@android:color/transparent</item>-->

<!--        fix https://trello.com/c/OuBMJCMI-->
<!--        https://github.com/facebook/react-native/issues/17530-->
        <item name="android:editTextBackground">@android:color/transparent</item>
    </style>

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


</resources>

colors.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>
    <color name="black">#000000</color>
</resources>

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="broker.mapp"
          android:fitsSystemWindows="false">

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

    <uses-sdk />

    <application
            android:name="broker.mapp.MainApplication"
            android:allowBackup="false"
            android:label="@string/app_name"
            android:icon="@mipmap/ic_launcher"
            android:theme="@style/AppTheme"
            android:networkSecurityConfig="@xml/network_security_config"
            android:largeHeap="true"
    >


        <activity
            android:name="broker.mapp.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>

        <activity
                android:name="broker.mapp.MainActivity"
                android:label="@string/app_name"
                android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
                android:windowSoftInputMode="adjustResize"
                android:screenOrientation="portrait"
                android:launchMode="singleTask"
                android:exported="true">
            <intent-filter android:label="filter_react_native">
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme="broker" android:host="*"/>
            </intent-filter>
        </activity>


        <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
        <meta-data  android:name="com.dieam.reactnativepushnotification.notification_channel_name"
                    android:value="Без категории"/>

                    android:value=" "/>

            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>

        <meta-data android:name="com.google.firebase.messaging.default_notification_icon"

    </application>

</manifest>

MainActivity.java

package broker.mapp;

import android.os.Bundle;


import com.facebook.react.ReactActivity;
import io.fabric.sdk.android.Fabric;
import com.crashlytics.android.core.CrashlyticsCore;
import com.crashlytics.android.Crashlytics;
import android.content.Intent;
import android.content.res.Configuration;
import org.devio.rn.splashscreen.SplashScreen;

public class MainActivity extends ReactActivity {

    /**
     * Returns the name of the main component registered from JavaScript.
     * This is used to schedule rendering of the component.
     */


    @Override
    protected String getMainComponentName() {
        return "BrokerMapp";
    }





    @Override
    protected void onCreate(Bundle savedInstanceState) {
        SplashScreen.show(this, true);
        super.onCreate(savedInstanceState);

        CrashlyticsCore core = new 
        CrashlyticsCore.Builder().disabled(BuildConfig.USE_FABRIC != 
        "TRUE").build();
        Fabric.with(this, new 
        Crashlytics.Builder().core(core).build());
    }


    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Intent intent = new Intent("onConfigurationChanged");
        intent.putExtra("newConfig", newConfig);
        this.sendBroadcast(intent);
    }
}

SplashActivity.java

package com.app;

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, rshb.broker.mapp.MainActivity.class);
        startActivity(intent);
        finish();
    }
}

1 Ответ

1 голос
/ 08 октября 2019

Попробуйте код ниже в методе onCreate

  new Handler().postDelayed(new Runnable() {
                      @Override

                  public void run() {

                         Intent intent = new Intent(SplashActivity.this,MainActivity.class);
                         startActivity(intent);
                         finish();
                  }
              }, 3000);
...