summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2016-01-19 12:42:58 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-01-19 12:42:58 -0800
commit04e994b57558ed9db0e5175c89c131f7f87d1bb7 (patch)
tree9235e0323d952db75f988d05fb416e5a14c51a9b
parentf466ee61da75705abd615a2a0d3cbaca12e3c902 (diff)
downloadsubsurface-04e994b57558ed9db0e5175c89c131f7f87d1bb7.tar.gz
Subsurface-mobile on Android: change the splash screen methodology
This is based on post by Ben Laud https://medium.com/@benlaud/complete-guide-to-make-a-splash-screen-for-your-qml-android-application-567ca3bc70af It creates a theme that uses a splash drawable that Android will show immediately when the application is launched. And then starts the QML application with visibility set to false adn only makes it visible (and replace the splash screen) once initialization is finished. We still get a little flicker with the switch from splash to start page to dive list, but over all the experience is hugely improved. And the bug that the splash screen stays around when starting Subsurface-mobile in landscape also appears to be fixed. Fixes #994 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--android-mobile/AndroidManifest.xml4
-rw-r--r--android-mobile/res/drawable/splash.xml12
-rw-r--r--android-mobile/res/drawable/subsurface_mobile_splash.9.pngbin0 -> 95837 bytes
-rw-r--r--android-mobile/res/values/apptheme.xml6
-rw-r--r--qt-mobile/qml/main.qml20
5 files changed, 40 insertions, 2 deletions
diff --git a/android-mobile/AndroidManifest.xml b/android-mobile/AndroidManifest.xml
index f900cc55a..e598303d0 100644
--- a/android-mobile/AndroidManifest.xml
+++ b/android-mobile/AndroidManifest.xml
@@ -14,6 +14,7 @@
android:name="org.qtproject.qt5.android.bindings.QtActivity"
android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation"
android:label="@string/app_name"
+ android:theme="@style/AppTheme"
android:launchMode="singleTop"
android:screenOrientation="unspecified" >
<intent-filter>
@@ -77,7 +78,8 @@
<!-- Splash screen -->
- <meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/subsurface_mobile_splash" />
+<!-- <meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/subsurface_mobile_splash" /> -->
+ <meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/splash" />
<!-- Splash screen -->
</activity>
diff --git a/android-mobile/res/drawable/splash.xml b/android-mobile/res/drawable/splash.xml
new file mode 100644
index 000000000..a27a22df4
--- /dev/null
+++ b/android-mobile/res/drawable/splash.xml
@@ -0,0 +1,12 @@
+<?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="#000000FF"/>
+ </shape>
+ </item>
+ <item>
+ <bitmap android:src="@drawable/subsurface_mobile_splash"
+ android:gravity="center" />
+ </item>
+</layer-list>
diff --git a/android-mobile/res/drawable/subsurface_mobile_splash.9.png b/android-mobile/res/drawable/subsurface_mobile_splash.9.png
new file mode 100644
index 000000000..575b300cd
--- /dev/null
+++ b/android-mobile/res/drawable/subsurface_mobile_splash.9.png
Binary files differ
diff --git a/android-mobile/res/values/apptheme.xml b/android-mobile/res/values/apptheme.xml
new file mode 100644
index 000000000..adec2328c
--- /dev/null
+++ b/android-mobile/res/values/apptheme.xml
@@ -0,0 +1,6 @@
+<?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>
diff --git a/qt-mobile/qml/main.qml b/qt-mobile/qml/main.qml
index bcbc310f1..b2c94f4f4 100644
--- a/qt-mobile/qml/main.qml
+++ b/qt-mobile/qml/main.qml
@@ -17,7 +17,8 @@ MobileComponents.ApplicationWindow {
id: fontMetrics
}
- visible: true
+ visible: false
+ opacity: 0
globalDrawer: MobileComponents.GlobalDrawer {
title: "Subsurface"
@@ -200,6 +201,14 @@ MobileComponents.ApplicationWindow {
initialPage: DiveList {
anchors.fill: detailsPage
id: diveDetails
+ opacity: 0
+ Behavior on opacity {
+ NumberAnimation {
+ duration: 200
+ easing.type: Easing.OutQuad
+ }
+ }
+
}
QMLManager {
@@ -244,5 +253,14 @@ MobileComponents.ApplicationWindow {
Component.onCompleted: {
manager.finishSetup();
+ rootItem.visible = true
+ diveDetails.opacity = 1
+ rootItem.opacity = 1
+ }
+ Behavior on opacity {
+ NumberAnimation {
+ duration: 200
+ easing.type: Easing.OutQuad
+ }
}
}