From 6254985c9b3c492aa41a6f4e61c9cd403f1fcfc5 Mon Sep 17 00:00:00 2001 From: Tsanie Lily Date: Fri, 25 Feb 2022 13:53:52 +0800 Subject: [PATCH] and android --- .../Billing.Android/Billing.Android.csproj | 3 +- Billing/Billing.Android/Definition.cs | 17 ++-- .../Effects/ShadowEffectPlatform.cs | 35 +++---- Billing/Billing.Android/MainActivity.cs | 43 ++++----- Billing/Billing.Android/PlatformCulture.cs | 93 ++++++++++--------- .../Renderers/LongPressButtonRenderer.cs | 43 ++++----- .../Renderers/OptionEntryRenderer.cs | 29 +++--- .../Renderers/TintImageRenderer.cs | 47 +++++----- .../Resources/Resource.designer.cs | 2 +- 9 files changed, 160 insertions(+), 152 deletions(-) diff --git a/Billing/Billing.Android/Billing.Android.csproj b/Billing/Billing.Android/Billing.Android.csproj index 5f2f729..2d5dae2 100644 --- a/Billing/Billing.Android/Billing.Android.csproj +++ b/Billing/Billing.Android/Billing.Android.csproj @@ -37,7 +37,8 @@ false false false - x86_64 + x86_64;x86 +true true diff --git a/Billing/Billing.Android/Definition.cs b/Billing/Billing.Android/Definition.cs index 461ceb6..219fbe1 100644 --- a/Billing/Billing.Android/Definition.cs +++ b/Billing/Billing.Android/Definition.cs @@ -1,9 +1,10 @@ -namespace Billing.UI; - -public static partial class Definition +namespace Billing.UI { - public static partial string GetCascadiaRegularFontFamily() => "CascadiaCode-Regular.ttf#CascadiaCode-Regular"; - public static partial string GetCascadiaBoldFontFamily() => "CascadiaCode-Bold.ttf#CascadiaCode-Bold"; - public static partial string GetRobotoCondensedRegularFontFamily() => "RobotoCondensed-Regular.ttf#RobotoCondensed-Regular"; - public static partial string GetRobotoCondensedBoldFontFamily() => "RobotoCondensed-Bold.ttf#RobotoCondensed-Bold"; -} + public static partial class Definition + { + public static partial string GetCascadiaRegularFontFamily() => "CascadiaCode-Regular.ttf#CascadiaCode-Regular"; + public static partial string GetCascadiaBoldFontFamily() => "CascadiaCode-Bold.ttf#CascadiaCode-Bold"; + public static partial string GetRobotoCondensedRegularFontFamily() => "RobotoCondensed-Regular.ttf#RobotoCondensed-Regular"; + public static partial string GetRobotoCondensedBoldFontFamily() => "RobotoCondensed-Bold.ttf#RobotoCondensed-Bold"; + } +} \ No newline at end of file diff --git a/Billing/Billing.Android/Effects/ShadowEffectPlatform.cs b/Billing/Billing.Android/Effects/ShadowEffectPlatform.cs index 1ade44e..1f74bc4 100644 --- a/Billing/Billing.Android/Effects/ShadowEffectPlatform.cs +++ b/Billing/Billing.Android/Effects/ShadowEffectPlatform.cs @@ -8,26 +8,27 @@ using Xamarin.Forms.Platform.Android; [assembly: ResolutionGroupName("Org.Tsanie")] [assembly: ExportEffect(typeof(ShadowEffectPlatform), nameof(ShadowEffect))] -namespace Billing.Droid.Effects; - -public class ShadowEffectPlatform : PlatformEffect +namespace Billing.Droid.Effects { - protected override void OnAttached() + public class ShadowEffectPlatform : PlatformEffect { - try + protected override void OnAttached() { - var effect = (ShadowEffect)Element.Effects.FirstOrDefault(e => e is ShadowEffect); - var paint = new Paint(PaintFlags.AntiAlias); - paint.SetShadowLayer(effect.Radius, (float)effect.Offect.Width, (float)effect.Offect.Height, effect.Color.ToAndroid()); - Control.SetLayerPaint(paint); + try + { + var effect = (ShadowEffect)Element.Effects.FirstOrDefault(e => e is ShadowEffect); + var paint = new Paint(PaintFlags.AntiAlias); + paint.SetShadowLayer(effect.Radius, (float)effect.Offect.Width, (float)effect.Offect.Height, effect.Color.ToAndroid()); + Control.SetLayerPaint(paint); + } + catch (Exception ex) + { + Helper.Error("shadow.effect.attached", $"Cannot set property on attached control, error: {ex.Message}"); + } } - catch (Exception ex) - { - Helper.Error("shadow.effect.attached", $"Cannot set property on attached control, error: {ex.Message}"); - } - } - protected override void OnDetached() - { + protected override void OnDetached() + { + } } -} +} \ No newline at end of file diff --git a/Billing/Billing.Android/MainActivity.cs b/Billing/Billing.Android/MainActivity.cs index 5380d04..bfead9e 100644 --- a/Billing/Billing.Android/MainActivity.cs +++ b/Billing/Billing.Android/MainActivity.cs @@ -3,29 +3,30 @@ using Android.Content.PM; using Android.Runtime; using Android.OS; -namespace Billing.Droid; - -[Activity( - Label = "Billing", - Icon = "@mipmap/icon", - RoundIcon = "@mipmap/icon_round", - Theme = "@style/MainTheme", - MainLauncher = true, - ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize )] -public class MainActivity : Xamarin.Forms.Platform.Android.FormsAppCompatActivity +namespace Billing.Droid { - protected override void OnCreate(Bundle savedInstanceState) + [Activity( + Label = "Billing", + Icon = "@mipmap/icon", + RoundIcon = "@mipmap/icon_round", + Theme = "@style/MainTheme", + MainLauncher = true, + ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize)] + public class MainActivity : Xamarin.Forms.Platform.Android.FormsAppCompatActivity { - base.OnCreate(savedInstanceState); + protected override void OnCreate(Bundle savedInstanceState) + { + base.OnCreate(savedInstanceState); - Xamarin.Essentials.Platform.Init(this, savedInstanceState); - Xamarin.Forms.Forms.Init(this, savedInstanceState); - LoadApplication(new App()); - } - public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) - { - Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); + Xamarin.Essentials.Platform.Init(this, savedInstanceState); + Xamarin.Forms.Forms.Init(this, savedInstanceState); + LoadApplication(new App()); + } + public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) + { + Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); - base.OnRequestPermissionsResult(requestCode, permissions, grantResults); + base.OnRequestPermissionsResult(requestCode, permissions, grantResults); + } } -} +} \ No newline at end of file diff --git a/Billing/Billing.Android/PlatformCulture.cs b/Billing/Billing.Android/PlatformCulture.cs index f9dffa6..e1ef1e4 100644 --- a/Billing/Billing.Android/PlatformCulture.cs +++ b/Billing/Billing.Android/PlatformCulture.cs @@ -2,65 +2,66 @@ using System.Globalization; using System.Threading; -namespace Billing.Languages; - -public partial class PlatformCulture +namespace Billing.Languages { - public partial string GetNamespace() + public partial class PlatformCulture { - return typeof(MainActivity).Namespace; - } - - public partial void Init() - { - var locale = Java.Util.Locale.Default; - string lang = AndroidToDotnetLanguage($"{locale.Language}-{locale.Country}"); - - CultureInfo ci; - Init(lang); - try + public partial string GetNamespace() { - ci = new CultureInfo(Language); + return typeof(MainActivity).Namespace; } - catch (CultureNotFoundException e) + + public partial void Init() { + var locale = Java.Util.Locale.Default; + string lang = AndroidToDotnetLanguage($"{locale.Language}-{locale.Country}"); + + CultureInfo ci; + Init(lang); try { - var fallback = ToDotnetFallbackLanguage(); - Helper.Debug($"{lang} failed, trying {fallback} ({e.Message})"); - ci = new CultureInfo(fallback); + ci = new CultureInfo(Language); } - catch (CultureNotFoundException e1) + catch (CultureNotFoundException e) { - Helper.Error("culture.get", $"{lang} couldn't be set, using 'zh-CN' ({e1.Message})"); - ci = new CultureInfo("zh-CN"); + try + { + var fallback = ToDotnetFallbackLanguage(); + Helper.Debug($"{lang} failed, trying {fallback} ({e.Message})"); + ci = new CultureInfo(fallback); + } + catch (CultureNotFoundException e1) + { + Helper.Error("culture.get", $"{lang} couldn't be set, using 'zh-CN' ({e1.Message})"); + ci = new CultureInfo("zh-CN"); + } } + + Thread.CurrentThread.CurrentCulture = ci; + Thread.CurrentThread.CurrentUICulture = ci; + + Helper.Debug($"CurrentCulture set: {ci.Name}"); } - Thread.CurrentThread.CurrentCulture = ci; - Thread.CurrentThread.CurrentUICulture = ci; - - Helper.Debug($"CurrentCulture set: {ci.Name}"); - } - - private static string AndroidToDotnetLanguage(string androidLanguage) - { - //certain languages need to be converted to CultureInfo equivalent - string netLanguage = androidLanguage switch + private static string AndroidToDotnetLanguage(string androidLanguage) { - // Not supported .NET culture - "ms-BN" or "ms-MY" or "ms-SG" => "ms", // closest supported - // "Indonesian (Indonesia)" has different code in .NET - "in-ID" => "id-ID", // correct code for .NET - // "Schwiizertüütsch (Swiss German)" not supported .NET culture - "gsw-CH" => "de-CH", // closest supported + //certain languages need to be converted to CultureInfo equivalent + string netLanguage = androidLanguage switch + { + // Not supported .NET culture + "ms-BN" or "ms-MY" or "ms-SG" => "ms", // closest supported + // "Indonesian (Indonesia)" has different code in .NET + "in-ID" => "id-ID", // correct code for .NET + // "Schwiizertüütsch (Swiss German)" not supported .NET culture + "gsw-CH" => "de-CH", // closest supported - // add more application-specific cases here (if required) - // ONLY use cultures that have been tested and known to work + // add more application-specific cases here (if required) + // ONLY use cultures that have been tested and known to work - _ => androidLanguage, - }; - Helper.Debug($"Android Language: {androidLanguage}, .NET Language/Locale: {netLanguage}"); - return netLanguage; + _ => androidLanguage, + }; + Helper.Debug($"Android Language: {androidLanguage}, .NET Language/Locale: {netLanguage}"); + return netLanguage; + } } -} +} \ No newline at end of file diff --git a/Billing/Billing.Android/Renderers/LongPressButtonRenderer.cs b/Billing/Billing.Android/Renderers/LongPressButtonRenderer.cs index c1b76ad..99350b2 100644 --- a/Billing/Billing.Android/Renderers/LongPressButtonRenderer.cs +++ b/Billing/Billing.Android/Renderers/LongPressButtonRenderer.cs @@ -5,29 +5,30 @@ using Xamarin.Forms; using Xamarin.Forms.Platform.Android; [assembly: ExportRenderer(typeof(LongPressButton), typeof(LongPressButtonRenderer))] -namespace Billing.Droid.Renderers; - -public class LongPressButtonRenderer : ButtonRenderer +namespace Billing.Droid.Renderers { - public LongPressButtonRenderer(Context context) : base(context) + public class LongPressButtonRenderer : ButtonRenderer { - } - - protected override void OnElementChanged(ElementChangedEventArgs