8 changed files with 96 additions and 70 deletions
@ -0,0 +1,34 @@ |
|||||
|
using Android.OS; |
||||
|
using AndroidX.AppCompat.App; |
||||
|
using AndroidX.Lifecycle; |
||||
|
|
||||
|
namespace Avalonia.Android |
||||
|
{ |
||||
|
public abstract class AvaloniaSplashActivity : AppCompatActivity |
||||
|
{ |
||||
|
protected abstract AppBuilder CreateAppBuilder(); |
||||
|
|
||||
|
protected override void OnCreate(Bundle? savedInstanceState) |
||||
|
{ |
||||
|
base.OnCreate(savedInstanceState); |
||||
|
|
||||
|
var builder = CreateAppBuilder(); |
||||
|
|
||||
|
var lifetime = new SingleViewLifetime(); |
||||
|
|
||||
|
builder.SetupWithLifetime(lifetime); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public abstract class AvaloniaSplashActivity<TApp> : AvaloniaSplashActivity where TApp : Application, new() |
||||
|
{ |
||||
|
protected virtual AppBuilder CustomizeAppBuilder(AppBuilder builder) => builder.UseAndroid(); |
||||
|
|
||||
|
protected override AppBuilder CreateAppBuilder() |
||||
|
{ |
||||
|
var builder = AppBuilder.Configure<TApp>(); |
||||
|
|
||||
|
return CustomizeAppBuilder(builder); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,26 @@ |
|||||
|
using Avalonia.Controls; |
||||
|
using Avalonia.Controls.ApplicationLifetimes; |
||||
|
|
||||
|
namespace Avalonia.Android |
||||
|
{ |
||||
|
internal class SingleViewLifetime : ISingleViewApplicationLifetime |
||||
|
{ |
||||
|
private AvaloniaView _view; |
||||
|
|
||||
|
public AvaloniaView View |
||||
|
{ |
||||
|
get => _view; internal set |
||||
|
{ |
||||
|
if (_view != null) |
||||
|
{ |
||||
|
_view.Content = null; |
||||
|
_view.Dispose(); |
||||
|
} |
||||
|
_view = value; |
||||
|
_view.Content = MainView; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public Control MainView { get; set; } |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue