Splash Screen используется для того чтобы не видеть черный экран при запуске приложения. Ниже вы узнаете, как легко создать такую «заставку». Примечание: это один из возможных вариантов создания Splash Screen. За тему для этой заметки благодарю Балашова Валерия.
Upd (07.03.14). Дополнение из комментариев.
Update (17.03.14). Дополнение по выравниванию картинки
Update (18.03.14 0:35). Изменяем цвет фона под прозрачной картинкой
Update (25.11.14). В XE7 встроена возможность добавления заставки. Читайте справку и мою статью Как добавить "резиновый" SplashScreen в XE7
Начнём.
Что нужно сделать:
- Создать картинку (splash.png), которую задеплоим в папку «res\drawable\»
- Создать файл стиля (style.xml), который задеплоим в папку «res\values\»
- Внести маленькое изменение в файл «AndroidManifest.template.xml»
Создание файлов.
Создаём картинку в Photoshop’е или в любом удобном для вас редакторе. Для примера, я сделал картинку «Powered by Delphi XE5» с разрешением 768x1024.
Создаём файл стиля в любом текстовом редакторе (я использую Notepad++) и вписываем туда:
<resources> <style name="MyTheme.NoTitleBar.CustomBackground" parent="@android:Theme.Holo"> <item name="android:windowBackground">@drawable/splash</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> </style> </resources>
Теперь необходимо задеплоить эти файлы в проект:
Жмём «Ctrl + F9» для компиляции проекта и создания файла «AndroidManifest.template.xml».
Вносим изменение в файл «AndroidManifest.template.xml».
Открываем файл «AndroidManifest.template.xml» и ищем строчку «android:theme="%theme%"» и заменяем её на строчку «android: theme = "@style/MyTheme.NoTitleBar.CustomBackground"». Сохраняем файл.
Теперь компилируем и запускаем приложение на устройстве (эмуляторе), смотрим результат.
Исходный код: Скачать с Google Drive
Update (07.03.14). Запрещаем растягивать картинку.
Делается все по инструкции, но создается еще один файл "splash_centered.xml". Деплоится так же в "res\drawable\".
Его содержимое:
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/splash" android:gravity="center"/>
После этого в файле "style.xml" строку
<item name="android:windowBackground">@drawable/splash</item>
меняем на
<item name="android:windowBackground">@drawable/splash_centered</item>
все, теперь изображение по центру и имеет оригинальные размеры.
Update (17.03.14). Дополнение, к предыдущему обновлению.
Для того чтобы управлять положением и размерами картинки нужно использовать атрибут «android:gravity». Можно указывать несколько значений для этого атрибута, для этого используйте вертикальную черту «|». Значения, которые можно указывать в этом атрибуте: http://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html#attr_android:gravity
Для примера, я выставляю вместо этого значения «android:gravity="center"» (отображаем по центру и с оригинальными размерами) вот это «android:gravity="fill"» и картинка начинает подстраиваться под размеры дисплея.
Update (18.03.14 0:35). Изменяем цвет фона под прозрачной картинкой
Как добавить другой цвет фона и прозрачную картинку. Способ работает на моём устройстве, но я не проверял на соответствие правилам Гугла.
Пример:
Картинка на видео - это надпись размеры 320x160, фон прозрачный.
Что необходимо:
Если вы выполнили предыдущие Update’ы и вам необходимо сменить цвет фона, т.к. через прозрачную картинку видно чёрный фон, то читаем дальше.
Сейчас у вас имеется 3 файла, которые вы задеплоили:
style.xml - res\values\
splash.png - res\drawable\
splash_centered.xml - res\drawable\
Чтобы изменить фон за картинкой, нам необходим ещё один файл:
color.xml – деплоим в res\values\
внутри пишем(например):
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="blue">#ff324adb</color> </resources>
Описание:
«blue» - имя цвета, к нему будем обращаться из style.xml
«#ff324adb» - ff – это уровень прозрачности в шестнадцатеричной системе исчисления(макс. 255 = ff = не прозрачно); «324adb» - это цвет
Далее вносим изменения в файл style.xml:
Добавляем новую строчку: "android:background" и изменяем старую "android:windowBackground"
<resources> <style name="MyTheme.NoTitleBar.CustomBackground" parent="@android:Theme.Holo"> <item name="android:background">@drawable/splash_centered</item> <item name="android:windowBackground">@color/blue</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> </style> </resources>
всё сохраняем, компилим и радуемся.
Что почитать:
http://android-developers.blogspot.ru/2009/03/window-backgrounds-ui-speed.html
http://developer.android.com/guide/topics/resources/drawable-resource.html
http://developer.android.com/guide/topics/resources/more-resources.html#Color
p.s. Я ушёл спать :)
Что почитать:
http://android-developers.blogspot.ru/2009/03/window-backgrounds-ui-speed.html
http://developer.android.com/guide/topics/resources/drawable-resource.html
http://developer.android.com/guide/topics/resources/more-resources.html#Color
p.s. Я ушёл спать :)
Данная статья основана на корейской (안드로이드 테마를 이용한 Splash Window 구현) и китайской (http://www.cnblogs.com/ChinaEHR/p/3368299.html) статьях.