diff --git a/src/Android/Avalonia.AndroidTestApplication/MainActivity.cs b/src/Android/Avalonia.AndroidTestApplication/MainActivity.cs index 514513bf35..f8979dcd71 100644 --- a/src/Android/Avalonia.AndroidTestApplication/MainActivity.cs +++ b/src/Android/Avalonia.AndroidTestApplication/MainActivity.cs @@ -1,11 +1,15 @@ using Android.App; using Android.Content.PM; using Android.OS; +using Android.Views; using Avalonia.Android; using Avalonia.Android.Platform.Specific; using Avalonia.Android.Platform.Specific.Helpers; +using Avalonia.Controls; using Avalonia.Controls.Platform; +using Avalonia.Media; using Avalonia.Platform; +using Avalonia.Skia.Android; using TestApplication; namespace Avalonia.AndroidTestApplication @@ -26,6 +30,7 @@ namespace Avalonia.AndroidTestApplication { base.OnCreate(savedInstanceState); + /* App app; if (Avalonia.Application.Current != null) app = (App)Avalonia.Application.Current; @@ -38,7 +43,83 @@ namespace Avalonia.AndroidTestApplication window.Show(); app.Run(window); + */ + + + + App app; + if (Avalonia.Application.Current != null) + app = (App)Avalonia.Application.Current; + else + { + app = new App(); + AppBuilder.Configure(app) + .UseAndroid() + .UseSkia() + .SetupWithoutStarting(); + } + + SetContentView(new MainView(this)); + + } - + + + + + + class MainView : SkiaRenderView + { + float _radians = 0; + public MainView(Activity context) : base(context) + { + } + + protected override void OnRender(DrawingContext ctx) + { + ctx.FillRectangle(Brushes.Green, new Rect(0, 0, Width, Height)); + + var rc = new Rect(0, 0, Width / 3, Height / 3); + using (ctx.PushPostTransform( + Avalonia.Matrix.CreateTranslation(-Width / 6, -Width / 6) * + Avalonia.Matrix.CreateRotation(_radians) * + Avalonia.Matrix.CreateTranslation(Width / 2, Height / 2))) + { + ctx.FillRectangle(new LinearGradientBrush() + { + GradientStops = + { + new GradientStop() {Color = Colors.Blue}, + new GradientStop(Colors.Red, 1) + } + }, rc, 5); + } + + + } + + public override bool OnTouchEvent(MotionEvent e) + { + if (e.Action == MotionEventActions.Down) + return true; + if (e.Action == MotionEventActions.Move) + { + _radians = (e.RawY + e.RawY) / 100; + Invalidate(); + return true; + } + return base.OnTouchEvent(e); + } + } + + + + + + + + + + } } \ No newline at end of file