I’ve got a minor issue with Android splash screens which would be nice to solve. My game is designed for landscape only, and if I have my device in portrait mode when I launch the game, it all works fine except that the splash screen doesn’t show. When I tap the icon, the system seems to freeze for a few seconds instead of showing the splash screen, and then the orientation switches and the game appears post-splash. If the device is in landscape orientation already when I start the game, the splash screen appears fine.
I’ve tested and noticed this on two devices running older Android versions - one runs 5.1 and the the other is 6.0. I also notice that the splash screen does show on newer emulated versions regardless of the orientation, so maybe this is specific to certain OS versions.
This can be recreated by making a new empty MG Android project with the following things set:
I have found a lot of issues with orientation and resolution on Android.
I have a couple of fixes for this, you can find the build here
You’d have to set ScreenOrientation = ScreenOrientation.FullSensor and leave it at that.
It will take the orientation from _graphics.SupportedOrientations.
Also, don’t set the graphics.PreferredBackBufferWidth/Height. On android those values are set automatically to the native window bounds.
Thanks for the reply - ah so it’s not just me then! I used to have FullSensor, but I didn’t like how the splash screen was also portrait if I launch in portrait mode! Maybe I can come up with a better splash that looks good in portrait and landscape!
I just got round to trying this - if I put FullUser in the activity metadata, the and launches in portrait mode even if I have _graphics.SupportedOrientations set to Labdscape only.
I might try creating a separate activity for my splash screen and see if that helps at all.
FullUser will set the orientation to whatever the user has set as his/her preference, and the functionality of SupportedOrientations has been stripped from MG, it doesn’t do anything nowadays.
I suppose the splash screen is controlled from the app metadata and shown by the OS before your app code is loaded/run.
Additionally, do not push the limits of MG further that what it can handle, leave the activity1.cs as is -being the first and only activity- and do thing from inside the game1.cs. Scenarios where you load/unload multiple AndroidGameActivity instances are not supported/tested and will most likely corrupt internal MG state.