系列目錄
引言
本篇文章將介紹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