Xamarin - 每个平台的不同视图

时间:2016-04-08 12:50:11

标签: xamarin xamarin.ios xamarin.android xamarin.forms

我目前正在研究Xamarin项目,经过一些研究后,我对跨平台UI的工作原理感到困惑。

让我们选择以下3款智能手机:

  1. 三星Galaxy S5
  2. iPhone 6 Microsoft
  3. Lumia 640 LTE
  4. 三款手机有三种不同类型的控件。三星底部有3个按钮,而iPhone只有1个按钮。微软手机有三个按钮,如三星,但这些按钮是不同的。所以这就是我感到困惑的原因。

    tutorial等教程中显示的跨平台设计显示了共享设计。

    但是,我的目标不是为每个平台制作相同的界面。我看到这个article与我想要的类似。我们有相同的应用程序逻辑,但设计取决于平台

    Example app screenshots 按顺序:Android,iOS和Windows Phone

    现在,这是Xamarin提出的应用程序架构

    Xamarin app topology

    为了实现每个平台的不同设计,我不能创建一个" Forms Xaml Page"在共享项目中,但创建3个不同的页面(每个平台1个)。但是,我不确定如何实现这一目标。

    在发布时,每个应用程序都执行以下代码行:

    LoadApplication(new App());
    

    因此,如果我创建3个不同的界面,我如何加载特定于运行该应用程序的平台的界面?

    此外,如果我们使用MVC模式(我知道MVVM,我目前还不了解它),制作3个不同的视图,每个视图都有一个控制器,但只共享模型/数据/电机。 (MVC - > 1M / 3V / 3C)。

2 个答案:

答案 0 :(得分:3)

使用Xamarin.Forms,您可以使用Forms API共享应用程序逻辑和可能的所有UI代码。这意味着app界面在所有平台上都非常相似。

使用非表单方法,您可以共享应用程序逻辑,然后任何UI代码都可以进入特定于平台的项目,并使用特定于平台的API。

阅读您的要求,我建议您研究与Xamarin共享代码的非基于表单的方法,而不是使用表单。

我们有一些很好的guides来开始使用此功能以及samplecase study

答案 1 :(得分:3)

具有特定于平台的UI的跨平台项目的一个好方法是使用MvvmCross或类似的库。

TipCalc-Project是一个示例应用程序,它通过可移植类库(PCL)共享业务逻辑,并使用MVVM模式(模型视图ViewModel)。每个平台(Android,iOS,...)都有一个单独的UI项目,并重用PCL中的功能。

这允许在不使用Xamarin.Forms的情况下共享大量业务代码,并且不会对您的UI做出任何妥协。

对于这种方法,您应该对MVVM和依赖注入有基本的了解。

相关问题