从零开始学Xamarin.Forms(一) 概述

原文:从零开始学Xamarin.Forms(一) 概述

    Xamarin 读
“ˈzæmərin”,是一个基于开源项目mono的能够使用C#开发的收费的跨平台(iOS、Android、Windows
Phone、Mac)解决方案。

    1.原理

        Xamarin.iOS:

            也就是之前的 MonoTouch(Mono for iOS),使⽤静态编译(Ahead-Of-Time)⽅式将C#代码编译为
ARM⼆进制代码。 

        Xamarin.Android:

            即之前的MonoDroid(Mono for Android) ,是将C# 代码编译成IL封装到MonoVM+JIT.

        

    2.优劣势

        在Xamarin2.0下开发跨平台应用,最多是逻辑层和数据访问层的代码可以共用,而最花费时间的界面搭建则需要针对不同的平台进行订制。当时Xamarin的优势是C#开发人员不需要再学习java和Objective-C了,缺点是需要了解各个平台界面的API,实际能节省下来的工作量并不多。

        幸运的是Xamarin3.0带来了Xamarin.Forms,界面部分也能共享一套代码了。真正能够达到“write
your code once, and present native UIs on each platform.”(一次编写,在各平台使用原生控件展现)的效果。这也是Xamarin最吸引我的地方。目前CSDN为Xamarin在中国大陆的代理,正在开展一些相应的培训。

        当然,有优势肯定也有劣势。目前Xamarin.Forms的版本为1.2.2
Prerelease
3 版,bug相当多(但更新较快),提供的控件不多,最基本的Radio Button和CheckBox没有(官方解释:这两个不是每个平台都有的控件),需要自己重写Renderer。在Android平台上,使用Xamarin.Forms开发稍微复杂些的应用,启动速度较慢,让人不得不为它设计一个启动界面。还有就是Xamarin的中文文档几乎没有,其中大部分资料来自台湾。CSDN上的论坛才20条帖子...目前有问题比较靠谱的解决方法是在它的官方论坛或者加QQ群:385020493提问。

   

    3.开发环境

        Xamarin可以在Windows和Mac上进行开发:

        Windows:    Xamarin Studio 或 Xamarin for Visual Studio(2010 -2013) Plugin(推荐)

                Mac:    Xamarin Studio

    4.技术基础

        C#基础,能够创建WCF、rest服务、掌握C#5.0,.net4.5后async、await关键字。学过Silverlight或wpf的最好:因为它们布局文件都使用xaml,包括设计模式也是相同的MVVM,了解Binding数据绑定、Command命令、DI依赖注入、DP依赖属性等等内容。

知识结构目录:AOT静态编译 对应中文

   5.系统支持

  • Android 4.0 or higher
  • iOS 6.1 or higher
  • Windows Phone 8 (using Visual Studio)
时间: 2024-12-03 19:30:00

从零开始学Xamarin.Forms(一) 概述的相关文章

从零开始学Xamarin.Forms(五) 技巧

原文:从零开始学Xamarin.Forms(五) 技巧        由于HTML5规范于2014年10月终于定稿,公司.net开发人员较少,国内外已有了较为成熟的UI框架.手机软件硬件的快速发展等等原因,所以我就不打算再使用Xamarin了,而是采用HTML5+CSS3+Javascript的方式来进行跨平台的开发.之前在探索Xamarin中积累了一些小经验也同时分享给大家,希望能给大家带来帮助. 1.TabbedPage中嵌入NavigationPage,NavigationPage中的Ro

从零开始学Xamarin.Forms(三) Android 制作启动画面

原文:从零开始学Xamarin.Forms(三) Android 制作启动画面     Xamarin.Forms 在启动的时候相当慢,必须添加一个启动界面,步骤如下: 1.将启动画面的图片命名为:splash_screen.png,并拷贝到 Resources 文件夹下的相应 Drawable 文件夹中:     2.在其中的 Drawable 文件夹下创建 splashscreen.xml ,内容为: <?xml version="1.0" encoding="ut

从零开始学Xamarin.Forms(二) 环境搭建、创建项目

原文:从零开始学Xamarin.Forms(二) 环境搭建.创建项目 一.环境搭建 Windows下环境搭建:     1.下载并安装jdk .Android SDK和NDK,当然还需要 VS2013 update 2(VS2010.VS2012均可)以上: a.  最新SDK, 下载地址:http://dl.google.com/android/android-sdk_r23-windows.zip         b.  Android平台工具包(解压到SDK安装根目录下,产生文件夹plat

关东升的《从零开始学Swift》3月9日已经上架

    大家一直期盼的<从零开始学Swift>于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600多页,此本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发.全书共分5 部分,包括Swift语法篇.Cocoa Touch框架编程篇.混合编程篇.进阶篇和项目实战篇,囊括了开发工具介绍.语言基础知识,直至应用在App Store上线的所有内容.此外,本书前20 章专门配有同步练习,以帮助读者掌握所学知识.本书更加适合Swift开发者.大家可以看一下.http:/

关东升的《从零开始学Swift》即将出版

大家好:   苹果2015WWDC大会发布了Swift2.0,它较之前的版本Swift1.x有很大的变化,所以我即将出版<从零开始学Swift><从零开始学Swift>将在<Swift开发指南>第1版的基础上添加Swift2.0的内容,同时摒弃第1版的一些不合理的内容,使得本书更加适合Swift开发者.我将连续发一些<从零开始学Swift>的学习笔记,有兴趣者,可以看一下. 书中源代码下载地址:http://51work6.com/swiftbook1.ph

从零开始学 Java (一) Hello World 左光 2005.4

从零开始学 Java  (一) Hello World     左光 2005.4 从昨天开始学习 Java,把自己在学习中遇到的一些问题和体会发出来,供大家借鉴. 要想编写一个 Java 版的 Hello World  程序并运行需要完成下面两步: 1.下载并安装JDK5.0 或者 JDK1.4.2 .不要对版本号产生什么疑问,据我的理解,JDK5.0 也就是JDK1.5 ,是 JDK1.4.2 的重要升级,里面加了许多新的语言特性,为什么叫 5.0 而不叫1.5 ,我想可能是出于商业上的考虑

57. Spring 自定义properties升级篇【从零开始学Spring Boot】

 注解ConfigurationProperties和EnableAutoConfiguration的区别: @EnableConfigurationProperties tells Spring to treat this class as a consumer of application.yml/properties values( {@link ConfigurationProperties} beans can be registered in the standard way (fo

【高德地图API】从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图

原文:[高德地图API]从零开始学高德JS API(一)地图展现--仙剑地图,麻点图,街景,室内图 摘要:关于地图的显示,我想大家最关心的就是麻点图,自定义底图的解决方案了吧.在过去,marker大于500之后,浏览器开始逐渐卡死,大家都开始寻找解决方案,比如聚合marker啊,比如麻点图啊.聚合marker里面还有一些复杂的算法,而麻点图,最让大家头疼的,就是如何生成麻点图,如何切图,如何把图片贴到地图上,还有如何定位图片的位置吧.以前那么复杂的一系列操作,居然让云图的可视化操作一下子解决了.

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

原文:Xamarin.Forms--尺寸大小(五 Dealing with sizes) 如之前所见的大量可视化元素均有自己的尺寸大小: iOS的状态栏高度为20,所以我们需要调整iOS的页面的Padding值,留出这个高度. BoxView设置它的默认宽度和高度为40. Frame的默认Padding为20. StackLayout的默认Spacing属性值为6. 还有Device.GetNamedSize方法,该方法将Label或Button等控件中使用的NamedSize枚举值转换为不同平