Позвольте мне показать вам небольшой пример добавления Splash Screen в приложение, написанное на Qt. В этом случае Splash Screen будет добавлен в приложение с помощью экосистемы Android, то есть через его манифест. Добавление манифеста описано здесь.
Одним из вариантов создания экрана-заставки в Qt/QML является написание кода на QML/C++, но недостатком этого способа является то, что вы будете видеть черный экран приложения до тех пор, пока приложение не будет полностью загружено. Следовательно, вы должны загрузить приложение, используя Java, через его манифест.
Давайте сделаем такой splash screen
- 1. main.qml
- 2. AndroidManifest.xml
- 3. splash.xml
- 4. apptheme.xml
- 5. Результат
Структура проекта будет выглядеть следующим образом
main.qml
Начну с самого скучного — это содержимое QML-файла приложения, которое мы будем ожидать при запуске приложения. Ничего примечательного, обычный "Hello World"
import QtQuick 2.12 import QtQuick.Window 2.12 Window { id: window visible: true width: 480 height: 640 title: qsTr("Hello World") Text { text: qsTr("Splash Screen") anchors.centerIn: parent } }
AndroidManifest.xml
А теперь поправим манифест, в котором нужно указать ресурсный файл темы приложения, который будет называться apptheme.xml
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:theme="@style/AppTheme" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="-- %%INSERT_APP_NAME%% --" android:screenOrientation="unspecified" android:launchMode="singleTop">
Затем добавьте информацию о файле заставки
<!-- Splash screen --> <meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash"/> <!-- Splash screen -->
Эти файлы должны быть добавлены в каталоги res/values и res/drawable .
splash.xml
В Splash Screen есть иконка приложения, она тоже находится в каталоге drawable.
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" > <solid android:color="#FFFFFFFF"/> </shape> </item> <item> <bitmap android:src="@drawable/icon" android:gravity="center" /> </item> </layer-list>
apptheme.xml
Здесь мы отключаем строку заголовка, а также устанавливаем фон окна приложения.
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar"> <item name="android:windowBackground">@drawable/splash</item> </style> </resources>
Результат
В итоге этого будет достаточно, чтобы получить приложение с Splash Screen.