Implementierung eines Begrüßungsbildschirms mit Qt auf Android
Hier wird gezeigt, wie man mit Qt einen Begrüßungsbildschirm für Android einrichtet.

Dies ist ein einfaches Beispiel, das eine Möglichkeit zur Darstellung eines Begrüßungsbildschirms mit Qt veranschaulicht. Beim Start der App wird der Qt-Begrüßungsbildschirm mit einem Logo und einer Hintergrundfarbe zwei Sekunden lang angezeigt. Anschließend wird der Qt-Begrüßungsbildschirm ausgeblendet, um die Hauptansicht der App anzuzeigen. Die Hauptansicht besteht aus einem einfachen Label und einer Schaltfläche zum Schließen.
In diesem Beispiel wird der standardmäßige Android-Splash-Screen (ab Android 12) ausgeblendet.
Dieses Beispiel ist Teil einer Reihe von zwei ähnlichen Beispielen zur Darstellung von Startbildschirmen. Dieses Beispiel verwendet „AndroidManifest“-Flags, das andere eine QML-Ansicht.
Verwendung des Qt-Startbildschirms unter Android
Der Qt-Startbildschirm für Android wird in der Datei „AndroidManifest.xml“ definiert. Die Android-Projektdateien können manuell oder mithilfe des Vorlagengenerators unter „ Qt Creator “ erstellt werden. So erstellen Sie eine Android-Projektdatei mithilfe des Vorlagengenerators unter „ Qt Creator “:
- Öffnen Sie Projects
- Gehen Sie zum Unterabschnitt „ Build Steps “
- Öffnen Build Android APK
- Wählen Sie „ Create Templates “ im Unterabschnitt „ Application “ aus
<meta-data android:name="android.app.splash_screen_drawable"
android:resource="@drawable/qtsplashscreen"/>
<meta-data android:name="android.app.splash_screen_sticky"
android:value="true"/>Im vorherigen Ausschnitt:
- android.app.splash_screen_drawable definiert die Ressourcendatei, die den Qt-Startbildschirm festlegt.
- android.app.splash_screen_sticky sorgt dafür, dass der Qt-Startbildschirm so lange auf dem Bildschirm angezeigt wird, bis die Funktion „ QNativeInterface::QAndroidApplication::hideSplashScreen()“ aufgerufen wird.
QNativeInterface::QAndroidApplication::hideSplashScreen(2000);
Seit Android 12 verfügt Android über einen Standard-Splash-Screen. Beim Start wird der Standard-Splash-Screen angezeigt, bevor die erste Ansicht der Anwendung erscheint. Es gibt Anleitungen und eine API, um ihn anzupassen. Siehe Android-Splash-Screens.
Standardmäßig verwendet Android das Anwendungssymbol für den Splash-Screen. Bei Qt-Anwendungen kann dieses Symbol unverändert verwendet, als Startbildschirm der Anwendung angepasst oder mit dem Qt-Startbildschirm kombiniert werden. Um die Benutzererfahrung beim Start plattformübergreifend einheitlich zu gestalten, kann es erforderlich sein, den Android-Startbildschirm auszublenden. Definieren Sie dazu ein transluzentes Design, das den Android-Startbildschirm effektiv ausblendet.
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<style name="splashStartTheme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowDisablePreview">true</item>
<item name="android:windowIsTranslucent">true</item>
</style>
</resources>Es gibt jedoch ein Problem: Bei Verwendung eines durchscheinenden Themes funktionieren Orientierungsänderungen nicht mehr. Dies liegt daran, dass die Android-Ansicht ihre Ausrichtung von der darunterliegenden Ansicht erhält – in der Regel ist dies ein Anwendungsmenü, dessen Ausrichtung sich nicht ändert. Und da das Design nicht mehr geändert werden kann, nachdem die Activity-Ansicht festgelegt wurde, bleibt die Anwendung schließlich in einer Ausrichtung hängen.
Als Workaround können wir eine temporäre Activity mit einem durchsichtigen Design für den Android-Startbildschirm erstellen. Sobald wie möglich starten wir eine weitere Activity, die über alle Funktionen verfügt, die unsere Anwendung benötigt.
<activity
android:name=".SplashActivity"
android:exported="true"
android:theme="@style/splashStartTheme"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>Um den Qt-Startbildschirm zu starten, müssen wir außerdem die Android-Activity „ onCreate “ überschreiben und die QtActivity mithilfe eines Intents starten.
package io.qt.qtsplashscreeninandroid;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.util.Log;
import android.content.Intent;
import android.view.ViewTreeObserver;
import org.qtproject.qt.android.bindings.QtActivity;
public class SplashActivity extends Activity {
private static final String TAG = "SplashActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set up an OnPreDrawListener to the root view.
final View content = findViewById(android.R.id.content);
content.getViewTreeObserver().addOnPreDrawListener(
new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
Intent intent = new Intent(SplashActivity.this, QtActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
content.getViewTreeObserver().removeOnPreDrawListener(this);
finish();
return true;
}
});
}
}In diesem Beispiel enthält die Hauptansicht nur eine einzige Ansicht mit einer Schaltfläche zum Beenden.
import QtQuick
import QtQuick.Controls
Window {
visible: true
title: qsTr("Qt Splash Screen Example")
color: "#2CDE85"
Text {
id: textLabel
text: "First View"
anchors.centerIn: parent
}
Button {
id: closeButton
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: textLabel.bottom
anchors.topMargin: 5
background: Rectangle {
color: "#00414A"
radius: 2
}
text: "Close"
contentItem: Text {
color: "#FFFFFF"
text: closeButton.text
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
onClicked: {
Qt.callLater(Qt.quit)
}
}
}© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.