我目前正在研究Xamarin项目,经过一些研究后,我对跨平台UI的工作原理感到困惑。
让我们选择以下3款智能手机:
三款手机有三种不同类型的控件。三星底部有3个按钮,而iPhone只有1个按钮。微软手机有三个按钮,如三星,但这些按钮是不同的。所以这就是我感到困惑的原因。
此tutorial等教程中显示的跨平台设计显示了共享设计。
但是,我的目标不是为每个平台制作相同的界面。我看到这个article与我想要的类似。我们有相同的应用程序逻辑,但设计取决于平台
现在,这是Xamarin提出的应用程序架构
为了实现每个平台的不同设计,我不能创建一个" Forms Xaml Page"在共享项目中,但创建3个不同的页面(每个平台1个)。但是,我不确定如何实现这一目标。
在发布时,每个应用程序都执行以下代码行:
LoadApplication(new App());
因此,如果我创建3个不同的界面,我如何加载特定于运行该应用程序的平台的界面?
此外,如果我们使用MVC模式(我知道MVVM,我目前还不了解它),制作3个不同的视图,每个视图都有一个控制器,但只共享模型/数据/电机。 (MVC - > 1M / 3V / 3C)。
答案 0 :(得分:3)
使用Xamarin.Forms,您可以使用Forms API共享应用程序逻辑和可能的所有UI代码。这意味着app界面在所有平台上都非常相似。
使用非表单方法,您可以共享应用程序逻辑,然后任何UI代码都可以进入特定于平台的项目,并使用特定于平台的API。
阅读您的要求,我建议您研究与Xamarin共享代码的非基于表单的方法,而不是使用表单。
我们有一些很好的guides来开始使用此功能以及sample和case study。
答案 1 :(得分:3)
具有特定于平台的UI的跨平台项目的一个好方法是使用MvvmCross或类似的库。
TipCalc-Project是一个示例应用程序,它通过可移植类库(PCL)共享业务逻辑,并使用MVVM模式(模型视图ViewModel)。每个平台(Android,iOS,...)都有一个单独的UI项目,并重用PCL中的功能。
这允许在不使用Xamarin.Forms的情况下共享大量业务代码,并且不会对您的UI做出任何妥协。
对于这种方法,您应该对MVVM和依赖注入有基本的了解。