经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » ASP.net » 查看文章
.NET MAUI 安卓应用开发初体验
来源:cnblogs  作者:徐业贵  时间:2022/11/28 9:00:59  对本文有异议

一、.NET MAUI开发环境搭建&安卓SDK和安卓模拟器安装提示网络连接失败问题解决

引言

本节目标是帮助第一次搭建.NET MAUI开发环境,在下载安卓SDK和安卓模拟器过程中一直提示网络问题解决思路。

现象一:Visiual Studio 2022中添加Android设备管理时,提示系统映像下载错误:Network is not reachable. Please check your connection and try again.

现象二:Visiual Studio 2022中添加Android SDK和工具时,提示"网络不可用。请检查你的连接,然后再重试"

.NET MAUI 简介

官方文档

什么是 .NET MAUI? - .NET MAUI | Microsoft Learn

.NET Multi-platform App UI (.NET MAUI) is a cross-platform framework for creating native mobile and desktop apps with C# and XAML.

Using .NET MAUI, you can develop apps that can run on Android, iOS, macOS, and Windows from a single shared code-base.

image

.NET MAUI 全称 .NET Multi-platform App UI

开发环境介绍

VS版本:Microsoft Visual Studio Community 2022 (64 位) - Current 版本 17.4.1

.NET 版本:.NET 7.0 STS

安装【 .NET Multi-platform App UI 开发】

Android SDK 和 安卓模拟器

这里直接介绍出现网络问题后,解决方案

1、查看VS中 Android SDK 保存位置

2、安装 JAVA JDK,并配置在系统环境中JAVA_HOME (可以选择JDK11或者JDK 8.0)

3、下载并安装 Android Studio

4、启动Android Studio,设置国内镜像

镜像地址:http://mirrors.neusoft.edu.cn/

5、设置 Android SDK 保存位置,将Android Studio 中SDK 保存位置 和 VS 中一样

6、下载对应的Android SDK 和 Android Emulator

7、通过AVD Manager新建安卓模拟设备

二、第一个.NET MAUI 安卓应用程序

跟着官方文档,开启第一个.NET MAUI 程序

新建一个.NET MAUI应用程序

运行效果

项目截图

MainViewModel

新建ViewModel文件夹,添加MainViewModel类,继承ObservableObject。通过NuGet添加CommunityToolkit.Mvvm 8.1.0-preview1 依赖项。

  1. public partial class MainViewModel : ObservableObject
  2. {
  3. public MainViewModel()
  4. {
  5. this.Items= new ObservableCollection<string>();
  6. }
  7. [ObservableProperty]
  8. public string inputText;
  9. [ObservableProperty]
  10. public ObservableCollection<string> items;
  11. [RelayCommand]
  12. public void Add()
  13. {
  14. if (!string.IsNullOrWhiteSpace(InputText))
  15. {
  16. Items.Add(InputText);
  17. InputText = string.Empty;
  18. }
  19. }
  20. [RelayCommand]
  21. public void Remove(string item)
  22. {
  23. if (Items.Contains(item))
  24. {
  25. Items.Remove(item);
  26. }
  27. }
  28. }

MainPage.xaml

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
  4. x:Class="MauiAppMvvM.MainPage"
  5. xmlns:viewModel="clr-namespace:MauiAppMvvM.ViewModel"
  6. x:DataType="viewModel:MainViewModel"
  7. x:Name="mainPage">
  8. <Grid RowDefinitions="100, Auto, *"
  9. ColumnDefinitions=".75*, .25*"
  10. Padding="10"
  11. RowSpacing="10"
  12. ColumnSpacing="10">
  13. <Image Grid.ColumnSpan="2"
  14. Source="dotnet_bot.svg"
  15. BackgroundColor="Orange"/>
  16. <Entry Placeholder="请输入您的任务项"
  17. Grid.Row="1"
  18. Grid.Column="0"
  19. Keyboard="Chat"
  20. Text ="{Binding InputText}"/>
  21. <Button Text="Add"
  22. Grid.Row="1"
  23. Grid.Column="1"
  24. Command="{Binding AddCommand}" />
  25. <CollectionView Grid.Row="2"
  26. Grid.ColumnSpan="2"
  27. ItemsSource="{Binding Items}">
  28. <CollectionView.ItemTemplate >
  29. <DataTemplate x:DataType="{x:Type x:String}">
  30. <SwipeView>
  31. <SwipeView.RightItems>
  32. <SwipeItem Text="Delete"
  33. IconImageSource="delete.png"
  34. BackgroundColor="LightPink"
  35. Command="{Binding Source={RelativeSource AncestorType={x:Type viewModel:MainViewModel}}, Path=RemoveCommand}"
  36. CommandParameter="{Binding .}"/>
  37. </SwipeView.RightItems>
  38. <Grid Padding="0,5">
  39. <Frame>
  40. <Label Text="{Binding .}"
  41. FontSize="24"/>
  42. </Frame>
  43. </Grid>
  44. </SwipeView>
  45. </DataTemplate>
  46. </CollectionView.ItemTemplate>
  47. </CollectionView>
  48. </Grid>
  49. </ContentPage>

MainPage.xaml.cs

  1. public MainPage(MainViewModel viewModel)
  2. {
  3. InitializeComponent();
  4. this.BindingContext = viewModel;
  5. }

MauiProgram.cs

  1. public static class MauiProgram
  2. {
  3. public static MauiApp CreateMauiApp()
  4. {
  5. var builder = MauiApp.CreateBuilder();
  6. builder
  7. .UseMauiApp<App>()
  8. .ConfigureFonts(fonts =>
  9. {
  10. fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
  11. fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
  12. });
  13. #if DEBUG
  14. builder.Logging.AddDebug();
  15. #endif
  16. builder.Services.AddSingleton<MainPage>();
  17. builder.Services.AddSingleton<ViewModel.MainViewModel>();
  18. return builder.Build();
  19. }
  20. }

至此,一个完整的.NET MAUI完成了,让我们一起享受.NET MAUI之旅吧!

后记

  1. <SwipeItem Text="Delete"
  2. IconImageSource="delete.png"
  3. BackgroundColor="LightPink"
  4. Command="{Binding Source={RelativeSource AncestorType={x:Type viewModel:MainViewModel}}, Path=RemoveCommand}"
  5. CommandParameter="{Binding .}"/>

SwipeItem的Command实际没有生效,目前还没有找到原因

原文链接:https://www.cnblogs.com/xuyegui/p/16915162.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号