Как исправить белый экран в приложении Запуск?

У меня есть приложение для 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

enter image description here

Как и вы, трубка.. изначально они показывают значок экрана вместо белого экрана. И через 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

Его решение очень просто!

Есть три основных причины этой проблемы

  1. Вы выполняете тяжелую/долгую/ сложную задачу в функции onCreateVeiw.
  2. Если вы используете тему. Тогда время ожидания потока может быть очень большим.
  3. Если Вы используете какую-либо Стороннюю библиотеку. Инициализация во время запуска приложения может привести к этой проблеме.

Решения:

Решение 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>