protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); requestedOrientation = (ApplicationOptions.OrientationType)Intent.GetIntExtra(nameof(ApplicationOptions.OrientationType), 0); switch (requestedOrientation) { case ApplicationOptions.OrientationType.Landscape: RequestedOrientation = ScreenOrientation.SensorLandscape; break; case ApplicationOptions.OrientationType.Portrait: RequestedOrientation = ScreenOrientation.SensorPortrait; break; case ApplicationOptions.OrientationType.LandscapeAndPortrait: RequestedOrientation = ScreenOrientation.Unspecified; break; } SDLSurface surface = SDLActivity.CreateSurface(this); FrameLayout layout = new FrameLayout(this); layout.AddView(surface); SetContentView(layout); }
public async Task <Application> Show(Type appType, ApplicationOptions options = null, bool finishActivityOnExit = false) { await Stop(); if (SDLSurface != null) { RemoveView(SDLSurface); } SDLSurface = SDLActivity.CreateSurface(Context as Activity); AddView(SDLSurface, ViewGroup.LayoutParams.MatchParent); var tcs = new TaskCompletionSource <Application>(); Action startedHandler = null; startedHandler = () => { Application.Started -= startedHandler; tcs.TrySetResult(Application.Current); }; Application.Started += startedHandler; UrhoSurface.SetSdlMain(() => Application.CreateInstance(appType, options), finishActivityOnExit, SDLSurface); return(await tcs.Task); }
public static async Task Stop(this SDLSurface surface) { if (Application.HasCurrent && Application.Current.IsActive) { await Application.Current.Exit(); } }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); var mLayout = new FrameLayout(this); surface = UrhoSurface.CreateSurface(this, typeof(MySample)); //surface.Background.SetAlpha(10); TextView txtView = new TextView(this); txtView.SetBackgroundColor(Color.Violet); txtView.SetWidth(10); txtView.SetHeight(10); txtView.Text = "HAHAH"; //txtView.Text = surface.Background.ToString(); Button btn = new Button(this); btn.SetBackgroundColor(Color.Transparent); btn.Text = "Button"; btn.SetHeight(100); btn.SetWidth(100); btn.SetX(30); btn.SetY(30); btn.TextAlignment = TextAlignment.Center; mLayout.AddView(txtView); mLayout.AddView(btn); mLayout.AddView(surface); SetContentView(mLayout); }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); var mLayout = new AbsoluteLayout(this); surface = UrhoSurface.CreateSurface(this, Type.GetType(Intent.GetStringExtra("Type")), new ApplicationOptions("Data"), true); mLayout.AddView(surface); SetContentView(mLayout); }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); var mLayout = new AbsoluteLayout(this); surface = UrhoSurface.CreateSurface(this, typeof(UrhoApp), new ApplicationOptions("Data"), true); mLayout.AddView(surface); SetContentView(mLayout); }
static void SetSDLEntryCallback(bool finishActivityOnExit, SDLSurface surface) { __surface = new AndroidSDLSurface(surface); SDLActivity.FinishActivityOnNativeExit = finishActivityOnExit; RegisterSDLEntryCallback(() => { return(Application.Run(appDelegateType, new string[0])); }); }
public static void Remove(this SDLSurface surface) { var vg = surface?.Parent as ViewGroup; if (surface != null && vg != null) { //vg.RemoveView(SdlSurface); surface.Enabled = false; surface.Visibility = ViewStates.Gone; } }
public async Task <Application> Show(Type appType, ApplicationOptions options = null, bool finishActivityOnExit = false) { Stop(); launching = true; if (SDLSurface != null) { RemoveView(SDLSurface); } SDLSurface = SDLActivity.CreateSurface(Context as Activity); AddView(SDLSurface, ViewGroup.LayoutParams.MatchParent); // Reflection <UrhoSurfacePlaceholder>: Urho.Application.CurrentSurface = new WeakReference(SDLSurface); var currentSurface = typeof(Application).GetProperty(nameof(Application.CurrentSurface), BindingFlags.Public | BindingFlags.Static | BindingFlags.GetProperty); currentSurface.SetValue(default, new WeakReference(SDLSurface));
async void OnRestart(object sender, EventArgs e) { if (surface != null) { await surface.Stop(); await Task.Yield(); var viewGroup = surface.Parent as ViewGroup; viewGroup?.RemoveView(surface); } surface = UrhoSurface.CreateSurface(this); placeholder.AddView(surface); game = await surface.Show <Game>(new Urho.ApplicationOptions()); }
public static async Task <Application> Show(this SDLSurface surface, Type appType, ApplicationOptions options = null, bool finishActivityOnExit = false) { //await semaphore.WaitAsync(); await Stop(surface); var tcs = new TaskCompletionSource <Application>(); Action startedHandler = null; startedHandler = () => { Application.Started -= startedHandler; tcs.TrySetResult(Application.Current); //semaphore.Release(); }; Application.Started += startedHandler; UrhoSurface.SetSdlMain(() => Application.CreateInstance(appType, options), finishActivityOnExit, surface); return(await tcs.Task); }
public static void SavePNG(SDLSurface Surface, IntPtr Dst, bool Freedst) { Util.ThrowIfResultIsError(SDL_image.IMG_SavePNG_RW(Surface.Ptr, Dst, Convert.ToInt32(Freedst))); }
AndroidSDLSurface(SDLSurface sdlSurface) { SdlSurface = sdlSurface; }
internal static void SetSdlMain(Func <Application> applicationFactory, bool finishActivityOnExit, SDLSurface surface) { SDLActivity.FinishActivityOnNativeExit = finishActivityOnExit; RegisterSdlLauncher(_ => { var app = applicationFactory(); app.UrhoSurface = surface; var code = app.Run(); Log.Warn("URHOSHARP", "App exited: " + code); return(code); }); }
UrhoSurface(SDLSurface sdlSurface) { SdlSurface = sdlSurface; }
public static void SavePNG(SDLSurface Surface, string File) { Util.ThrowIfResultIsError(SDL_image.IMG_SavePNG(Surface.Ptr, File)); }
public static async Task <TApplication> Show <TApplication>(this SDLSurface surface, ApplicationOptions options = null, bool finishActivityOnExit = false) where TApplication : Application { return((TApplication) await Show(surface, typeof(TApplication), options, finishActivityOnExit)); }
static void SetSDLEntryCallback(bool finishActivityOnExit, SDLSurface surface) { __surface = new AndroidSDLSurface(surface); SDLActivity.FinishActivityOnNativeExit = finishActivityOnExit; RegisterSDLEntryCallback( () => { return Application.Run(appDelegateType, new string[0]); }); }