Implementación de una pantalla de bienvenida con Qt en Android
Muestra cómo configurar una pantalla de bienvenida con Qt para Android.

Este es un ejemplo simple que demuestra una forma de mostrar una pantalla de bienvenida con Qt. Cuando la aplicación se inicia, la pantalla de bienvenida Qt con un logotipo y un color de fondo se muestra durante dos segundos. La pantalla de bienvenida Qt se desvanece para mostrar la vista principal de la aplicación. La vista principal consiste en una simple etiqueta y un botón de cierre.
En este ejemplo, la pantalla de inicio por defecto de Android (desde Android 12) está oculta.
Este ejemplo forma parte de una serie de dos ejemplos similares que muestran la pantalla de inicio. Este utiliza AndroidManifest flags el otro utiliza QML view.
Usando la pantalla de bienvenida Qt en Android
La pantalla de bienvenida Qt para Android se define en el AndroidManifest.xml. Los archivos de proyecto Android pueden ser creados manualmente o usando el generador de plantillas Qt Creator. Para crear un archivo de proyecto Android utilizando el generador de plantillas Qt Creator:
- Abra Projects
- Vaya a la subsección Build Steps
- Abra Build Android APK
- Seleccione Create Templates de la subsección Application
<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"/>En el snippet anterior
- android.app.splash_screen_drawable define el archivo de recursos que define la pantalla de inicio Qt.
- android.app.splash_screen_sticky mantiene la pantalla de inicio Qt en la pantalla hasta que se llama a la función QNativeInterface::QAndroidApplication::hideSplashScreen().
QNativeInterface::QAndroidApplication::hideSplashScreen(2000);
Desde Android 12, Android tiene una pantalla de bienvenida por defecto. En el lanzamiento, la pantalla de inicio por defecto se muestra antes de que se muestre la primera vista de la aplicación. Existen instrucciones y una API para modificarla. Consulte Pantallas de bienvenida de Android.
Por defecto, Android utiliza el icono de la aplicación para la pantalla de bienvenida. En aplicaciones Qt esto puede ser usado tal cual, o modificado para ser usado como la pantalla de inicio de la aplicación o puede ser combinado con la pantalla de inicio de Qt. Para mantener la experiencia de usuario de lanzamiento consistente entre plataformas, puede ser necesario ocultar la pantalla de inicio de Android. Para ello, defina un tema translúcido que oculte efectivamente la pantalla de inicio de Android.
<?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>Sin embargo, hay un problema. Los cambios de orientación dejan de funcionar si tenemos un tema translúcido. Esto es causado por el hecho de que la vista de Android obtiene su orientación de la vista subyacente, por lo general se trata de un cajón de aplicación que no cambia su orientación. Y debido a que el tema no se puede cambiar después de que la vista de actividad se establece, terminamos con una aplicación atrapada en una orientación.
Como solución podemos crear una Actividad desechable con un tema translúcido para la pantalla de inicio de Android. Tan pronto como sea posible lanzamos otra Actividad, que tiene todas las campanas y silbatos que nuestra aplicación requiere.
<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>Para lanzar la pantalla de inicio Qt, también necesitamos sobreescribir la Activity de Android onCreate y usar un Intent para lanzar la QtActivity.
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;
}
});
}
}En este ejemplo la vista principal contiene una única vista con un botón de salida.
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.