Android에서 Qt Quick 를 사용하여 스플래시 화면 구현하기
Android에서 Qt Quick 뷰를 사용하여 스플래시 화면을 설정하는 방법을 보여줍니다.

이 간단한 예제는 Qt Qml 뷰를 Qt 스플래시 화면으로 사용하는 방법을 보여줍니다. 별도의 전환 효과는 사용되지 않습니다. 이 예제에서는 Android 12에서 도입된 기본 스플래시 화면이 숨겨집니다. 애플리케이션이 시작되면 스플래시 화면이 2초 동안 표시된 후, 전환 효과 없이 메인 뷰가 표시됩니다.
이 예제는 스플래시 화면을 보여주는 두 가지 유사한 예제 중 하나입니다. 이 예제는 QML 뷰를 사용하고, 다른 예제는 AndroidManifest 플래그를 사용합니다.
Android에서 ' Qt Quick ' 스플래시 화면 사용하기
QML 뷰를 스플래시 화면으로 사용하려면 뷰를 정의하고 스플래시 화면 기능에 특화된 몇 가지 항목을 추가하면 됩니다.
Window {
id: splash
color: "#2CDE85"
title: qsTr("Splash Window")
modality: Qt.ApplicationModal
flags: Qt.SplashScreen
visible: true
property int timeoutInterval: 2000
signal timeoutmodality: Qt.ApplicationModal는 뷰를 모달로 설정합니다.flags: Qt.SplashScreen타이틀바를 숨깁니다.property int timeoutInterval: 2000뷰의 표시 시간을 설정합니다.
메인 뷰 불러오기
Loader {
id: mainLoader
source: "Main.qml"타이머는 타임아웃 시 exit 함수를 호출하여 스플래시 화면에서 메인 뷰로 전환합니다. 이 단계에서 필요한 아웃 애니메이션이 시작됩니다.
function exit() {
mainLoader.item.show();
splash.visible = false
splash.timeout()
}타이머는 스플래시 화면이 표시될 수 있도록 적절한 시간을 확보합니다. 이는 Loader.loaded() 신호와 함께 사용하거나, 앱이 표시될 준비가 되었을 때 앱 구현에서 발생하는 다른 신호와 함께 사용할 수 있습니다.
Timer {
interval: splash.timeoutInterval;
running: splash.visible;
repeat: false
onTriggered: {
splash.exit()
}
}실행 시, 애플리케이션의 첫 번째 뷰가 표시되기 전에 기본 스플래시 화면이 표시됩니다. 수정 방법에 대한 지침은 Android 스플래시 화면을 참조하십시오.
기본적으로 Android는 스플래시 화면으로 애플리케이션 아이콘을 사용합니다. Qt for Android 애플리케이션에서는 이를 앱 스플래시 화면으로 사용하도록 수정하거나 Qt 스플래시 화면과 결합할 수 있습니다.
네이티브 Android 스플래시 화면 숨기기
플랫폼 간 실행 사용자 경험을 일관되게 유지하려면 Android 스플래시 화면을 숨겨야 할 수도 있습니다. 이를 위해 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>하지만 한 가지 문제가 있습니다. 반투명 테마를 사용하면 화면 방향 변경 기능이 작동하지 않게 됩니다. 이는 Android 뷰가 밑에 있는 뷰로부터 방향을 가져오기 때문인데, 대개 이 뷰는 방향을 변경하지 않는 애플리케이션 드로어입니다. 또한 Activity 뷰가 설정된 후에는 테마를 변경할 수 없기 때문에, 결국 애플리케이션이 한 가지 방향으로 고정된 상태가 되어 버립니다.
이를 해결하기 위한 우회 방법으로, Android 스플래시 화면을 위한 반투명 테마를 적용한 일회용 Activity를 생성할 수 있습니다. 가능한 한 빨리 애플리케이션에 필요한 모든 기능을 갖춘 다른 Activity를 실행합니다.
<activity
android:name=".SplashActivity"
android:exported="true"
android:label="QML Splash Screen Example"
android:theme="@style/splashStartTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>이제 기본 Android 스플래시 화면은 표시되지 않고, QML에 정의된 스플래시 화면을 표시하는 QtActivity가 실행됩니다. QML 스플래시 화면을 실행하려면 Android Activity의 onCreate 메서드를 오버라이드하고 Intent를 사용하여 QtActivity를 실행해야 합니다.
package io.qt.qmlsplashscreeninandroid;
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 i = new Intent(SplashActivity.this, QtActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(i);
content.getViewTreeObserver().removeOnPreDrawListener(this);
finish();
return true;
}
});
}
}마지막으로, QML 스플래시 화면은 메인 뷰를 열며, 이 예제에서는 닫기 버튼이 있는 단 하나의 View만 포함되어 있습니다.
© 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.