對于工作多年的C#程序員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓APP的開發,下面把開發的過程給大家分享一下,對于那些從事C#的開發人員,想嘗試開發自己的一款APP,也可以跟著本文進行嘗試一下。
它是.NET 多平臺應用 UI (.NET MAUI) 是一個跨平臺框架,用于使用 C# 和 XAML 創建本機移動和桌面應用。
使用 .NET MAUI,可從單個共享代碼庫開發可在 Android、iOS、macOS 和 Windows 上運行的應用。
.NET MAUI 是一款開放源代碼應用,是 Xamarin.Forms 的進化版,從移動場景擴展到了桌面場景,并從頭重新生成了 UI 控件,以提高性能和可擴展性。 如果以前使用過 Xamarin.Forms 來生成跨平臺用戶界面,那么你會注意到它與 .NET MAUI 有許多相似之處。 但也有一些差異。 通過使用 .NET MAUI,可使用單個項目創建多平臺應用,但如果有必要,可以添加特定于平臺的源代碼和資源。 .NET MAUI 的主要目的之一是使你能夠在單個代碼庫中實現盡可能多的應用邏輯和 UI 布局。
官網:https://learn.microsoft.com/zh-cn/dotnet/maui/what-is-maui?view=net-maui-8.0
這里需要安裝Visula Studio 2022,安裝過程需要勾選.NET Multi-platform App Ul 開發,然后安裝位置建議選擇D盤,這樣可以減少一部分C盤存儲的占用。
然后進行安裝,這個過程預計需要幾十分鐘,等安裝成功后進行后續操作。
首先創建項目,選擇.Net MAUI 應用
然后點擊點擊下一步進入配置新項目窗體,需要指定文件名和目錄
接著點擊下一步進入Net框架的選擇。具體如下圖:
最后點擊創建按鈕。稍等十幾秒項目就會創建成功,具體如下:
點擊Windows Machine 運行按鈕
如果是首次運行的話,需要針對自己的Windows應用開發模式。
點擊“適合開發人員設置”文字進入開發者選項設置,進行開啟
接著再次點擊運行按鈕,項目會開始、編譯、生成、部署,部署成功后運行效果如下圖:
然后點擊按鈕次數進行累加 如下圖:
接著我們來測試修改文件MauiXaml重新運行效果如下:
重新編譯運行后修改的文字進行同步生效了。
首先激活Hyper-V(開啟虛擬設備)
我們點擊任務欄放大鏡搜索輸入 “Windows功能”
然后打開Windows功能修改窗口,勾選Hyper-V選項
注意:需要重啟電腦才會生效。
這里我們切換為android方式運行,在“框架”下選擇“net8.0-android”選項
點擊運行按鈕,如果沒有安裝Android-sdk 會提示如下窗口,點擊接收按鈕。
點擊接受后進入如下窗口
然后繼續點擊接受。會進入安卓設備管理器界面
這里點擊create按鈕,就會開始自動開始下載Android-sdk,下載過程需要持續幾分鐘,耐心等待下載完成。
下載完成后的進入創建階段
創建完成后如下:
點擊開始按鈕
開始啟動模擬器
部署到仿真器效果如下:
仿真器加載需要等待一分鐘左右
點擊按鈕運行效果如下:
以上是使用.NET MAUI搭建第一個安卓APP的完整過程,大家有問題可以評論區溝通交流!
摘要
XAML是派生自XML的可擴展應用程序標記語言(Extensible Application Markup Language),由微軟創造。XML是一種可擴展標記語言,與HTML類似,但是它是傳輸數據,而非顯示數據,XML標簽沒有預定義,需要自行定義標簽WPF(Windows Presentation Foundation)是微軟新一代圖形系統,繪圖技術的改進基于Windows 的用戶界面框架,屬于.NET Framework 3.0的一部分。由兩個主要部分組成:引擎和編程框架。
正文
命名空間
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml——這表示利用x代替XAML的命名空間。用于包含特定的關鍵字和System.Windows.Markup中類型的子集。xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation——另一個命名空間。映射諸多wpf.net命名空間(system.windows.xxx,是個一對多的映射,主要封裝了三個程序集中,WindowsBase.dll、Presentation.dll和PresentationFramework.dll)
x: 前綴
x:Class='MyXaml.Window1' ——利用class特性指定c#類名(后臺c#代碼) x:Key:為 ResourceDictionary(或其他框架中的類似字典概念)中的每個資源設置唯一的鍵。 在典型的 WPF 應用標記中的所有 x: 用法中,x:Key 可能占到 90%。 x:Name:處理對象元素后,為運行時代碼中存在的實例指定運行時對象名稱。 x:Static:啟用一個返回靜態值的引用,該靜態值不是與 XAML 兼容的屬性。 x:Type:根據類型名稱構造 Type 引用。
屬性元素
一般的,我們想要對一個標簽的屬性賦值,可以直接在標簽內部鍵入屬性名給其賦值,如我們給button的Content屬性賦值:
<Grid x:Name="grid1">
<tag>
<tag.property>
value
</tag.property>
</tag>
<Button>
<Button.Content>this is test</Button.Content>
<Button.Background>
<SolidColorBrush Color="Red"></SolidColorBrush>
</Button.Background>
</Button>
集合語法
XAML 語言包含一些優化,可以生成更易于閱讀的標記。 其中一項優化是:如果某個特定屬性采用集合類型,則在標記中聲明為該屬性的值內的子元素的項將成為集合的一部分。 在這種情況下,子對象元素的集合是設置為集合屬性的值。
<Grid>
<Grid.Background>
<LinearGradientBrush>
<GradientStop Offset="0" Color="Red"></GradientStop>
<GradientStop Offset="1" Color="Green"></GradientStop>
</LinearGradientBrush>
</Grid.Background>
</Grid>
內容屬性和集合語法組合
<StackPanel>
<Button>First Button</Button>
<Button>Second Button</Button>
<StackPanel>
<StackPanel.Children>
<Button>First Button</Button>
<Button>Second Button</Button>
</StackPanel.Children>
</StackPanel>
</StackPanel>
特性語法(事件)
<Button Content="Button" Click="Button_Click"></Button>
類型轉換器
Thickness 結構是一個類型示例,該類型擁有可使用 XAML 的類型轉換。 Thickness 指示嵌套矩形中的度量,可用作屬性(如 Margin)的值。 通過對 Thickness 放置類型轉換器,所有使用 Thickness 的屬性都可以更容易地在 XAML 中指定,因為它們可指定為特性。
<Button Margin="10,20,10,30" Content="Click me"/>
<Button Content="Click me">
<Button.Margin>
<Thickness Left="10" Top="20" Right="10" Bottom="30"/>
</Button.Margin>
</Button>
注意:
XAML是大小寫敏感的,所以不能使用<button>代替<Button>,但類型轉換器通過不是大小寫敏感的,這意味著 Foreground="White" 和 "Foreground="white"具有相同的效果。
注釋
語法:<!--被注釋的內容-->