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