Я хотел, чтобы мое приложение выглядело более профессионально, поэтому я решил сделать заставку.
Как бы я его создал и затем реализовал?
android
splash-screen
Ефрем
источник
источник
Ответы:
Дальнейшее чтение:
Старый ответ:
КАК : Простая заставка
В этом ответе показано, как отображать заставку в течение фиксированного периода времени, когда ваше приложение запускается, например, из-за брендинга. Например, вы можете показывать заставку в течение 3 секунд. Однако, если вы хотите показывать экран-заставку в течение различного промежутка времени (например, время запуска приложения), вам следует проверить ответ Абдуллы https://stackoverflow.com/a/15832037/401025 . Однако имейте в виду, что запуск приложений может быть очень быстрым на новых устройствах, поэтому пользователь просто увидит вспышку, которая является плохим UX.
Для начала вам нужно определить заставку в вашем
layout.xml
файлеИ ваша деятельность:
Это все ;)
источник
SPLASH_DISPLAY_LENGTH
время. Вы должны сделать это вместо этого: bignerdranch.com/blog/splash-screens-the-right-wayОбратите внимание, что это решение не позволит пользователю больше ждать: задержка заставки зависит от времени запуска приложения.
Когда вы открываете любое приложение для Android, по умолчанию вы получаете черный экран с заголовком и значком приложения наверху, вы можете изменить это с помощью стиля / темы.
Сначала создайте style.xml в папке значений и добавьте в него стиль.
Вместо использования
@android:style/Theme.DeviceDefault.Light.NoActionBar
вы можете использовать любую другую тему в качестве родительской.Во-вторых, добавьте в свое приложение Manifest.xml
android:theme="@style/splashScreenTheme"
к своей основной деятельности.В-третьих, обновите свою тему в своей деятельности по запуску onCreate ().
ОБНОВЛЕНИЕ Проверьте этот пост .
Благодаря @ mat1h и @adelriosantiago
источник
<item name="android:background">
это переопределило быwindowBackground
. И безandroid:background
определения мой фон в любых фрагментах был бы прозрачным, показывая активность за содержанием переднего плана.ваш Splash.java может выглядеть так:
перейдите
ActivityB.class
к любой активности, которую вы хотите начать после заставкипроверьте файл манифеста, и он должен выглядеть
источник
Ответы выше очень хорошие, но я хотел бы добавить еще кое-что. Я новичок в Android, я столкнулся с этой проблемой во время моей разработки. надеюсь, что это может помочь кому-то, как я.
Экран-заставка является точкой входа в мое приложение, поэтому добавьте следующие строки в AndroidManifest.xml.
Заставка должна отображаться только один раз в жизненном цикле приложения, я использую логическую переменную для записи состояния заставки и показываю ее только в первый раз.
Удачного кодирования!
источник
android:noHistory="true"
в ,AndroidManifest.xml
чтобы запретить пользователю идти назад к заставке с помощью кнопки назад.Ответ Абдуллы великолепен. Но я хочу добавить еще несколько деталей в мой ответ.
Реализация заставки
Правильная реализация заставки немного отличается от того, что вы можете себе представить. Отображаемая заставка должна быть готова немедленно, даже до того, как вы сможете надуть файл макета в своей заставке.
Таким образом, вы не будете использовать файл макета. Вместо этого укажите фон заставки в качестве фона темы занятия. Для этого сначала создайте XML drawable в res / drawable.
background_splash.xml
Это просто список слоев с логотипом в центре цвета фона с ним.
Теперь откройте файл styles.xml и добавьте этот стиль.
Эта тема будет на панели действий и с фоном, который мы только что создали выше.
И в манифесте вам нужно настроить SplashTheme на активность, которую вы хотите использовать в качестве заставки.
Затем внутри вашего кода активности перейдите к конкретному экрану после заставки с помощью намерения.
Это правильный способ сделать. Я использовал эти ссылки для ответа.
источник
YouTube
поводу об этом. Но я думаю, что размер растрового изображения будет проблемой, так как вы не можете изменить его размер, используяlayer-list
.Создать
Activity
SplashScreen.java
splashscreen.xml
будет такисточник
По умолчанию Splash Screnn не делает ваше приложение более профессиональным. Профессионально разработанный Splash Screen имеет возможность сделать ваше приложение более профессиональным, но если вы не знаете, как его написать, то насколько профессиональным будет ваше приложение.
Единственной причиной (оправданием) появления заставки является то, что вы выполняете огромное количество вычислений или ожидаете запуска GPS / WiFi, потому что ваше приложение полагается на это до запуска. Без результатов этих вычислений или доступа к GPS / WiFi (и т. Д.) Ваше приложение замертво в воде, поэтому вы чувствуете, что вам нужен экран-заставка, и ДОЛЖЕН блокировать вид экрана для любых других работающих программ (включая фоновый) ).
Такой заставочный экран должен выглядеть как ваше полноэкранное приложение, чтобы создать впечатление, что оно уже инициализировано, а затем, после продолжительных вычислений, могут быть заполнены окончательные детали (изображение настроено). Шанс того , что быть так или что это единственный способ , программа может быть разработана могуч мала .
Было бы лучше позволить Пользователю (и остальной части ОС) делать что-то еще, пока они ждут, вместо того, чтобы проектировать Вашу Программу так, чтобы она зависела от чего-то, что займет некоторое время (когда продолжительность ожидания является неопределенной).
На вашем телефоне уже есть значки, которые говорят, что GPS / WiFi запускается. Время или пространство, занимаемое заставкой, может быть потрачено на загрузку предварительных вычислений или выполнение вычислений. Смотрите первую ссылку ниже, чтобы узнать о проблемах, которые вы создаете, и о том, что необходимо учитывать.
Если вам абсолютно необходимо дождаться этих вычислений или GPS / WiFi, лучше всего просто запустить приложение и открыть всплывающее окно, в котором говорится, что необходимо дождаться вычислений (текстовое сообщение «Инициализация» - это нормально). Ожидается ожидание GPS / WiFi (если они еще не были включены в другой программе), поэтому нет необходимости объявлять время их ожидания.
Помните, что когда Splash Screen запускает вашу Программу, она фактически уже запущена, все, что вы делаете, это откладываете использование вашей Программы и заставляете CPU / GPU делать то, что большинство не считает необходимым.
Нам лучше действительно подождать и посмотреть ваш Splash Screen каждый раз, когда мы запускаем вашу Программу, или МЫ не будем чувствовать, что она написана очень профессионально. Создание экрана-заставки ПОЛНОГО экрана и дубликата самого экрана программы (поэтому мы думаем, что он инициализирован, хотя на самом деле это не так) МОЖЕТ достичь вашей цели (сделать вашу программу более профессионально выглядящей), но я бы не стал на это сильно ставить.
Почему бы не сделать это: http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/
Как это сделать: https://encrypted.google.com/search?q=Android+splash+screen+source
Так что есть веская причина не делать этого, но если вы уверены, что каким-то образом ваша ситуация выходит за рамки этих примеров, то способы для этого приведены выше. Будьте уверены, что это действительно делает ваше приложение более профессиональным, или вы победили единственную причину, по которой вы это сделали.
Это похоже на канал YouTube, который начинает каждое видео с длинного графического вступления (и Outro) или чувствует необходимость рассказать шутку или объяснить, что произошло на прошлой неделе (когда это не канал Comedy или LifeStyles). Просто покажи шоу! (Просто запустите программу).
источник
Прежде всего ответы действительно очень хороши. Но есть проблема утечки памяти. Эта проблема часто известна в сообществе Android как «Утечка активности» . Теперь, что именно это значит?
Когда происходит изменение конфигурации, например, изменение ориентации, Android уничтожает действие и создает его заново. Обычно сборщик мусора просто очищает выделенную память от старого экземпляра Activity, и у нас все хорошо.
«Утечка активности» относится к ситуации, когда сборщик мусора не может очистить выделенную память старого экземпляра действия, поскольку он принадлежит
being (strong) referenced
объекту, который прожил экземпляр действия. Каждому приложению Android выделено определенное количество памяти. Когда сборщик мусора не может освободить неиспользуемую память, производительность приложения будет постепенно снижаться и в конечном итоге завершится сOutOfMemory
ошибкой.Как определить, утечка памяти у приложения или нет? Самый быстрый способ - открыть вкладку «Память» в Android Studio и обратить внимание на выделенную память при изменении ориентации. Если выделенная память продолжает увеличиваться и никогда не уменьшается, у вас есть утечка памяти.
1. Утечка памяти, когда пользователь меняет ориентацию.
Сначала вам нужно определить заставку в
splashscreen.xml
файле ресурсов макета.Для получения дополнительной информации перейдите по этой ссылке
источник
Остановка на экране-заставке для 4 из 5 излишне не имеет особого смысла. Это нормально, если вы загружаете что-то в фоновом режиме, иначе следуйте этому подходу для реализации заставки: - Реализация заставки немного правильнее, чем вы можете себе представить. Отображаемая заставка должна быть готова немедленно, даже до того, как вы сможете надуть файл макета в своей заставке.
Таким образом, вы не будете использовать файл макета. Вместо этого укажите фон заставки в качестве фона темы занятия. Для этого сначала создайте XML drawable в res / drawable.
Здесь я настроил цвет фона и изображение.
Далее вы установите это в качестве фона вашей заставки в теме. Перейдите к файлу styles.xml и добавьте новую тему для своей активности-всплеска:
В вашем новом SplashTheme установите атрибут фона окна в свой XML-формат. Сконфигурируйте это как тему вашей заставки в вашем AndroidManifest.xml:
Наконец, класс SplashActivity должен просто направить вас к вашему основному виду деятельности:
Подробнее читайте здесь: 1. https://www.bignerdranch.com/blog/splash-screens-the-right-way/ 2. http://blog.goodbarber.com/3-tips-to-create-a -Большая-заставка-для-вашей-подвижной app_a287.html
источник
Это полный код здесь
SplashActivity.java
В Drawables создать этот bg_splash.xml
В styles.xml создайте собственную тему
и наконец в AndroidManifest.xml укажите тему вашей деятельности
Приветствия.
источник
drawable
Заставки не следует загружать из файла макета, возможно, при загрузке все еще может быть некоторая задержка.
Лучший способ - создать тему только для вашей SplashScreenActivity и задать
the android:windowBackground
для нее доступный ресурс.https://www.bignerdranch.com/blog/splash-screens-the-right-way/
В двух словах:
Объявите свою SplashScreenActivity в манифесте:
В вашем SplashScreenActivity.java:
Затем создайте ресурс для фонового окна вашей темы:
Drawable файл splash.xml:
источник
После Android Marshmallow другое продуктивное использование экрана-заставки, о котором я вспоминаю, - запросить необходимое
Android Permissions
на экране-заставке вашего приложения.похоже, что большинство приложений обрабатывают запрос на разрешение таким образом.
Диалоги делают UIX плохим, и они нарушают основной поток и заставляют вас выбирать время выполнения, и правда заключается в том, что большинству пользователей может быть даже наплевать, хочет ли ваше приложение что-то записать на SD-карту. Некоторые из них могут даже не понимать, что мы пытаемся передать, пока не переведем это на простой английский.
Одновременный запрос разрешений уменьшает количество операций «if else» перед каждой операцией и делает ваш код более свободным.
Это пример того, как вы можете запрашивать разрешения в вашей заставке для устройства под управлением Android OS 23+.
Если все разрешения предоставлены, ИЛИ уже предоставлены, ИЛИ приложение запущено в Pre Marshmallow THEN, просто перейдите и отобразите основное содержание с небольшой задержкой в полсекунды, чтобы пользователь мог оценить усилия, которые мы приложили при чтении этого вопроса и стараемся изо всех сил.
источник
Вы не будете использовать файл макета. Вместо этого укажите фон заставки в качестве фона темы занятия. Для этого сначала создайте XML drawable в res / drawable.
Примечание: весь код ниже доступен GitHub Link
Здесь я настроил цвет фона и изображение.
Далее вы установите это в качестве фона вашей заставки в теме. Перейдите к файлу styles.xml и добавьте новую тему для своей активности-всплеска:
В вашем новом SplashTheme установите атрибут фона окна в свой XML-формат. Сконфигурируйте это как тему вашей заставки в вашем AndroidManifest.xml:
Наконец, ваш класс SplashActivity должен просто направить вас к основной деятельности:
Обратите внимание, что вы даже не настроили представление для этой SplashActivity. Вид исходит из темы. Когда вы настраиваете пользовательский интерфейс для своей заставки в теме, он сразу становится доступным.
Если у вас есть файл макета для всплеска, этот файл макета будет виден пользователю только после полной инициализации приложения, что слишком поздно. Вы хотите, чтобы всплеск отображался только в течение того небольшого промежутка времени, когда приложение было инициализировано.
источник
источник
Создайте Activity, позвольте нам Activity с именем «A», затем создайте xml-файл с именем myscreen.xml, в котором установите изображение заставки в качестве фона, а затем используйте таймер обратного отсчета для перехода от одного Activtity к другому. Чтобы узнать, как использовать таймер обратного отсчета, см. Мой ответ на этот вопрос TimerTask в Android?
источник
Пример заставки:
источник
Заставка - это немного непригодный объект в Android: его нельзя загрузить как можно быстрее, чтобы скрыть задержку запуска основной активности. Есть две причины, чтобы использовать его: реклама и сетевые операции.
Реализация в виде диалога позволяет без промедления перейти от заставки к основному интерфейсу действий.
Планировка:
И начать:
источник
Другой подход достигается с помощью CountDownTimer
источник
источник
Действительно легкий подход gr8:
Сначала создайте свой всплеск на следующем веб-сайте:
https://www.norio.be/android-feature-graphic-generator/
Выберите свой логотип и слоган, выберите свой красивый фон. измените его размер до 4096x4096.
Теперь загрузите это изображение и добавьте его в:
https://apetools.webprofusion.com/app/#/tools/imagegorilla
И сгенерируйте все необходимые заставки, все устройства, все платформы.
Наслаждайтесь!
Здесь достаточно ответов, которые помогут с реализацией. Этот пост должен был помочь другим сделать первый шаг в создании заставки!
источник
Как насчет супергибкого экрана запуска, который может использовать тот же код и определен в AndroidManifest.xml, поэтому код никогда не нужно будет менять. Я вообще разрабатываю библиотеки кода и не люблю настраивать код, потому что он небрежный.
Затем SpashActivity сам ищет метаданные для "launch_class", чтобы затем создать сам Intent. Метаданные «длительность» определяют, как долго работает заставка.
источник
Когда-нибудь пользователь сразу откроет
SplashActivity
и закроет, но приложение все равно зайдетMainActivity
послеSPLASH_SCREEN_DISPLAY_LENGTH
.Для предотвращения этого: в
SplashActivity
вы должны проверитьSplashActivity
заканчивает или нет перед переходомMainActivity
Надеюсь это поможет
источник
Хотя есть хорошие ответы, я покажу рекомендуемый Google способ:
1) Сначала создайте
Theme
экран-заставку: у вас есть тема, которая называетсяsplashscreenTheme
вашей темой запуска:Замечания:
android:windowBackground
уже устанавливает ваше изображение заставки ненужно делать это снова в пользовательском интерфейсе.
Вы также можете использовать цвет вместо рисования.
2) Установите тему для манифеста splashscreenActivity
3) убедитесь, что launch_screen
drawable
не находится вdrawable
папке, если ваше изображение не маленькое.Это приведет к более быстрому запуску экрана запуска и спасет вас от черного экрана
Это также позволяет избежать дополнительного оверлея
источник
Это лучший пост, который я видел на заставках: http://saulmm.github.io/avoding-android-cold-starts
Saúl Molinero предлагает два различных варианта заставок: использование фона окна для анимации на начальном экране и отображение интерфейса заполнителя (это популярный выбор, который Google использует для большинства своих приложений в настоящее время).
Я ссылаюсь на этот пост каждый раз, когда мне нужно учитывать время холодного запуска и избегать отвода пользователя из-за длительного времени запуска.
Надеюсь это поможет!
источник
В моем случае я не хотел создавать новую активность только для показа изображения в течение 2 секунд. Когда я
MainAvtivity
запускаю свои , изображения загружаются в держатели с помощью Picasso, я знаю, что загрузка занимает около 1 секунды, поэтому я решил сделать следующее в моей MainActivityOnCreate
:При запуске приложения первое, что происходит, - это
ImageView
отображение на экране и удаление строки состояния путем установки флагов окна в полноэкранный режим. Затем я использовалHandler
для запуска в течение 2 секунд, после 2 секунд я очищаю флажки на весь экран и устанавливаю видимостьImageView
дляGONE
. Легко, просто, эффективно.источник
Это действительно просто в Android, мы просто используем концепцию обработчика для реализации заставки
В вашем Java-файле SplashScreenActivity этот код в .
В вашем файле SplashScreenActivity xml поместите любую картинку, используя imageview.
источник
Вы можете добавить это в свой метод onCreate
И инициализируйте ваше время в миллисекундах, сколько хотите ...
для более подробной информации загрузите полный код по этой ссылке ...
https://github.com/Mr-Perfectt/Splash-Screen
источник
В Котлине напишите этот код: -
Надеюсь, что это поможет вам. Спасибо ........
источник
Простой код, все работает :) Простой всплеск
источник
источник