From 0ee7f74efd0f54b39bb7eebedfb6805d4f4de440 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sun, 19 Apr 2020 03:20:25 +0200 Subject: [PATCH] updated and fixed android demo --- Demos.Android/Activity1.cs | 37 ++-- Demos.Android/Demos.Android.csproj | 194 +++++++++---------- Demos.Android/Properties/AndroidManifest.xml | 8 +- Demos.Android/Properties/AssemblyInfo.cs | 19 +- Demos.Android/Resources/Drawable/Icon.png | Bin 24313 -> 27076 bytes Demos.Android/Resources/Drawable/Splash.png | Bin 33526 -> 0 bytes Demos.Android/Resources/Resource.Designer.cs | 24 +-- Demos.Android/Resources/Values/Strings.xml | 3 +- Demos.Android/Resources/Values/Styles.xml | 7 - Demos.Android/packages.config | 7 - MLEM.sln | 12 +- MLEM/Extensions/GraphicsExtensions.cs | 7 + 12 files changed, 137 insertions(+), 181 deletions(-) delete mode 100644 Demos.Android/Resources/Drawable/Splash.png delete mode 100644 Demos.Android/Resources/Values/Styles.xml delete mode 100644 Demos.Android/packages.config diff --git a/Demos.Android/Activity1.cs b/Demos.Android/Activity1.cs index 30426cf..91fdb3c 100644 --- a/Demos.Android/Activity1.cs +++ b/Demos.Android/Activity1.cs @@ -2,27 +2,38 @@ using Android.App; using Android.Content.PM; using Android.OS; using Android.Views; +using Microsoft.Xna.Framework; +using MLEM.Extensions; using MLEM.Misc; namespace Demos.Android { - [Activity(Label = "Demos.Android" - , MainLauncher = true - , Icon = "@drawable/icon" - , Theme = "@style/Theme.Splash" - , AlwaysRetainTaskState = true - , LaunchMode = LaunchMode.SingleInstance - , ScreenOrientation = ScreenOrientation.UserLandscape - , ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.Keyboard | ConfigChanges.KeyboardHidden | ConfigChanges.ScreenSize)] - public class Activity1 : Microsoft.Xna.Framework.AndroidGameActivity { + [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; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); + TextInputWrapper.Current = new TextInputWrapper.Mobile(); - var g = new GameImpl(); + this.game = new GameImpl(); + // reset MlemGame width and height to use device's aspect ratio + this.game.GraphicsDeviceManager.ResetWidthAndHeight(this.game); // disable mouse handling for android to make emulator behavior more coherent - g.OnLoadContent += game => game.InputHandler.HandleMouse = false; - this.SetContentView((View) g.Services.GetService(typeof(View))); - g.Run(); + this.game.OnLoadContent += game => game.InputHandler.HandleMouse = false; + this.view = this.game.Services.GetService(typeof(View)) as View; + + this.SetContentView(this.view); + this.game.Run(); } } diff --git a/Demos.Android/Demos.Android.csproj b/Demos.Android/Demos.Android.csproj index efa5477..3e49ddd 100644 --- a/Demos.Android/Demos.Android.csproj +++ b/Demos.Android/Demos.Android.csproj @@ -1,106 +1,92 @@ - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {410C0262-131C-4D0E-910D-D01B4F7143E0} - {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Library - Properties - Demos.Android - Demos.Android - 512 - true - Resources\Resource.Designer.cs - Off - armeabi-v7a;x86 - .m4a - - v7.1 - Android - Properties\AndroidManifest.xml - True - - - true - full - false - bin\$(MonoGamePlatform)\$(Platform)\$(Configuration)\ - DEBUG;TRACE;ANDROID - prompt - 4 - True - None - - - pdbonly - true - bin\$(MonoGamePlatform)\$(Platform)\$(Configuration)\ - TRACE;ANDROID - prompt - 4 - False - SdkOnly - - - - ..\packages\Coroutine.1.0.2\lib\netstandard2.0\Coroutine.dll - True - - - - - ..\packages\Newtonsoft.Json.11.0.2\lib\netstandard2.0\Newtonsoft.Json.dll - True - - - - - - - $(MonoGameInstallDirectory)\MonoGame\v3.0\Assemblies\Android\MonoGame.Framework.dll - - - ..\packages\TextCopy.3.0.0\lib\netstandard2.1\TextCopy.dll - True - - - - - - - - - - - - - - - - - - - - - - - - {1bc4682b-aa14-4937-b5c7-707e20fe88ff} - Demos - - - {997f4739-7bec-4621-b9ca-68deb2d74412} - MLEM.Startup - - - {1d6ab762-43c4-4775-8924-707c7ec3f142} - MLEM - - - - - \ No newline at end of file + + Debug + AnyCPU + 8.0.30703 + 2.0 + {410C0262-131C-4D0E-910D-D01B4F7143E0} + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Library + Properties + Demos.Android + Demos.Android + 512 + true + Resources\Resource.Designer.cs + Resource + Off + .m4a + v9.0 + Properties\AndroidManifest.xml + false + Resources + Assets + true + Xamarin.Android.Net.AndroidClientHandler + + + true + full + false + bin\$(MonoGamePlatform)\$(Platform)\$(Configuration)\ + DEBUG;TRACE;ANDROID + prompt + 4 + True + None + + + pdbonly + true + bin\$(MonoGamePlatform)\$(Platform)\$(Configuration)\ + TRACE;ANDROID + prompt + 4 + False + SdkOnly + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {1bc4682b-aa14-4937-b5c7-707e20fe88ff} + Demos + + + {997f4739-7bec-4621-b9ca-68deb2d74412} + MLEM.Startup + + + {1d6ab762-43c4-4775-8924-707c7ec3f142} + MLEM + + + + diff --git a/Demos.Android/Properties/AndroidManifest.xml b/Demos.Android/Properties/AndroidManifest.xml index 4dbed57..5b4220a 100644 --- a/Demos.Android/Properties/AndroidManifest.xml +++ b/Demos.Android/Properties/AndroidManifest.xml @@ -1,5 +1,5 @@  - - - - \ No newline at end of file + + + + diff --git a/Demos.Android/Properties/AssemblyInfo.cs b/Demos.Android/Properties/AssemblyInfo.cs index aecac0d..7b7db38 100644 --- a/Demos.Android/Properties/AssemblyInfo.cs +++ b/Demos.Android/Properties/AssemblyInfo.cs @@ -7,22 +7,15 @@ using Android.App; // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("Demos.Android")] -[assembly: AssemblyProduct("Demos.Android")] -[assembly: AssemblyConfiguration("")] [assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyCopyright("Copyright © 2017")] +[assembly: AssemblyProduct("Demos.Android")] +[assembly: AssemblyCopyright("Copyright © 2018")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("6f377592-2266-4c47-855e-6260ff75e1f4")] - // Version information for an assembly consists of the following four values: // // Major Version @@ -34,8 +27,4 @@ using Android.App; // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] - -// Add some common permissions, these can be removed if not needed -[assembly: UsesPermission(Android.Manifest.Permission.Internet)] -[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)] \ No newline at end of file +[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/Demos.Android/Resources/Drawable/Icon.png b/Demos.Android/Resources/Drawable/Icon.png index f6f4f411136ab86ead0158ea9b18647f254ba2c6..25fe044482ebc8cf48bc4c566e934edde8a4bc23 100644 GIT binary patch delta 5000 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 Jli!F}{tK?(`z8PY delta 1833 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 diff --git a/Demos.Android/Resources/Resource.Designer.cs b/Demos.Android/Resources/Resource.Designer.cs index 64174da..a040fa0 100644 --- a/Demos.Android/Resources/Resource.Designer.cs +++ b/Demos.Android/Resources/Resource.Designer.cs @@ -47,9 +47,6 @@ namespace Demos.Android // aapt resource value: 0x7F010000 public const int Icon = 2130771968; - // aapt resource value: 0x7F010001 - public const int Splash = 2130771969; - static Drawable() { global::Android.Runtime.ResourceIdManager.UpdateIdValues(); @@ -64,10 +61,7 @@ namespace Demos.Android { // aapt resource value: 0x7F020000 - public const int ApplicationName = 2130837504; - - // aapt resource value: 0x7F020001 - public const int Hello = 2130837505; + public const int app_name = 2130837504; static String() { @@ -78,22 +72,6 @@ namespace Demos.Android { } } - - public partial class Style - { - - // aapt resource value: 0x7F030000 - public const int Theme_Splash = 2130903040; - - static Style() - { - global::Android.Runtime.ResourceIdManager.UpdateIdValues(); - } - - private Style() - { - } - } } } #pragma warning restore 1591 diff --git a/Demos.Android/Resources/Values/Strings.xml b/Demos.Android/Resources/Values/Strings.xml index 540633f..a2890aa 100644 --- a/Demos.Android/Resources/Values/Strings.xml +++ b/Demos.Android/Resources/Values/Strings.xml @@ -1,5 +1,4 @@ - Hello World, Click Me! - Demos.Android + Demos.Android diff --git a/Demos.Android/Resources/Values/Styles.xml b/Demos.Android/Resources/Values/Styles.xml deleted file mode 100644 index 5102134..0000000 --- a/Demos.Android/Resources/Values/Styles.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/Demos.Android/packages.config b/Demos.Android/packages.config deleted file mode 100644 index 6471cfa..0000000 --- a/Demos.Android/packages.config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/MLEM.sln b/MLEM.sln index 1fa8130..49e9478 100644 --- a/MLEM.sln +++ b/MLEM.sln @@ -14,12 +14,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demos.DesktopGL", "Demos.De EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sandbox", "Sandbox\Sandbox.csproj", "{289ABC96-7A0B-4EB9-A0BE-75C807C09F74}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demos.Android", "Demos.Android\Demos.Android.csproj", "{410C0262-131C-4D0E-910D-D01B4F7143E0}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MLEM.Data", "MLEM.Data\MLEM.Data.csproj", "{28938AAA-FB91-4E6F-8511-0DB99EC831F7}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MLEM.Templates", "MLEM.Templates\MLEM.Templates.csproj", "{C2A2CFED-C9E8-4675-BD66-EFC3DB210977}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demos.Android", "Demos.Android\Demos.Android.csproj", "{410C0262-131C-4D0E-910D-D01B4F7143E0}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -54,10 +54,6 @@ Global {289ABC96-7A0B-4EB9-A0BE-75C807C09F74}.Debug|Any CPU.Build.0 = Debug|Any CPU {289ABC96-7A0B-4EB9-A0BE-75C807C09F74}.Release|Any CPU.ActiveCfg = Release|Any CPU {289ABC96-7A0B-4EB9-A0BE-75C807C09F74}.Release|Any CPU.Build.0 = Release|Any CPU - {410C0262-131C-4D0E-910D-D01B4F7143E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {410C0262-131C-4D0E-910D-D01B4F7143E0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {410C0262-131C-4D0E-910D-D01B4F7143E0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {410C0262-131C-4D0E-910D-D01B4F7143E0}.Release|Any CPU.Build.0 = Release|Any CPU {28938AAA-FB91-4E6F-8511-0DB99EC831F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {28938AAA-FB91-4E6F-8511-0DB99EC831F7}.Debug|Any CPU.Build.0 = Debug|Any CPU {28938AAA-FB91-4E6F-8511-0DB99EC831F7}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -66,5 +62,9 @@ Global {C2A2CFED-C9E8-4675-BD66-EFC3DB210977}.Debug|Any CPU.Build.0 = Debug|Any CPU {C2A2CFED-C9E8-4675-BD66-EFC3DB210977}.Release|Any CPU.ActiveCfg = Release|Any CPU {C2A2CFED-C9E8-4675-BD66-EFC3DB210977}.Release|Any CPU.Build.0 = Release|Any CPU + {410C0262-131C-4D0E-910D-D01B4F7143E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {410C0262-131C-4D0E-910D-D01B4F7143E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {410C0262-131C-4D0E-910D-D01B4F7143E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {410C0262-131C-4D0E-910D-D01B4F7143E0}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/MLEM/Extensions/GraphicsExtensions.cs b/MLEM/Extensions/GraphicsExtensions.cs index bcd4487..a2ac8f6 100644 --- a/MLEM/Extensions/GraphicsExtensions.cs +++ b/MLEM/Extensions/GraphicsExtensions.cs @@ -39,6 +39,13 @@ namespace MLEM.Extensions { manager.ApplyChanges(); } + public static void ResetWidthAndHeight(this GraphicsDeviceManager manager, Game game) { + var (_, _, width, height) = game.Window.ClientBounds; + manager.PreferredBackBufferWidth = Math.Max(height, width); + manager.PreferredBackBufferHeight = Math.Min(height, width); + manager.ApplyChanges(); + } + public static TargetContext WithRenderTarget(this GraphicsDevice device, RenderTarget2D target) { return new TargetContext(device, target); }