/avatar.png

Xamarin.Forms——WebView 技术研究

在 Xamarin 中有一些 Forms 原生不太好实现的内容可以考虑使用 HTML、Javascript、CSS 那一套前端技术来实现,使用 WebView 来承载显示本地或网络上的 HTML 文件。不像 OpenUri 方法,不是将用户带到设备中的本地浏览器里去,而是用 WebView 直接在 App 内部显示 HTML 内容。

Xamarin.Forms ——尺寸大小(五 Dealing with sizes)

如之前所见的大量可视化元素均有自己的尺寸大小:

  • iOS 的状态栏高度为 20,所以我们需要调整 iOS 的页面的 Padding 值,留出这个高度。
  • BoxView 设置它的默认宽度和高度为 40。
  • Frame 的默认 Padding 为 20。
  • StackLayout 的默认 Spacing 属性值为 6。

还有 Device.GetNamedSize 方法,该方法将 LabelButton 等控件中使用的 NamedSize 枚举值转换为不同平台对应的数值,即不同控件中不同 NamedSize 枚举对应的 FontSize 值。

Task.Run Vs Task.Factory.StartNew

.Net 4 中,Task.Factory.StartNew是启动一个新Task的首选方法。它有很多重载方法,使它在具体使用当中可以非常灵活,通过设置可选参数,可以传递任意状态,取消任务继续执行,甚至控制任务的调度行为。所有这些能力也带来了复杂性的提升,你必须知道何时应该使用何种重载方法,提供哪种调度方式等等。并且Task.Factory.StartNew这种写法也不够简洁明快,至少对它使用的主要场景不够快,一般它使用的主要场景只是将一个工作任务丢给一个后台线程执行而已。

Xamarin.Forms 入门学习路线

Xamarin 介绍

Xamarin 是一套跨平台解决方案,目的是使用 C# 语言创造原生的 iOS,Android,Mac 和 Windows 应用。

Xamarin 的三个优势:

  1. Xamarin App 拥有原生 App 的性能,因为最后生成的 App 中是使用的原生的控件和原生的 API,所以它的体验和效率与原生 App 相近。
  2. 使用熟悉的 C# 语法,在 Objective-C,Swift 或者 Java 中能做的任何事情都可以用 C# 做到。除此之外,C# 还有强大的 IDE 智能提示,lambdas 语法,更自然的异步语法(Task、Async),NuGet 快速获取组件。
  3. 在不同的平台上使用同样的语言还具有共享代码的优势,各个平台大约可以共享 75% 的 APIs 和数据结构代码。如果使用 Xamarin.Forms 来创建UI几乎可以共享 100% 的代码。

最终的思想,共享代码

说白了,Xamarin 宣称的最大的优势就是在三个平台上使用同一种语言来共享代码,总体说来有三种技术实现:

日志框架对比 NLog VS Log4net

Log4net

先说 Log4net,它是.net 平台上一个老牌的日志框架,我接触的时间也不长(因为公司有自己的日志库),但是看着各开源库都在用这个于是前段时间也尝试去了解了一下。