C# 跨平台UI框架发布安卓端预览版

前言

CPF的安卓端适配采用Xamarin的安卓绑定库,而不是Xamarin.Form。CPF和flutter差不多,完全由skia绘制,基本不依赖原生控件。

当前还只是预览版,不建议用在正式项目中。

可能有人会问,你这个和MaUI和Xamarin.Form有什么区别?.

1、CPF的控件完全由skia绘制,保证各个平台一致性,不管是显示还是行为。Maui和Xamarin.Form主要还是封装原生控件为主。

2、不需要写Xaml,采用C#描述UI,css写样式

C# 跨平台UI框架发布安卓端预览版
 
C# 跨平台UI框架发布安卓端预览版
C# 跨平台UI框架发布安卓端预览版

项目结构,一个是Xamarin.Android项目,一个是NET Standard类库项目,主要代码写在类库项目里,而Xamarin.Android项目里只要定义适配器和启动的视图就行

C# 跨平台UI框架发布安卓端预览版
C# 跨平台UI框架发布安卓端预览版
C# 跨平台UI框架发布安卓端预览版

安卓端的差异

PC端是program.cs的里面有Main方法来初始化和启动,安卓端需要安卓Activity来初始化启动

安卓端的是MainView不是Window,MainView加载样式是通过

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

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

安卓端无法使用窗体的ShowDialogSync这种同步阻塞的方法

其他细节

元素尺寸是标准的像素尺寸,和Chrome的移动端网页仿真一致,不过设计器里暂时没有移动端设备尺寸列表

C# 跨平台UI框架发布安卓端预览版
C# 跨平台UI框架发布安卓端预览版

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

比如你可以在MainView里定义一个公共的静态委托

public static Func CreateNativeControl;

然后在Xamarin.Android的MainActivity里初始化这个委托,绑定一个创建安卓原生控件的方法

C# 跨平台UI框架发布安卓端预览版

最后在添加个NativeElement 元素,调用委托把创建的控件赋值给Content属性

C# 跨平台UI框架发布安卓端预览版

C# 跨平台UI框架发布安卓端预览版

当前还只是预览版,不建议用在正式项目中。

案例源码下载:https://files.cnblogs.com/files/dskin/CpfAndroidTest.zip