2019-09-01 11:56:12 +02:00
|
|
|
using Android.App;
|
2020-06-09 18:56:01 +02:00
|
|
|
using Android.Content;
|
2019-09-01 11:56:12 +02:00
|
|
|
using Android.Content.PM;
|
2020-06-09 18:56:01 +02:00
|
|
|
using Android.Net;
|
2019-09-01 11:56:12 +02:00
|
|
|
using Android.OS;
|
|
|
|
using Android.Views;
|
2020-04-19 03:20:25 +02:00
|
|
|
using Microsoft.Xna.Framework;
|
2021-04-22 19:26:07 +02:00
|
|
|
using Microsoft.Xna.Framework.Input;
|
2020-04-19 03:20:25 +02:00
|
|
|
using MLEM.Extensions;
|
2020-02-24 14:03:53 +01:00
|
|
|
using MLEM.Misc;
|
2019-09-01 11:56:12 +02:00
|
|
|
|
2019-12-05 22:09:11 +01:00
|
|
|
namespace Demos.Android {
|
2020-04-19 03:20:25 +02:00
|
|
|
[Activity(
|
|
|
|
Label = "@string/app_name",
|
|
|
|
MainLauncher = true,
|
|
|
|
Icon = "@drawable/icon",
|
|
|
|
AlwaysRetainTaskState = true,
|
|
|
|
LaunchMode = LaunchMode.SingleInstance,
|
|
|
|
ScreenOrientation = ScreenOrientation.UserLandscape,
|
|
|
|
ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.Keyboard | ConfigChanges.KeyboardHidden | ConfigChanges.ScreenSize
|
|
|
|
)]
|
|
|
|
public class Activity1 : AndroidGameActivity {
|
|
|
|
|
|
|
|
private GameImpl game;
|
|
|
|
private View view;
|
2019-09-01 11:56:12 +02:00
|
|
|
|
|
|
|
protected override void OnCreate(Bundle bundle) {
|
|
|
|
base.OnCreate(bundle);
|
2020-05-13 22:11:33 +02:00
|
|
|
// render under notches
|
|
|
|
if (Build.VERSION.SdkInt >= BuildVersionCodes.P)
|
|
|
|
this.Window.Attributes.LayoutInDisplayCutoutMode = LayoutInDisplayCutoutMode.ShortEdges;
|
2020-04-19 03:20:25 +02:00
|
|
|
|
2021-04-22 19:26:07 +02:00
|
|
|
TextInputWrapper.Current = new TextInputWrapper.Mobile(KeyboardInput.Show);
|
2020-04-19 03:20:25 +02:00
|
|
|
this.game = new GameImpl();
|
|
|
|
// reset MlemGame width and height to use device's aspect ratio
|
2020-04-19 03:24:43 +02:00
|
|
|
this.game.GraphicsDeviceManager.ResetWidthAndHeight(this.game.Window);
|
2020-06-09 18:56:01 +02:00
|
|
|
this.game.OnLoadContent += game => {
|
|
|
|
// disable mouse handling for android to make emulator behavior more coherent
|
|
|
|
game.InputHandler.HandleMouse = false;
|
|
|
|
// make text links be opened properly
|
|
|
|
game.UiSystem.LinkBehavior = l => this.StartActivity(new Intent(Intent.ActionView, Uri.Parse(l.Match.Groups[1].Value)));
|
|
|
|
};
|
2020-05-13 22:11:33 +02:00
|
|
|
// set the game to fullscreen to cause the status bar to be hidden
|
|
|
|
this.game.GraphicsDeviceManager.IsFullScreen = true;
|
2020-04-19 03:20:25 +02:00
|
|
|
this.view = this.game.Services.GetService(typeof(View)) as View;
|
|
|
|
this.SetContentView(this.view);
|
|
|
|
this.game.Run();
|
2019-09-01 11:56:12 +02:00
|
|
|
}
|
|
|
|
|
2020-05-13 22:11:33 +02:00
|
|
|
public override void OnWindowFocusChanged(bool hasFocus) {
|
|
|
|
base.OnWindowFocusChanged(hasFocus);
|
|
|
|
// hide the status bar
|
|
|
|
this.view.SystemUiVisibility = (StatusBarVisibility) (SystemUiFlags.LayoutStable | SystemUiFlags.LayoutHideNavigation | SystemUiFlags.LayoutFullscreen | SystemUiFlags.HideNavigation | SystemUiFlags.Fullscreen | SystemUiFlags.ImmersiveSticky);
|
|
|
|
}
|
|
|
|
|
2019-09-01 11:56:12 +02:00
|
|
|
}
|
|
|
|
}
|