Что в ответе на вопрос, отвечает за фикс белого экрана при холодной загрузке?

Ссылка скопирована
1 ответ

https://stackoverflow.com/questions/37437037/andro...

public class OnboardingWithCenterAnimationActivity extends AppCompatActivity { public static final int STARTUP_DELAY = 300; public static final int ANIM_ITEM_DURATION = 1000; public static final int ITEM_DELAY = 300;  private boolean animationStarted = false;  @Override protected void onCreate(@Nullable Bundle savedInstanceState) {     setTheme(R.style.AppTheme);     getWindow().getDecorView().setSystemUiVisibility(             View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_onboarding_center); }  @Override public void onWindowFocusChanged(boolean hasFocus) {      if (!hasFocus || animationStarted) {         return;     }      animate();      super.onWindowFocusChanged(hasFocus); }  private void animate() {     ImageView logoImageView = (ImageView) findViewById(R.id.img_logo);     ViewGroup container = (ViewGroup) findViewById(R.id.container);      ViewCompat.animate(logoImageView)         .translationY(-250)         .setStartDelay(STARTUP_DELAY)         .setDuration(ANIM_ITEM_DURATION).setInterpolator(             new DecelerateInterpolator(1.2f)).start();      for (int i = 0; i < container.getChildCount(); i++) {         View v = container.getChildAt(i);         ViewPropertyAnimatorCompat viewAnimator;          if (!(v instanceof Button)) {             viewAnimator = ViewCompat.animate(v)                     .translationY(50).alpha(1)                     .setStartDelay((ITEM_DELAY * i) + 500)                     .setDuration(1000);         } else {             viewAnimator = ViewCompat.animate(v)                     .scaleY(1).scaleX(1)                     .setStartDelay((ITEM_DELAY * i) + 500)                     .setDuration(500);         }          viewAnimator.setInterpolator(new DecelerateInterpolator()).start();     } } }

public class OnboardingWithCenterAnimationActivity extends AppCompatActivity { public static final int STARTUP_DELAY = 300; public static final int ANIM_ITEM_DURATION = 1000; public static final int ITEM_DELAY = 300; private boolean animationStarted = false; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { setTheme(R.style.AppTheme); getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); super.onCreate(savedInstanceState); setContentView(R.layout.activity_onboarding_center); } @Override public void onWindowFocusChanged(boolean hasFocus) { if (!hasFocus || animationStarted) { return; } animate(); super.onWindowFocusChanged(hasFocus); } private void animate() { ImageView logoImageView = (ImageView) findViewById(R.id.img_logo); ViewGroup container = (ViewGroup) findViewById(R.id.container); ViewCompat.animate(logoImageView) .translationY(-250) .setStartDelay(STARTUP_DELAY) .setDuration(ANIM_ITEM_DURATION).setInterpolator( new DecelerateInterpolator(1.2f)).start(); for (int i = 0; i < container.getChildCount(); i++) { View v = container.getChildAt(i); ViewPropertyAnimatorCompat viewAnimator; if (!(v instanceof Button)) { viewAnimator = ViewCompat.animate(v) .translationY(50).alpha(1) .setStartDelay((ITEM_DELAY * i) + 500) .setDuration(1000); } else { viewAnimator = ViewCompat.animate(v) .scaleY(1).scaleX(1) .setStartDelay((ITEM_DELAY * i) + 500) .setDuration(500); } viewAnimator.setInterpolator(new DecelerateInterpolator()).start(); } } }

Дополнительно:

Ответы:

<?xml version="1.0" encoding="utf-8"?> <resources> <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:windowBackground">@null</item> </style>  <style name="AppTheme.CenterAnimation">     <item name="android:windowBackground">@drawable/ll_face_logo</item> </style>

<?xml version="1.0" encoding="utf-8"?> <resources> <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:windowBackground">@null</item> </style> <style name="AppTheme.CenterAnimation"> <item name="android:windowBackground">@drawable/ll_face_logo</item> </style>

  • <item name="android:windowBackground">@null</item>

    Это? - оно же ничем не отличается от костылей: (сделать прозрачным, отключить - говорят скорость падает, пока фон залил просто)

    У него там приложение сразу грузится начинает, если тупа выключить фон, ничего не изменится, повисит рабочий стол 200мс.

  • historydev, ты спросил где - я ответил, если ты считаешь что автор кода сделал его не оптимально - то что мешает этот вопрос задать напрямую автору по ссылке, а не мне?
  • AlexVWill, То есть остальной java код это просто анимация?

https://developer.android.com/develop/ui/views/lau...
Ситация со сплеш скринами за 7 лет поменялась.
Хотя совет создать стиль, где в качестве фона лежит drawable все еще актуален для версий ниже 12.

  • Это не сплеш, это происходит до сплеша, как раз этот промежуток мне и нужно убрать.

    Большинство втыкают заглушку, как я сейчас и сделал, но у меня сплеш анимированный и хотелось бы избежать пустого экрана, даже на 50-100мс.

  • historydev, скорее это у Вас не сплеш "А анимация при входе в приложение".
    Сплешом с моей точки зрения правильнее называть отрисовку чего-то симпатичного, пока приложение не готово выполнять основную задачу.
    А всякие лотио сами грузятся приличное время.

    "Белый экран" это момент между тем как лаунчер отдал управление и прогрузкой стартовой активити. Если у вас есть класс наследник от Application , то сперва работает его конструктор. Потом активити и так далее, пока не доберется до onResume и еще позже сработает ваш онфокус.

    Так вот как будет выглядеть экран между запуском и завершением онКреате зависит от темы указанной в манифесте. Операционка может это прочитать и сделать предварительные действия. Начиная с 12го довольно симпатично, ниже только поставив бекграунд.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Анна SEO Ответ

Для исправления проблемы с белым экраном при холодной загрузке, можно попробовать следующие методы:

1. Проверить файлы конфигурации: убедитесь, что все пути к файлам и библиотекам указаны правильно и нет ошибок в настройках.

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

3. Проверить логи ошибок: просмотрите логи сервера и приложения, чтобы найти возможные причины проблемы.

4. Оптимизация кода: проверьте свой код на наличие ошибок, оптимизируйте его и убедитесь, что нет бесконечных циклов или других проблем, которые могут привести к зависанию страницы.

5. Использовать отладочные инструменты: используйте инструменты разработчика браузера, такие как DevTools в Chrome, чтобы анализировать сетевой трафик, консоль ошибок и другие данные, которые могут помочь в идентификации проблемы.

Приведенные выше методы могут помочь в решении проблемы с белым экраном при холодной загрузке. Если проблема остается, рекомендуется обратиться к специалисту по веб-разработке для получения дополнительной помощи.

// Пример кода на PHP
echo "Пример кода на PHP для подсветки";

// Пример кода на PHP echo "Пример кода на PHP для подсветки";

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно