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

2023-11-24

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

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

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

现在我的问题是:

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

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

Thanks,

Adrian


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

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

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

另一个例子是ListViews(UITableViews)。他们完全不同。正如您所期望的,Monodroid 实现忠实于它丑陋的 Java 姐妹。在 Android 上,您不必使用 Apple 强加给您的大量间接寻址,而只需使用一个简单的 ArrayAdapter 作为数据源 - 为更复杂的布局进行子类化。

另一件需要注意的重要事情是Android 没有单一的屏幕尺寸。您为以下对象创建图像3种不同的屏幕密度。字体大小不是绝对的。

Android 为您提供了类似于 XAML 和 Web 的布局机制,但在 iPhone 上您就没那么幸运(或者更幸运,取决于您如何看待它),因为所有内容通常都是绝对定位的(他们可以做到这一点,因为它始终是 320x480)。

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

我认为您已经覆盖了大部分数据的单独层并坚持使用控制器。如果没有看到你的应用程序,很难说重用控制器有多么容易(无论你使用 UITableViews 还是自定义 uis),但 Android 的开发速度要快得多,我认为这应该是一个快速的任务。

(I'm on the Monodroid preview and also have a MT apps out)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Monodroid 应用程序中重用 Monotouch 代码 的相关文章

  • MonoTouch.Dialog:关闭键盘

    使用 Reflection API 自动生成 UI 当用户选择新字段或选择生成新视图以供选择的字段时 如何关闭键盘 在后一种情况下 当用户返回到第一个屏幕时 旧键盘仍然存在 UIView EndEditing bool force 上面的代
  • 带 Prism 的表单:应用程序窗口预计有一个根 VC

    我刚刚在我的新应用程序中实现了 Prism 库 并且正在使用 NavigationService 它在 Android 上运行良好 但是当我尝试在联网的 Mac 上调试我的 Xamarin Forms iOS 应用程序时 我的 Main 方
  • 如何将屏幕截图转换为二进制?

    我正在开发一个 Xamarin Forms 项目 在该项目中我想将我的屏幕截图 PNG 转换为二进制并将其上传到服务器 现在服务器部分需要一个API 我将由已经完成它的人交给我 我只需要实现它 在我完成这个任务之后 到目前为止 我已经成功地
  • 无法创建 IOS 存档:路径(目录名称必须小于 248 个字符)和/或文件名(必须小于 260 个字符)太长

    ERROR 无法创建 IOS 存档 MyIosProject 进程无法在 XMA 服务器上执行 解压文件时出错C Users myusername AppData Local Xamarin iOS Archives 2020 04 08
  • Xamarin-System.UnauthorizedAccessException:对路径的访问被拒绝

    我正在尝试下载文件 但收到 System UnauthorizedAccessException 访问路径 storage emulated 0 Download test pdf 被拒绝 我已经在 Android Manifest 文件中
  • 录制视频/音频时播放系统声音

    当我开始录制视频时 我试图按照苹果的要求播放 嘟嘟 声 我通过 SO 和其他来源发现 当您有音频输入而没有进行某些配置时 您无法播放声音 这是我尝试的配置方法 private void SetupAudio beepSound AssetB
  • 如何设置 Hibernate 读取/写入不同的数据源?

    使用 Spring 和 Hibernate 我想写入一个 MySQL 主数据库 并从基于云的 Java Web 应用程序中的另一个复制从属数据库中读取数据 我找不到对应用程序代码透明的解决方案 我真的不想更改我的 DAO 来管理不同的 Se
  • Monotouch如何管理资源(字符串、图像等)?

    在 Android 中 我将应用程序字符串放入名为的文件中strings xml 例如 对于意大利语翻译 我需要创建一个 value it 文件夹并放入strings xml在此新文件夹中包含带有意大利语标签的文件 Monotouch 如何
  • 启动注册期间无法加载程序集“System.Buffers”

    我的 Xamarin 表单应用程序大约 5 分钟前运行 然后突然停止工作 应用程序启动后立即关闭 下面显示了 Visual Studio 输出中的消息显示 Assembly Loader probing location System Bu
  • Xamarin Form - IOS:如何检测 UIView 大小已更改

    我使用 ContentView 创建了一个 Xamarin 表单 并为 Android 创建了一个渲染器 现在我必须为 IOS 创建一个渲染器 在 android 渲染器中 我可以重写 onSizeChanged 并将这些宽度 高度值传递给
  • Android 模拟器无法与 Xamarin/Visual Studio Mac 配合使用

    你好 我真的很难让 Android 模拟器在我的 Mac 上运行 我需要采取哪些步骤才能使其正常工作 我在 MacOS Catalina 上安装了 Visual Studio 2019 这是一个新的空白 Xamarin Forms 项目 我
  • UIImage 数据始终处于横向模式

    似乎当我用相机以肖像模式拍照时 UIImage具有正确的尺寸 长宽比 1536x2048 3 4 和方向 右 导出到文件 带有UIImage AsPNG Save 它始终以横向模式显示 2048x1536 4 3 这是真的吗 还是我做错了什
  • 将用户数据存储在身份验证服务器或资源服务器中?或两者?

    这是我第一次使用 IdentityServer 4 和 AspNetIdentity 设置 OpenID Connect 我希望有人能够揭开有关存储用户数据的部分的神秘面纱 到目前为止我读到的是 用户数据应该存储在连接到身份验证服务器的身份
  • 在 MonoDroid 中设置 textview 的文本时,“jobject”不能为 IntPtr.Zero

    我将 MvvmCross 与 MonoDroid 一起使用 在视图模型中的计时器中 我每分钟调用RaisePropertyChanged MinutesRemaining MinutesRemaining是一个整数 指定当前条目结束之前的持
  • Xamarin.iOS 目标 iOS 6 SDK

    我们已升级到 XCode 5 和 Xamarin iOS 7 x 但有一个应用程序尚未准备好支持 iOS 7 有没有办法以 iOS 6 0 SDK 为目标 并编译应用程序 使其具有旧的 iOS 6 键盘等 我们尝试更改 iOS Build
  • 分层架构中的异常处理

    我们正在分层设计中重构 当然还有重新设计 我们的服务 我们有服务操作层 BLL 网络抽象层 gt 处理网络代理 数据抽象层 但我们对我们的异常处理策略有点困惑 我们不想向外界透露太多 BLL 的信息 从其他层到bll就可以了 我们不想让 t
  • 如何使用 xamarin 表单提示用户进行地理定位

    我正在 Xamarin Forms 应用程序中开发一个应用程序 需要请求地理位置权限 如果获得许可 它需要从设备获取地理位置数据 然后将地理位置坐标放入 Forecast io URL 我正在使用 James 的 Geolocator 插件
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • 有没有办法将应用程序覆盖在全屏程序上?

    我希望开发一个应用程序 它本质上是一个计时器窗口 它始终显示在任何其他应用程序前面的屏幕上 并且在聚焦其他窗口时永远不会落入背景 一个例子是 当我玩全屏游戏时 我希望这个计时器覆盖游戏 并且当我单击窗口上的计时器按钮时 它不会关闭游戏 我有
  • Xamarin:找不到“libmonodroid.so”模拟器错误

    我已经遇到这个问题几天了 但还没有找到解决方案 我一直在使用Android 7 0 ARM armeabi v7a 我的模拟器的图像 因为它太慢了 我一直在尝试使用Android 7 0 Intel Atom x86 64 with HAX

随机推荐