在Monodroid应用程序中重用Monotouch代码

Adr*_*ore 10 architecture mvp xamarin.ios xamarin.android

我目前正在实施Monotouch应用程序,最终将移植到Monodroid.该应用程序只是OData Web服务的客户端.没有什么太花哨或性能至关重要.

挑战是尽可能多地重用代码.我知道Monotouch和Monodroid的UI API完全不同,但我希望重用数据数据抽象和业务层.

由于我的UI层遵循MVP模式,我还希望通过编写每个视图的抽象表示来重用UI控制器.但是,我只能猜测这是否有效,因为我还没有被允许进入Monodroid测试版.

现在我的问题:

  • 您如何看待这种方法?这是一个好主意,还是会因为iPhone和Android之间的UI概念不同而导致平庸的应用程序?

  • 您能否提供有关如何构建应用程序以最大化代码重用的任何提示?

谢谢,

阿德里安

Chr*_*s S 15

您如何看待这种方法?这是一个好主意,还是会因为iPhone和Android之间的UI概念不同而导致平庸的应用程序?

我会说后者,但你绝对可以重复使用你的业务和域对象的很大一部分.在Monodroid中使用相同的Mono Sqlite,因此应用程序的数据持久性部分(如果使用它)是可重用的.

我不打算创建一个中间层UI - 两者完全不同.例如,在Android应用上,您有底部菜单,其中可以包含6个屏幕按钮.在iPhone上,您很可能在标签栏或工具栏中没有6个按钮.为此制定一个共同的模式对你没有多大帮助.

另一个例子是ListViews(UITableViews).他们完全不同.正如你所期望的那样Monodroid的实施忠实于丑陋的Java妹妹.在Android上,你不必使用Apple强加给你的巨大间接的间接,而只需要一个简单的ArrayAdapter作为数据源 - 为更复杂的布局子类化.

另一个需要注意的重要事项是Android没有一个屏幕尺寸.您可以为3种不同的屏幕密度创建图像.字体大小不是绝对的.

Android为您提供类似于XAML和网络的布局机制,在iPhone上你不是那么幸运(或者更幸运,取决于你如何看待它)因为一切都是绝对定位的(他们可以这样做,因为它总是320x480).

您能否提供有关如何构建应用程序以最大化代码重用的任何提示?

我认为你已经掌握了大部分用于数据和坚持控制器的单独层.在没有看到你的应用程序的情况下,很难说它是多么容易重复使用控制器(无论你使用UITableViews还是自定义uis),但Android的开发速度要快得多,我认为它应该是一项快速的任务.

(我正在进行Monodroid预览并且还有一个MT应用程序)


Bar*_*pes 7

听起来你有一个相当坚实的概念.事实上,有一个名为MonoCross的开源项目(http://code.google.com/p/monocross/)使用MVC模式做类似的事情.

Miguel de Icaza分享了一个看起来非常酷的MVVM项目,可能对你有所帮助.https://github.com/migueldeicaza/MonoTouch.MVVM