CPF C#跨平台UI框架發佈安卓端預覽版

CPF的安卓端適配採用Xamarin的安卓綁定庫,而不是Xamarin.Form。CPF和flutter差不多,完全由skia繪製,基本不依賴原生控件。

當前還只是預覽版,不建議用在正式項目中。

 

可能有人會問,你這個和Maui和Xamarin.Form有什麼區別?

1、CPF的控件完全由skia繪製,保證各個平台一致性,不管是顯示還是行為。Maui和Xamarin.Form主要還是封裝原生控件為主。

2、不需要寫Xaml,採用C#描述UI,css寫樣式

 

 

 

 

 

 

項目結構,一個是Xamarin.Android項目,一個是NET Standard類庫項目,主要代碼寫在類庫項目里,而Xamarin.Android項目里只要定義適配器和啟動的視圖就行

 

 

 

 

 

安卓端的差異

PC端是program.cs的裏面有Main方法來初始化和啟動,安卓端需要安卓Activity來初始化啟動

安卓端的是MainView不是Window,MainView加載樣式是通過

Root.LoadStyleFile("res://ClassLibrary1/Stylesheet1.css");

MainView不能修改尺寸,不能移動

安卓端無法使用窗體的ShowDialogSync這種同步阻塞的方法

 

其他細節:

元素尺寸是標準的像素尺寸,和Chrome的移動端網頁仿真一致,不過設計器里暫時沒有移動端設備尺寸列表

 

 

 

支持內嵌原生控件,不過原生控件只能在最前端,就像wpf里的WinformHost。

比如你可以在MainView里定義一個公共的靜態委託

public static Func<object> CreateNativeControl;

然後在Xamarin.Android的MainActivity里初始化這個委託,綁定一個創建安卓原生控件的方法

 

 

最後在添加個NativeElement 元素,調用委託把創建的控件賦值給Content屬性

 

當前還只是預覽版,不建議用在正式項目中。

案例源碼下載