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