Evgenii Legotckoi
Evgenii LegotckoiMarch 9, 2020, 7:41 p.m.

Android and QML - Adding Splash Screen

Let me show you a small example of adding Splash Screen to an application written in Qt. In this case, the Splash Screen will be added to the application using the Android ecosystem, that is, through its manifest. Adding a manifest has been described here.

One option for creating a Splash Screen in Qt/QML is to write code in QML/C++, but the disadvantage of this way is that you will see a black screen of the application until the application is fully loaded. Therefore, you must load the application using Java, through its manifest.

Let's make such a splash


The structure of the project will look as follows

main.qml

I'll start with the most boring - this is the content of the QML file of the application, which we will expect to download when the application starts. Nothing remarkable, the usual "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

And now we’ll fix the manifest in which you need to specify the resource file of the application theme, which will be called 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">

Next, add information about the splash screen file

<!-- Splash screen -->
<meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash"/>
<!-- Splash screen -->

These files must be added to the res/values and res/drawable directories

splash.xml

In the Splash Screen there is an application icon, it is also located in the drawable directory.

<?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

Here we disable the title bar, and also set the background of the application window.

<?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>

Result

As a result, this will be enough to get the application with Splash Screen.

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

Ds
  • June 24, 2022, 11:49 a.m.

Интересен формат иконки, если это png, то как решается проблема scalability? не растягивается ли лого на китайфонах с 1280х2500? У меня просто сплеш скрин с градиентом и логотипом, и вот несколько дней уже пытаюсь реишить проблему растягивания лого, и 9patch делал, и пытался покрыть разрешения, но ещё не пробовал в xml поверх нацепить лого на центр, скажите пожалуйста, решается ли таким образом проблема с совместимостью со всеми экранами?

Evgenii Legotckoi
  • June 29, 2022, 3:06 a.m.

На данный момент не скажу. Очень давно уже не брался за Java на Android

Ds
  • June 29, 2022, 6:05 a.m.

Ну я решил проблему созданием лого для m-xxxhdpi, разложил по папкам и андроид сам вытаскивает нужный, но, в руководстве один важный аспект пропущен, хотя возможно это у меня только, вообщем qt может свою meta-data всунуть в приложение, и будет либо белый экран после сплеша либо вообще каша, нужно найти в манифесте эту метадату с qtшными splashacreen и splashacreen_port и удалить эти две строки, это я так, вдруг кому пригодится, вроде бы если изначально не пытаться через qtшный гуи манифеста ставить скрины то он ничего не допишет, но вдруг.

Comments

Only authorized users can post comments.
Please, Log in or Sign up
OI

C++ - Test 001. The first program and data types

  • Result:40points,
  • Rating points-8
AD

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:50points,
  • Rating points-4
m

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:80points,
  • Rating points4
Last comments
ИМ
Игорь МаксимовNov. 22, 2024, 7:51 p.m.
Django - Tutorial 017. Customize the login page to Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii LegotckoiOct. 31, 2024, 9:37 p.m.
Django - Lesson 064. How to write a Python Markdown extension Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZEOct. 19, 2024, 3:19 p.m.
Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь МаксимовOct. 5, 2024, 2:51 p.m.
Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas5July 5, 2024, 6:02 p.m.
QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Now discuss on the forum
Donald Randolph
Donald RandolphDec. 30, 2024, 10:59 a.m.
Personal Injury lawyer Santa Monica As an experienced Santa Monica personal injury lawyer, Donald C. Randolph has recovered over $100 Million in verdicts and settlements for our clients. In severe injury cases, this compensation i…
Nirvana Yoga School
Nirvana Yoga SchoolDec. 30, 2024, 1:13 p.m.
OAuth2.0 через VK, получение email Nirvana Yoga School is one of the most trusted and reputed traditional Rishikesh yoga courses , India certified by Yoga Alliance, USA. We aim to spread traditional yoga teachings so t…
s
sriparkDec. 30, 2024, 12:47 p.m.
Mobile app development company in Chennai A Mobile app development company in Chennai focuses on creating personalized mobile applications to meet various business requirements. These companies offer a full range of services,…
a
amit88Dec. 30, 2024, 12:45 p.m.
Excel in Exams with PSLE Maths Tuition Singapore Preparing for the PSLE can be challenging, but the right guidance makes all the difference. PSLE Maths tuition Singapore offers personalized coaching to help students master key concepts, improv…
a
awinash62Dec. 30, 2024, 12:23 p.m.
Unlock Your Potential with the Certified Public Accountant Credential" Becoming a Certified Public Accountant (CPA) is a career milestone that opens doors to unparalleled opportunities in the world of accounting and finance. This globally recognized qualification s…

Follow us in social networks