AndroidPlatform.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using Avalonia.Controls;
  3. using Avalonia.Android;
  4. using Avalonia.Android.Platform;
  5. using Avalonia.Android.Platform.Input;
  6. using Avalonia.Input;
  7. using Avalonia.Input.Platform;
  8. using Avalonia.OpenGL.Egl;
  9. using Avalonia.Platform;
  10. using Avalonia.Rendering;
  11. using Avalonia.Rendering.Composition;
  12. using Avalonia.OpenGL;
  13. namespace Avalonia
  14. {
  15. public static class AndroidApplicationExtensions
  16. {
  17. public static AppBuilder UseAndroid(this AppBuilder builder)
  18. {
  19. return builder
  20. .UseWindowingSubsystem(() => AndroidPlatform.Initialize(), "Android")
  21. .UseSkia();
  22. }
  23. }
  24. }
  25. namespace Avalonia.Android
  26. {
  27. class AndroidPlatform
  28. {
  29. public static readonly AndroidPlatform Instance = new AndroidPlatform();
  30. public static AndroidPlatformOptions Options { get; private set; }
  31. internal static Compositor Compositor { get; private set; }
  32. public static void Initialize()
  33. {
  34. Options = AvaloniaLocator.Current.GetService<AndroidPlatformOptions>() ?? new AndroidPlatformOptions();
  35. AvaloniaLocator.CurrentMutable
  36. .Bind<ICursorFactory>().ToTransient<CursorFactory>()
  37. .Bind<IWindowingPlatform>().ToConstant(new WindowingPlatformStub())
  38. .Bind<IKeyboardDevice>().ToSingleton<AndroidKeyboardDevice>()
  39. .Bind<IPlatformSettings>().ToSingleton<AndroidPlatformSettings>()
  40. .Bind<IPlatformThreadingInterface>().ToConstant(new AndroidThreadingInterface())
  41. .Bind<IPlatformIconLoader>().ToSingleton<PlatformIconLoaderStub>()
  42. .Bind<IRenderTimer>().ToConstant(new ChoreographerTimer())
  43. .Bind<PlatformHotkeyConfiguration>().ToSingleton<PlatformHotkeyConfiguration>();
  44. if (Options.UseGpu)
  45. {
  46. EglPlatformGraphics.TryInitialize();
  47. }
  48. Compositor = new Compositor(AvaloniaLocator.Current.GetService<IPlatformGraphics>());
  49. }
  50. }
  51. public sealed class AndroidPlatformOptions
  52. {
  53. public bool UseDeferredRendering { get; set; } = false;
  54. public bool UseGpu { get; set; } = true;
  55. }
  56. }