У меня есть приложение для Android, которое отображает белый экран в течение 2 секунд при запуске. Мои другие приложения этого не делают, но это делает. Я также внедрил splashscreen с надеждой, что он исправит это. Должен ли я увеличить время сна заставки? Спасибо.
Как исправить белый экран в приложении Запуск?
Ответ 1
Просто укажите прозрачную тему на начальную активность в файле AndroidManifest.xml.
Подобно:
<activity
        android:name="first Activity Name"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" >
 <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
 </activity>
 и расширить этот экран с помощью класса Activity вместо AppCompatActivity.
лайк:
public class SplashScreenActivity extends Activity{
  ----YOUR CODE GOES HERE----
}
Ответ 2
Поместите это в пользовательский стиль, и он решает все проблемы. Использование хакерского полупрозрачного исправления сделает вашу панель задач и навигационную панель полупрозрачной и сделает всплывающее окно или основной экран похожим на спагетти.
 <item name="android:windowDisablePreview">true</item>
Ответ 3
Сделайте стиль в вашем стиле .xml следующим образом:
<style name="Theme.Transparent" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowIsTranslucent">true</item>
</style>
и использовать его с вашей деятельностью в AndroidManifest как:
<activity android:name=".ActivitySplash" android:theme="@style/Theme.Transparent">
Ответ 4
Как и вы, трубка.. изначально они показывают значок экрана вместо белого экрана. И через 2 секунды показывает домашний экран.
сначала создайте XML drawable в res/drawable.
<?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.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>
    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
    </style>
</resources>
В вашем новом SplashTheme установите атрибут фона окна в свой XML-формат. Сконфигурируйте это в качестве темы-заставки в вашем AndroidManifest.xml:
<activity
    android:name=".SplashActivity"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
Эта ссылка дает то, что вы хотите. пошаговая процедура. https://www.bignerdranch.com/blog/splash-screens-the-right-way/
ОБНОВИТЬ:
 Список layer-list может быть еще проще, как этот (который также принимает векторные рисунки для центрированного логотипа, в отличие от <bitmap>):
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Background color -->
    <item android:drawable="@color/gray"/>
    <!-- Logo at the center of the screen -->
    <item
        android:drawable="@mipmap/ic_launcher"
        android:gravity="center"/>
</layer-list>
Ответ 5
Вы должны прочитать эту замечательную статью Кирилла Моттье: Android-приложение, сделанное великолепно
Вам нужно настроить Theme в style.xml и не настраивать в своем onCreate как ActionBar.setIcon/setTitle/etc.
См. также документацию по Рекомендации по производительности от Google.
Используйте Trace View и Hierarchy Viewer, чтобы увидеть время для отображения ваших просмотров: Оптимизация производительности Android/Настройка производительности на Android
Используйте AsyncTask для отображения некоторых видов.
Ответ 6
Это приложение AppTheme в примере приложения:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowIsTranslucent">true</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
Как вы можете видеть, у меня есть цвета по умолчанию, а затем я добавил android:windowIsTranslucent и установил его в true.
Насколько я знаю как разработчик Android, это единственное, что вам нужно установить, чтобы скрыть белый экран в начале приложения.
Ответ 7
Оба свойства работают, используя любой из них.
    <style name="AppBaseThemeDark" parent="@style/Theme.AppCompat">
            <!--your other properties -->
            <!--<item name="android:windowDisablePreview">true</item>-->
            <item name="android:windowBackground">@null</item>
            <!--your other properties -->
    </style>
Ответ 8
Ответ user543 является идеальным
<activity
        android:name="first Activity Name"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" >
 <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
 </activity>
Но:
Действие активности LAUNCHER должно продолжаться Активность, а не AppCompatActivity по умолчанию!
Ответ 9
Белый фон исходит из Apptheme. Вы можете показать что-то полезное, как ваш логотип приложения, а не белый screen.it можно сделать с помощью пользовательской темы в вашем приложении. Тема просто добавляет
android:windowBackground=""
атрибут. Значением атрибута может быть изображение или многоуровневый список или любой цвет.
Ответ 10
у меня тоже была такая же проблема в одном из моих проектов. Я решил это, добавив некоторые параметры в теме, представленной на заставке.
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
Вы можете найти причину и решение в этом посте, написанном мной. Надеюсь, поможет.
Ответ 11
Это можно исправить, установив тему в манифесте как
<activity
        android:name=".MySplashActivityName"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" >
 <intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
и после этого, если вы получаете
 java.lang.IllegalStateException: вам нужно использовать тему Theme.AppCompat(или потомок) с этим действием. 
то вам может потребоваться расширить  Активность вместо  AppCompatActivity в вашей MySplashActivity.
Надеюсь, что это поможет!
Ответ 12
Ниже приведена ссылка, предлагающая дизайн экрана-заставки. Чтобы избежать белого/черного фона, нам нужно определить тему с фоном-заставкой и настроить эту тему на всплеск в файле манифеста.
https://android.jlelse.eu/right-way-to-create-splash-screen-on-android-e7f1709ba154
splash_background.xml внутри папки res/drawable
<?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@color/colorPrimary" />
 <item>
 <bitmap
 android:gravity="center"
 android:src="@mipmap/ic_launcher" />
 </item>
</layer-list>
Добавить ниже стили
<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    <!-- Splash Screen theme. -->
    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/splash_background</item>
    </style>
В манифесте установите тему, как показано ниже
<activity
            android:name=".SplashActivity"
            android:theme="@style/SplashTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
    </activity>
Ответ 13
вам следует отключить настройки студии Instant Run для Android.
Файл > Настройки > Сборка, выполнение, развертывание > Мгновенный запуск unCheck всех доступных там опций.
Примечание. Белый экран. Проблема из-за Instant Run предназначена только для сборки Debug, этот выпуск не будет отображаться в сборках релизов.
Ответ 14
Попробуйте следующий код:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowIsTranslucent">true</item>
</style>
Этот код работает для меня и будет работать на всех устройствах Android.
Ответ 15
Его решение очень просто!
Есть три основных причины этой проблемы
- Вы выполняете тяжелую/долгую/ сложную задачу в функции onCreateVeiw.
- Если вы используете тему. Тогда время ожидания потока может быть очень большим.
- Если Вы используете какую-либо Стороннюю библиотеку. Инициализация во время запуска приложения может привести к этой проблеме.
Решения:
Решение 1:
  Remove the Heavy Task from onCreateView() function and place it some where appropriate place.
Решение 2:
  Reduce the Thread Sleep time.
Решение 3:
  Remove the Third party library at app initialize at implement them with some good strategy.
В моем случае я использую Sugar ORM, который приводит к этой проблеме.
Поделитесь, чтобы улучшить.
Ответ 16
Белый фон вызван тем, что Android запускается, когда приложение загружается в память, и этого можно избежать, если вы просто добавите эти 2 строки кода в SplashTheme.
<item name="android:windowDisablePreview">true</item>
<item name="android:windowIsTranslucent">true</item>

