Jason, In order to avoid multiple images to handle different screen resolutions I decided to implement my launch image using Qml only. For that reason I have omitted launch images for both iOS and Android.
The only disadvantage is that it looks a bit black on the beginning compared with other apps opening, but I have a consistent behaviour across platforms. One of the most interesting advantages is that you can have a dynamic splash screen. This is how my main qml file looks like: import QtQuick 2.4 import QtQuick.Window 2.2 import Imaginando 1.0 Window { id: window visible: true color: "black" width: 1024 height: 768 onWidthChanged: deviceScreenSize() onHeightChanged: deviceScreenSize() Component.onCompleted: { if (!controller.loaded) { splash.state="start" deviceScreenSize() } } property string prefix: "" property real scaleFactor: 1 property alias style: styleLoader.item property var storeModel property real currentWidth: 0 property real currentHeight: 0 signal styleLoaded function deviceScreenSize() { if (currentWidth==width) return if (currentHeight==height) return currentWidth=width currentHeight=height var size = Math.round(Math.sqrt(width*width+height*height)/Screen.pixelDensity/25.4) var screenSizeMin var screenSizeMax var scaleFactorMin var scaleFactorMax if (size>=7) { screenSizeMin=7 screenSizeMax=12.2 scaleFactorMin=0.75 scaleFactorMax=1.25 styleLoader.source="qrc:/styles/"+window.prefix+"TabletStyle.qml" console.log("Device is tablet") } else { screenSizeMin=4 screenSizeMax=7 scaleFactorMin=0.75 scaleFactorMax=1.25 styleLoader.source="qrc:/styles/"+window.prefix+"PhoneStyle.qml" console.log("Device is phone") } scaleFactor = scaleFactorMin+((size-screenSizeMin)/(screenSizeMax-screenSizeMin))*(scaleFactorMax-scaleFactorMin) } function mmToPx(measure) { return Math.round(Screen.pixelDensity)*measure*scaleFactor } Loader { id: styleLoader onStatusChanged:{ if (styleLoader.status== Loader.Ready) window.styleLoaded() } } FontLoader { id: mainFont source: "qrc:/fonts/OpenSans-Regular.ttf" } Timer { id: timer interval: 250; repeat: false onTriggered: splash.state = "start" } SplashView { id: splash width: window.width height: window.height onReady: loader.source = Qt.resolvedUrl("MainView.qml") } Loader { id: loader anchors.fill: parent asynchronous: true visible: status == Loader.Ready onLoaded: { splash.visible = false splash.destroy() controller.loaded=true } } } Nuno Santos Founder / CEO / CTO www.imaginando.pt +351 91 621 69 62 > On 05 Aug 2015, at 16:03, Jason H <jh...@gmx.com> wrote: > > This question is 50% Qt and 50% Android. Now that I have a launch screen > working in iOS, I'd like the same thing in Android. > > Now, iOS lists the launch screen separately from the rest of the application, > so it can be loaded without having to load the whole app. I'm not sure this > is the case in Android. Most android tutorials just create a Activity > subclass with a timeout. > > I was wondering if: > 1) There is a true launch screen for android (not just faking it with a > timeout - I want it to only be displayed for as long as the app is loading), > 2) How I can accomplish it in Qt? I *think* some people may have done > something with a Loader Element to create a stub, then dynamically load the > screens, but I'm not sure of what all that entails, and if there are any > caveats. > 2a) Also, do I need to provide an Activity, or can I do it all in Qt/QML? > 2b) Is there any actual perceived benefit? The iOS makes the app seem more > responsive in a way, and the loading time is not significantly increased. > > Many thanks in advance. > _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest