- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
因此,使用 Android
和 iOS
提供的原生 SDK 进行编码的主要特点之一是,您不仅可以获得更好的性能,而且每个平台的外观和感觉:例如,在 iOS
上,选项卡导航栏位于屏幕底部,而在 Android
中,它位于顶部(是的,我知道它也可以是顶部 和 底部,但你明白我的意思),或者 Navigation Drawer dock 也是一种 Android 导航样式,而(至于我知道)在 iOS 原生 sdk 中没有类似的东西。我的意思是,您可以通过平台的设计指南感受到平台的差异,这是一件好事,因为它让您的应用看起来很专业。
因此,考虑到这一点,就性能和保持应用的感觉而言,使用基于 JS 的框架,如 Titanium 或 PhoneGap 不会做出明智的选择。
然后是 Xamarin
。正如我在这里读到的:Xamarin how it is getting the Native Look and Feel?它似乎是原生 SDK 的 C#
包装器,据我所知,它不应该影响性能。但是外观部分在哪里。由于 XML 布局 并不完全是赋予 Android
或 iOS
应用程序感觉的因素,而且导航(来自 Controller 类)如何Xamarin 处理这些?在他们的网站上说你可以在平台之间共享代码,但这是否也意味着我必须共享导航系统和类似的东西?
最后,为了“不为每个平台编写代码”,不使用原生 SDK 而使用 Xamarin
是否值得(我真的不为 iOS 和 Android 编写代码时遇到问题),或者这个框架是针对 C#
开发人员的,这样他们就不必学习 Objective-C 或 Android。
任何额外的解释都会很棒,在此先感谢。
最佳答案
我在去年(2013 年)构建了一个包含不同组件的大型应用程序:主要是一个 API(ASP.NET Web API => C#)、一个网站(ASP.NET MVC => C# + AngularJS),以及一个适用于 Android (Xamarin.Android => C#) 和 iOS (Xamarin.iOS => C#) 的应用程序。使用 Xamarin 的决定有利也有弊,但总而言之,我对此非常满意。
如您在我上面的列表中所见,几乎所有内容都是使用 C# 完成的(好吧,该网站主要是用 JavaScript 编写的 ;-))。这是一种美妙的成熟语言,具有非常好的功能(如 LINQ)。在我的场景中,情况变得很清楚:我不必学习和完善四种语言(Swift/Objective-C、Java、C#、JavaScript),而只需学习和完善两种语言:C# 和 JavaScript。
这在代码共享方面尤其重要:我们的客户端应用程序并不是真正的瘦客户端,因为一些离线功能需要大量同步逻辑,因此两个应用程序的 UI 部分只是勋章。事实证明,我真的可以在 iOS 和 Android 上使用 90% 的非界面代码。这是一个令人难以置信的巨大好处,因为它不仅涉及 Swift/Objective-C 或 Java 的某些语言原创性,还涉及您在 iOS 和 Android 上使用的不同框架。使用 .NET Framework/Mono 作为每个 Xamarin 应用程序的基础,您可以从底层操作系统中抽象出数据访问或网络通信等内容。
就速度和 UI 而言,您没有任何劣势,因为您正在 1:1 使用 native API。 iOS 或 Android 上可用的任何内容也可通过 Xamarin 获得。例如,每当 Apple 发布新版本的 iOS 时,Xamarin 都会在几天内发布更新,因此您无需等待即可使用 Apple 新引入的功能。
Xamarin 在 iOS 上使用一种称为提前编译的技术,因此您在 C# 中编写的所有内容都会在部署到您的设备之前编译为 native iOS 内容。这意味着“ native ”Objectice-C 应用程序和 Xamarin 应用程序之间执行的内容没有区别(除了一些根据我的经验并不值得注意的小开销)。
在 Android 上,即时编译也与任何其他“ native ”Android 应用程序一样使用。
这一切都意味着您拥有与使用 Objective-C 或 Java 时完全相同的 API 和可能性。您甚至可以使用相同的对象来构建具有完全相同的类型和名称的 UI(有时会稍微优化 ;))。因此,如果您想要为您的应用程序提供标签栏导航 - 您可以为此使用 UITabBarController。参见 iOS与 Xamarin .
在使用 Xamarin 多年之后,我只有一个缺点:
可能的内存泄漏。他们的整个样本都是关于防止内存泄漏的基本知识的一堆废话。如果您在应用程序中使用诸如媒体文件之类的“昂贵资源”,则从第一天起就应该小心。当我的一个应用程序已经发展到多达 35 个不同(复杂)的对话框时,我必须摆脱所有这些问题。这花了我将近两个月的时间,换句话说,花费了数千美元。 They provide some documentation关于它,但是这方面的工具很差。错误很可能会出现并且很难被发现 ( example )。
但总而言之,使用 Xamarin 是我做出的最佳决定之一。
关于c# - Xamarin : comparison to native SDK and JS-based frameworks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23419741/
我已经从github https://github.com/xamarin/xamarin-forms-samples下载了Xamarin.Form示例项目 打开任何示例项目后,它不允许我在iOS S
我收到此错误: "MyApp\App.cs(7,7): Error CS0246: The type or namespace name 'Xamarin' could not be found (a
我想知道 Xamarin 是否带有 Mono 运行时及其所有应用程序包。在这种情况下,如果两个基于 Xamarin 的应用程序安装在一个设备上,该设备将拥有两个 Mono 运行时权利。这是 Xamar
如何将库导入 Xamarin? 例如,我将如何导入 json.net为我的项目使用 xamarin? 谢谢 最佳答案 Json.NET可免费获得精美包装 Xamarin-compatible Comp
我不知道如何在输入框中置顶占位符文本。 我有一个很大的输入框,想把占位符文本放在顶部。 最佳答案 您需要为每个平台创建一个自定义渲染器以对齐占位符,如下所示: public class Placeh
我很难找到有关Xamarin.Forms的后台任务支持的文档。 Xamarin.Forms是否提供对定期后台任务的支持? 我需要为Windows Phone 10和Android都实现此功能。 最佳答
Xamarin.iOS中是否提供iOS Picker?我进行了详尽的搜索,但是没有示例,也没有信息可查。但是,它在Xamarin.Form中可用。 最佳答案 UIPickerView的真实示例示例:(
有谁知道是否可以使用 Xamarin.Forms 创建CardView样式(可滚动)列表?我们需要它在iOS和Android上将呈现为相同的。还需要调整阴影等属性(略微提高每张卡) 最佳答案 这是一个
所以,我对 Xamarin 有点陌生,我试图弄清楚如何显示一个包含用户文本输入字段的弹出窗口。 DisplayAlert 不这样做,因为它没有文本输入字段。我应该使用什么? 最佳答案 您可以使用 Di
我有一个运行良好的表单应用程序,但我注意到当页面出现时,背景颜色在几分之一秒内设置不正确。 我有这个代码用于我的 OnAppearing protected override async vo
您好,我正在开发一个具有登录功能的应用程序,它可以选择让您保持登录状态,即使您关闭该应用程序也是如此。 问题是什么?这就是我在 App.cs 中所做的: var statusLog = Appli
由于BackgroundImage是一个字符串,您应该如何设置Page的背景图像?我将不胜感激任何建议。 到目前为止,我已经尝试过: MainPage = new ContentPage {
如何使用 Renderer 在 Xamarin Forms 中使用渐变效果创建此按钮? 最佳答案 在 xamarin 中,您不能将渐变颜色添加为内置功能。您必须创建不同的渲染功能。这个 link 将指
背景:我正在处理一个 C# 项目。过去,当我做 System.Console.WriteLine("Hello"); 我会看到一个弹出控制台打印“你好”。控制台今天消失了,我该怎么做才能让它再次出现?
我们每天都在使用 Xamarin 和 Xamarin Forms,并且经常遇到异常而没有任何关于如何调试的有用信息。 有时它是我们的目标,有时是 Xamarin 中的错误,尤其是 Xamarin Fo
我正在使用 xamarin studio(带有 nuget 包管理插件),并且在我的项目中有一些 nuget 包。 项目上下文菜单中有“管理”和“恢复 nuget 包”,但也有控制台吗? 最佳答案 X
我有一个 CustomCalendar 元素,它是通过扩展 ContentView 并在另一个 ContentPage 中使用此自定义 View 而创建的。我尝试使用非聚焦事件来检测外部点击。但是问题
因此,对于整个MVVM,我还是一个新手。我几乎了解它的基本知识。我有一个可以按原样工作的示例,但是我试图将其更改为MVVM样式。我只是尝试不同的例子,所以我可以学习。 (LoginPage.xaml)
我正在尝试使我的Xamarin项目在Prism和DryIoc中使用MVVM。 我主要想使用自动注册,如下所示: [AutoRegisterForNavigation] ... protected ov
我有一个问题,如何在 Forms Xamarin 中制作模态屏幕,如附加的图像。 我想知道你们是否可以向我发送一段代码或示例以了解如何做到这一点。 https://extravios.com.br/c
我是一名优秀的程序员,十分优秀!