У мене є додаток для android, який відображає білий екран протягом 2 секунд при запуску. Інші мої додатки цього не роблять, але це так. Я також реалізував splashscreen з надією, що це виправить. Чи варто збільшити час сну на екрані заставки? Дякую.
У мене є додаток для android, який відображає білий екран протягом 2 секунд при запуску. Інші мої додатки цього не роблять, але це так. Я також реалізував splashscreen з надією, що це виправить. Чи варто збільшити час сну на екрані заставки? Дякую.
Відповіді:
Просто згадайте прозору тему для початкової діяльності у файлі 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----
}
final ActionBar actionBar = getActionBar();
не поверне нулю, коли Тема напівпрозора
Поставте це у власному стилі, і це вирішить усі проблеми. Використання виправного напівпрозорого виправлення зробить панель завдань та панель навігації напівпрозорою та зробить заставку або головний екран схожим на спагетті.
<item name="android:windowDisablePreview">true</item>
Як у вас трубка .. спочатку вони показують екран піктограм замість білого екрана. А через 2 секунди відображається головний екран.
спершу створіть XML, який можна малювати в Res / Dravable.
<?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>
mipmap/ic_launcher
layer-list
може бути таке: <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Background color --> <item android:drawable="@color/white"/> <!-- Logo at the center of the screen --> <item android:drawable="@mipmap/ic_launcher" android:gravity="center"/> </layer-list>
Створіть у своєму стилі style.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">
Ви повинні прочитати цей чудовий пост Кирила Моттьє: Запуск програми Android зробився чудовим
Вам потрібно налаштувати свій Theme
стиль у style.xml і уникати налаштування у вашому onCreate
файлі як ActionBar.setIcon / setTitle / тощо.
Див. Також Документацію щодо порад щодо ефективності від 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>
Але:
You'r LAUNCHER активність повинна extands активність , що не AppCompatActivity , як він прийшов за замовчуванням!
Білий фон надходить з Apptheme. Ви можете показати щось корисне, як логотип програми замість білого екрана. Це можна зробити за допомогою спеціальної теми.У програмі Тема просто додайте
android:windowBackground=""
атрибут. Значенням атрибута може бути зображення або багатошаровий список або будь-який колір.
<item name="android:windowBackground">@android:color/transparent</item>
Нижче наведено посилання, яке підказує, як створити екран Splash. Щоб уникнути білого / чорного тла, нам потрібно визначити тему з фоном сплеску та встановити цю тему, щоб вона сплеснула у файл маніфесту.
https://android.jlelse.eu/right-way-to-create-splash-screen-on-android-e7f1709ba154
splash_background.xml у папці res / dravable
<?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>
У Manifest задайте тему, як показано нижче
<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>
Ви можете знайти причину та дозвіл у цій публікації блогу, написаній мною. Сподіваюся, це допомагає.
Це можна виправити, встановивши тему у вашому маніфесті як
<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.
Сподіваюся, це допомагає!
вам слід вимкнути Налаштування Android Studio Studio.
Файл> Налаштування> Збірка, Виконання, Розгортання> Миттєвий запуск зніміть прапорець Перевірити всі параметри, показані там.
Примітка: Випуск білого екрана через миттєвого запуску призначений лише для налагодження налагодження, цей випуск не з’явиться у версії версій.
Спробуйте наступний код:
<!-- 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.
Його рішення дуже просте!
Існують три основні причини цієї проблеми
Рішення:
Рішення 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.
У моєму випадку я використовую цукор ORM, який призводить до цієї проблеми.
Поділіться, щоб покращити.
Це вирішило проблему:
Вставте код нижче:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
</style>
</resources>
І не забудьте внести зміни у файл AndroidManifest.xml . ( назва теми )
Будьте уважні до порядку декларування дій у цьому файлі.
I encountered a similar problem and to overcome it, I implemented the code below in styles, i.e res->values->styles->resource tag
<item name="android:windowDisablePreview">true</item>
Here is the whole code:
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowDisablePreview">true</item>
</style>
onCreate
роль. Спробуйте просто "встановитиContentView" у цій діяльності та перевірити, чи не затримано цю затримку.