Что в ответе на вопрос, отвечает за фикс белого экрана при холодной загрузке?
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. Проверить файлы конфигурации: убедитесь, что все пути к файлам и библиотекам указаны правильно и нет ошибок в настройках.
2. Проверить ошибки PHP: выполните код на сервере с включенным выводом ошибок PHP, чтобы увидеть возможные ошибки, которые могут вызвать белый экран.
3. Проверить логи ошибок: просмотрите логи сервера и приложения, чтобы найти возможные причины проблемы.
4. Оптимизация кода: проверьте свой код на наличие ошибок, оптимизируйте его и убедитесь, что нет бесконечных циклов или других проблем, которые могут привести к зависанию страницы.
5. Использовать отладочные инструменты: используйте инструменты разработчика браузера, такие как DevTools в Chrome, чтобы анализировать сетевой трафик, консоль ошибок и другие данные, которые могут помочь в идентификации проблемы.
Приведенные выше методы могут помочь в решении проблемы с белым экраном при холодной загрузке. Если проблема остается, рекомендуется обратиться к специалисту по веб-разработке для получения дополнительной помощи.
// Пример кода на PHP echo "Пример кода на PHP для подсветки";