Как убрать белые вспышки в приложении для Android (React Native) - PullRequest
0 голосов
/ 20 марта 2019

Я долго искал ответ на свой вопрос и до сих пор не могу понять, как избавиться от белых вспышек при смене экранов. У меня есть приложение с черными темами, так что это довольно раздражает.

Я уже пытался обернуть свое приложение компонентом View и установить для backgroundColor значение dark, но это не помогло.

Я нашел несколько статей, в которых описаны некоторые возможные варианты, такие как изменить что-то в RCTRootView и т. Д., Но я не могу найти, где это изменить ...

Вот несколько ссылок, которые я прочитал:

https://github.com/facebook/react-native/issues/1402\

https://github.com/wix/react-native-navigation/issues/358

Также я нашел реагировать-родной-заставка и хочу попробовать это сегодня, но сначала я решил спросить вас, ребята, существуют ли другие способы?

EDIT

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowDisablePreview">true</item>
    <!-- Customize your theme here. -->
</style>

1 Ответ

0 голосов
/ 20 марта 2019

Дело в том, что белый экран отображается, пока react-native загружает Javascript. Таким образом, вы не можете исправить это с помощью экрана javascript, потому что он еще не загружен, и вы не можете легко исправить это с помощью собственного кода Android, потому что белый экран вызван реакцией собственного представления.

Если вы просто хотите изменить цвет фона, вы можете отредактировать (или создать) файл res/values/colors.xml, включив в него цвет background:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="background">#FF0000</color>
</resources>

Тогда вы можете установить android:windowBackground внутри вашего styles.xml:

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

        <item name="android:windowBackground">@color/background</item>
    </style>

</resources>

Если вы хотите иметь более сложный экран загрузки, вам действительно нужно использовать react-native-splash-screen с пользовательским макетом (в противном случае вам нужно повторить его поведение в пользовательском модуле)

...