C# .net9 Avalonia Android 开发环境搭建 demo运行

 

0 新建项目

image

 

image

 

image

 

1 搭建环境

安装环境

如何搭建Android开发环境 | Avalonia Docs

 

Setting up the Android SDK for Xamarin.Android - Xamarin | Microsoft Learn

 安装xamarin环境

image

 

 

image

 

image

 

 

 

image

 

image

 

image

 

 

image

 

 

image

 

 

 

 

 

image

 

image

 

 

 

image

 

 

 

 

 

 

 

 

image

 

image

 修改.net9

image

 

image

 

image

 修改目录下的文件指定 avalonia版本11.3.3

image

 

 

 

 3 使用avalonia Prism.DryIoc.Avalonia 框架

nuget 安装Prism.DryIoc.Avalonia

image

 

 

using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Data.Core.Plugins;
using Avalonia.Markup.Xaml;

using MyGoldTest.ViewModels;
using MyGoldTest.Views;  
using System;
using Prism.DryIoc;
using Prism.Ioc;
using Prism.Modularity;

namespace MyGoldTest;


public partial class App : PrismApplication
{
    public override void Initialize()
    {
        AvaloniaXamlLoader.Load(this);
        base.Initialize();  // Required to initialize Prism.Avalonia - DO NOT REMOVE
    }
    
    public override void OnFrameworkInitializationCompleted()
    {
        // Line below is needed to remove Avalonia data validation.
        // Without this line you will get duplicate validations from both Avalonia and CT
        BindingPlugins.DataValidators.RemoveAt(0);

        // if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
        // {
        //     desktop.MainWindow = new MainWindow
        //     {
        //          DataContext = new MainWindowViewModel()
        //     };
        // }
        // else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform)
        // {
        //     singleViewPlatform.MainView = new HomeView()
        //     {
        //          DataContext = new HomeViewViewModel()
        //     };
        // }

        base.OnFrameworkInitializationCompleted();
    }

    protected override AvaloniaObject CreateShell()
    {       
        GlobalCls.Container = Container;
     
    
         if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform)
        {
            //安卓不能使用Window,使用usercontrol
            return Container.Resolve<HomeView>();
        } 
        return Container.Resolve<MainWindow>();
    }
    
    protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
        // Add Services and ViewModel registrations here

        Console.WriteLine("RegisterTypes()");

        // Services
        //// containerRegistry.RegisterSingleton<ISampleService, ISampleService>();

        // Views - Region Navigation
        //// containerRegistry.RegisterForNavigation<DashboardView, DashboardViewModel>();

        // Dialogs
        //// containerRegistry.RegisterDialog<MessageBoxView, MessageBoxViewModel>();
        //// containerRegistry.RegisterDialogWindow<CustomDialogWindow>(nameof(CustomDialogWindow));
        ///
        containerRegistry.RegisterForNavigation<FooterView,FooterViewViewModel>();
        containerRegistry.RegisterForNavigation<HeaderView,HeaderViewViewModel>();
        containerRegistry.RegisterForNavigation<BodyView,BodyViewViewModel>();
        containerRegistry.RegisterForNavigation<HomeView,HomeViewViewModel>();
        containerRegistry.RegisterForNavigation<Page1View,Page1ViewViewModel>();
        containerRegistry.RegisterForNavigation<Page2View,Page2ViewViewModel>();
        containerRegistry.RegisterForNavigation<Page3View,Page3ViewViewModel>();
        containerRegistry.RegisterForNavigation<Page4View,Page4ViewViewModel>();
    }

    protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
    {
        // Register modules
        //// moduleCatalog.AddModule<DummyModule.DummyModule1>();
    }
}

  

 

4 运行效果

image

 

 

image

 

image

 

image

 

 

 5 禁用启动动画

image

 

    <!-- 添加这行来禁用启动画面 -->
    <item name="android:windowDisablePreview">true</item>

  

 

posted @ 2025-08-09 14:54  JohnnyLei  阅读(269)  评论(0)    收藏  举报