系列目錄
引言
本篇文章將介紹Xamarin.Forms
中 App
基礎知識和 App
的啟動。
開發環境
- Visual Studio 2019 16.6.2
- Xamarin.Forms 4.6.0.726
- Android 5.0 (API 級別21 - Lollipop)以上
本文主要內容
一、專案總的結構組成
在我們建立了HelloXamarinApp
專案時,IDE會預設建立3個專案:HelloXamarinApp
、HelloXamarinApp.Android
與HelloXamarinApp.iOS
。
HelloXamarinApp
為功能的專案,主要包括介面的佈局、資訊等公共的內容。HelloXamarinApp.Android
Android專案的入口,用來生成Apk
檔案的專案工程。HelloXamarinApp.iOS
iOS專案的入口,用來生成iOS App檔案的專案工程。
二、Android專案的目錄結構
AndroidManifest.xml
:Android清單,用於描述功能和需求Resource
:Android資原始檔夾,用於存放圖片,佈局,樣式,顏色,等等內容;MainActivity.cs
:主活動介面,Xamarin.Forms公共庫中寫的頁面等都在這個介面上顯示;
三、AndroidManifest.xml
AndroidManifest.xml
功能非常強大,用於描述App的功能和需求,如支援的sdk最低版本,目標版本、App安裝後顯示的名稱、App使用的相關手機許可權等。- 在IDE中,可以通過在
Android
專案屬性中的Android
清單選項中可以圖形化進行維護。 - 一般情況我們只需瞭解
Android
清單選項中的內容即可。
選擇Android
專案,右鍵
->屬性
:可以看到清單內容
四、Resource
1、drawable
和mipmap
drawable
:推薦用於存放圖片、xml等資原始檔;mipmap
:推薦存放App圖示檔案,mdpi
hdpi
xhdpi
xxhdpi
xxxhdpi
:分別存放不同解析度的圖片,Android系統會根據手機解析度去選擇不同解析度資料夾下的圖片。mdpi
:HVGA(320*480)hdpi
:WVGA(480800),FWVGA(480854)xhdpi
:720P(1280*720)xxhdpi
:1080P(1920*1080)xxxhdpi
:4K(3840-2160)
2、layout
用於描述使用者介面佈局,在Android
原生開發中,所有的介面都是放在這裡的。
3、values
values
包含用於儲存簡單值的xml檔案,如:style.xml
:存放樣式列表,App
中的樣式都可以放在此檔案中。確保App
的全域性樣式保持一致colors.xml
:存放顏色列表,App
各種顏色,包括專案的主題顏色等,都可以在此檔案中進行定義strings.xml
:存放字串列表(預設是未建立此檔案),需要時可以自行新增
五、MainActivity.cs
專案啟動時一些初始化工作都可以在此檔案中。
- MainActivity繼承自FormsAppCompatActivity,它是XF在Android平臺下提供的基類,封裝了框架初始化等方法;
- 通過base.OnCreate、Forms.Init、LoadApplication三個步驟,將XF框架初始化,並載入App類;
- App類主要有以下功能:
- MainPage:指定App啟動頁面;
- Properties:跨生命週期的屬性字典;
- Current:一個代表當前應用的靜態屬性。
六、iOS
專案
iOS
專案的入口檔案在Main.cs
中,並在此檔案中的Main
函式中呼叫AppDelegate
類。
在AppDelegate
類中的函式FinishedLaunching
中會進行一些初始化並啟動App。
七、HelloXamarinApp
如果你使用wpf開發過專案,一定會很熟悉這種專案結構目錄。
看一下App.xaml.cs
檔案的內容:
【說明:】
- MainPage用於指定啟動介面,這裡指定的是MainPage.xaml介面;
- Properties屬性字典用於儲存資料,可以在程式中任意位置賦值,任意位置取值;
- Current代表當前App,它是一個靜態變數,可以在程式任意位置呼叫;
- 在程式其他位置獲取當前App的方式:Application.Current。
生命週期
App的生命週期在這裡看的很清楚:
OnStart:App啟動時呼叫;
OnSleep:App轉到後臺時呼叫;
OnResume:App從後臺恢復時呼叫。
參考文章:
1、https://www.jianshu.com/p/306a6616fdd5
2、https://www.jianshu.com/p/85e3f0a41e57