2017-04-21 164 views
4

[編輯]似乎是白色的屏幕生成,因爲MainActivity是沉重的負載,我設法解決使用第一個本地啓動畫面,然後在本機被殺死後,一個JS根據下一個插件實現,我做了一些修改,同時匹配閃屏閃屏後完全 https://github.com/crazycodeboy/react-native-splash-screenSplash Screen react-native後的白色屏幕

白屏反應本地人。

enter image description here

splash_screen.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:drawable="@color/gray"/> 
    <item> 
     <bitmap 
      android:gravity="center" 
      android:src="@mipmap/ic_launcher"/> 
    </item> 
</layer-list> 

styles.xml

<resources> 
    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <!-- Customize your theme here. --> 
    </style> 
    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar"> 
     <item name="android:windowBackground">@drawable/splash_screen</item> 
    </style> 
</resources> 

AndroidManifiest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.appba" 
    android:versionCode="1" 
    android:versionName="1.0"> 

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

    <uses-sdk 
     android:minSdkVersion="16" 
     android:targetSdkVersion="22" /> 
    <application 
     android:name=".MainApplication" 
     android:allowBackup="true" 
     android:label="@string/app_name" 
     android:icon="@mipmap/ic_launcher" 
     android:theme="@style/AppTheme"> 
     <activity 
     android:name=".SplashActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" 
     android:theme="@style/SplashTheme"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     </activity> 
     <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 
     android:windowSoftInputMode="adjustResize"> 
     </activity> 
     <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> 
    </application> 

</manifest> 

SplashActivity.java

package com.appba; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.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(); 
    } 
} 

MainActivity.java

package com.appba; 

import com.facebook.react.ReactActivity; 

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 "appBa"; 
    } 
} 

任何想法如何避免黑屏?

我找不到對谷歌的解決方案

我飛濺的基礎上,以下方法。 https://www.bignerdranch.com/blog/splash-screens-the-right-way/

+0

從我的理解,上述方法工作是在這個時間差爲主營裝載活動,其中主題是啓動畫面,直到加載主題。它對我來說工作得非常好,一路平穩過渡。也許提供風格和主要代碼以及顯示您的應用中實際發生的情況的gif? –

+0

是的,編輯更多的信息,請你現在請check – Mars

回答

0

如果從數據庫中的活動數據顯示這是正常的凍結(白色屏幕)了一段時間,如果這是你想,你應該使用ProgressDialogProgressBarAsyncTask

+0

不是我的情況,請檢查我增加了更多信息 – Mars

+0

@Mars嘗試在你的MANIFAST .xml中添加這行代碼 ' ' 活動主要 '<活動 機器人裏面:NAME =」 MainActivity」 ........ ' –

+0

但那張SplashActivity對嗎?因爲這是入口點,然後從SplashActivity – Mars

0

我知道解決兩種方法有什麼這個問題。 1.在java上編寫代碼,在Splash屏幕上製作更大的延遲。 2.在activity.MainActivity中添加android:theme =「@ style/AppTheme」(在這種情況下,用戶沒有時間查看splash和MainActivity活動之間的區別)。

+0

調用MainActivity這不是一個解決方案,我發現的唯一方法是先顯示本機啓動屏幕,然後顯示基於相同背景的js – Mars

+0

我做了splash和js文件同樣的背景,但仍然可以看到之間的白色屏幕。本機飛濺之後,js飛濺之前,你是如何解決你的問題的? – djk

0

首先加載LauncherActivity爲MainActivity

MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Intent i = new Intent(this, Splash.class); 
    startActivity(i); 
} 

Splash.java

private static int SPLASH_TIME_OUT = 5000; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_splash); 
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      finish(); 
     } 
    }, SPLASH_TIME_OUT); 
}