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



У меня есть приложение для android, которое отображает белый экран в течение 2 секунд при запуске. Мои другие приложения не делают этого, но этот делает. Я также реализовал splashscreen с надеждой, что это исправит это. Должен ли я увеличить время сна экрана-заставки?
Спасибо.

1871   13  

13 ответов:

просто упомяните прозрачную тему для стартовой деятельности в 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----
}

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

<item name="android:windowDisablePreview">true</item>

сделать стиль в стиль.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">

enter image description here

как ты пробки.. первоначально они показывают значок экрана вместо белого экрана. И через 2 секунды показывает домашний экран.

сначала создайте 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/gray"/>

    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/ic_launcher"/>
    </item>

</layer-list>

Далее, вы установите это в качестве фона вашего всплеска активности в теме. Перейдите к вашим стилям.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 drawable. Настройте это как тему вашего всплеска активности в вашем 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/

обновление:

The layer-list может быть еще проще, как это (который также принимает векторные чертежи для центрированного логотипа, в отличие от <bitmap> tag):

<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>

вы должны прочитать этот Великий пост Сирила Мотье:Android запуск приложения сделал великолепный

вам нужно настроить ваш Theme в стиле.xml и избегайте настройки в вашем onCreate в верхней панели.setIcon / setTitle / etc.

Смотрите также документацию по Полезные Советы от Google.

использовать Trace View и Hierarchy Viewer чтобы увидеть время для отображения ваших взглядов: Оптимизация Производительности Android / Настройка Производительности На Android

использовать AsyncTask для отображения некоторых видов.

Это мой 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, это единственное, что вам нужно установить, чтобы скрыть белый экран при запуске приложения.

свойства работает использовать любой из них.

    <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>

на 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>

но:

ты пусковая активность должны extands активность, а не AppCompatActivity как это было по умолчанию!

белый фон исходит из Apptheme.Вы можете показать что-то полезное, как ваш логотип приложения вместо белого screen.it может быть сделано с помощью пользовательских theme.in ваша тема приложения просто добавить

android:windowBackground=""

Это можно исправить, установив тему в манифесте как

<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.ленг.IllegalStateException: вам нужно использовать тему.AppCompat тема (или потомок) с этой деятельностью.
тогда вам может понадобиться расширить активность вместо AppCompatActivity в вашей MySplashActivity.

надеюсь, что это помогает!

вы должны отключить мгновенный запуск настроек android studio.

настройки Файл>>Создать,выполнения, развертывания>мгновенный запуск отключить все опции указаны.

Примечание: белый экран проблема из-за Мгновенный Запуск только для отладочных сборок, эта проблема не будет отображаться в сборках выпуска.

Ниже приведена ссылка, которая предлагает, как создать заставку. Чтобы избежать белого / черного фона, нам нужно определить тему с фоном всплеска и установить эту тему для всплеска в файле манифеста.

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>

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

<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>

вы можете найти причину и разрешение этот блог написанное мной. Надеюсь, это поможет.

Comments

    Ничего не найдено.