站点图标 江湖人士

XamarinForms入门学习路线

XamarinForms入门学习路线

导语:Xamarin是一套跨平台处理方案,目标是利用C 言语缔造原生的iOS,Android,Mac和Windows使用。Xamarin的三个劣势:Xamarin App具有原生App的机能,由于最初生成的App中是利用的原生的控件和原生的AP

【爱科技网】Xamarin是一套跨平台处理方案,目标是利用C#言语缔造原生的iOS,Android,Mac和Windows使用。

Xamarin App具有原生App的机能,由于最初生成的App中是利用的原生的控件和原生的API,所以它的体验和效率与原生App附近。

利用熟悉的C#语法,在Objective-C,Swift或者Java中能做的任何工作都能够用C#做到。除此之外,C#还有强大的IDE智能提醒,lambdas语法,更天然的异步语法(Task、Async),NuGet快速获取组件。

在分歧的平台上利用同样的言语还具有共享代码的劣势,各个平台大约能够共享75%的APIs和数据布局代码。若是利用Xamarin.Forms来建立UI几乎能够共享100%的代码。

说白了,Xamarin传播鼓吹的最大的劣势就是在三个平台上利用统一种言语来共享代码,总体说来有三种手艺实现:

Shared Projects:能够在里面添加供三个平台公用的代码,图片和多媒体文件等,代码部门可利用#if __ANDROID__等前提编译符来指定哪一部门会编译输出到特定平台中。

Xamarin.Forms:支撑你用C#代码来建立在三个平台上共享的UI界面,总共能够利用跨越40个控件,它们城市在运转时映照为原生控件。

工欲善其事,必先利其器。Xamarin的安装过程参考简书上的一篇文章,内容很齐备很细致:

留意6和7的版本号很主要,必必要跟Mac端相婚配,跟破解补丁的版本也需要婚配。若是当前升级,凡是只需要更新6和7就能够了。

关于Android模仿器,之前折腾过不少,最初保举一款公用于游戏玩家的Andorid模仿器,海马玩模仿器,它的机能很好很流利,不外游戏模仿器屏幕默认是横屏的,第一次要手动改成竖屏。

Mac下的大体流程: 若是只考虑用Mac开辟iOS法式,不考虑在Mac下开辟Android法式,那么大体流程如下:

上面看到的价钱只是针对单用户单设备平台,凡是我们利用Xamarin都但愿至多能用于Android和iOS两个平台,所以价钱还得乘以2。

安装完毕后若是没有采办贸易证书,那么能够按照上面那篇文章来破解试用,若是利用的版本号在3.11之前,那么只需要完成离线破解,IDE不需要登岸Xamarin账号,若是版本号在3.11之后,并且要编译iOS(目标是为了毗连Mac端的BuildHost,若是是在Mac上开辟编译iOS则不需要),那么还需要完成在线破解,具体破解流程文章里有,大体流程如下,最初提示一下试用完了别忘了采办官方的贸易授权。

法式的目次布局大致就能够参考这个图,最顶上一层暗示三个特定平台的工程,第二层暗示一个PCL或者SAP工程,凡是也是Forms地点的工程,然后盾用两个焦点库e和Xamarin.Forms.Xaml,然后特定平台的工程还要援用两个特定平台的库,这个特定平台的库能够让法式集利用特定平台的API。

还有一个进修路子就是官网教材,可免得费下载离线版:,教材的随书Demo地址:。这本教材支撑Forms1.3以上,而且章节不断在连结更新,截至2016/02/25已发布到24章,Demo的焦点库已更新到2.0而且插手了UWP工程。

若是说在线进修指南能够协助你快速入门,那么这本教程能够协助你更细化的理解Forms法式。

下面我将24章的官方教材的目次做个简单引见,后面有时间也会对主要的几章做个更详尽的分解:

此中我感受有几章比力主要,若是对Xaml(WPF次要用的界面标识表记标帜言语)开辟不太熟悉的同事需要看一下这几章:

5.Dealing with Sizes:深切理解若何处置尺寸大小,重点也是拿文本举例,教你若何理解挪动开辟里面像素、物理尺寸(英尺、厘米)、DPI、DIU,次要思惟归正就是不要去关心暗示大小的那些数值,字体该当利用字体列举,结构该当是用比例去节制,要充实相信Xamarin平台能帮你节制好大小尺寸。

13.Bitmaps:领会如何在Forms中利用图片,也是满满的都是坑,显示在界面上的图片体积必然要尽量的小,不要将一张原始尺寸的图片加载成缩略图然后放在列表中显示,不然法式必然会内存溢出,必然要对图片进行裁剪,将适合的体积的图片用在适合的处所。从这一章中还能够进修图片在具体平台下的用法和差别等。

19.Collection Views:领会调集控件,列表在App当顶用得很是遍及,所以该当着重领会。

20.Async and File I/O:在Xamarin中只能利用异步IO(或者说是PCL中只能利用异步IO),从趋向看将来的Core可能也只支撑异步IO、异步Http请求等,感受这种更注重机能的IO思惟是将来框架的趋向,所以能够借此熟悉一下,C#的异步语法该当算是浩繁编程言语中的佼佼者了。

下面临第五章Dealing with Sizes稍作讲解,这章重点引见了挪动平台下尺寸相关的一些学问,先看下下面两个表格:

第一张图是iPhone下的一些尺寸元素间的关系,第二张是WinPhone的,这里没有给出Android的,其实Android全体上说来跟iPhone的那些参数很类似。

Forms中真正利用的不是像素,而是点数,点里面包含的像素数量是不分歧的,像iPhone2,3根基上是逐个对应,一个点包含一个像素,iPhone4,5,6就是两倍像素,iPhone6Plus就是三倍像素,所以iPhone的图片里呈现@2x,@3x这些标识就是对应平台所利用的像素分歧的图片。我们在Forms中利用的那些暗示宽高的值就是这种点数单元,要晓得设置的这些值能够获取整个页面的Width和Height值。

下面说下字号,Forms供给了几种列举字号:Default,Micro,Small,Medium,Large,在分歧的设备,分歧的用户系统字号设置,分歧的控件中,不异的列举前往的字号数值可能都纷歧样。通过Device.GetNamedSize方式获取的FontSize值的单元是double,暗示文本字符从最下面到最上面到高度,字体的宽度一般都是FontSize值的一半,字体的行距一般是FontSize值的1.2倍。

在Forms中设想各类元素结构等细节仍然能够参考设想网页采用的盒模子的思惟。从大的块元素的分手到小如一个文字,都能够想象成一个个小盒子。由内容区,内边距,边框,外边距构成。

虽然能够按照盒模子的思惟来结构元素,可是Forms中没有尺度的margin的概念,Forms的做法是在一个内容视图外面再嵌套一个ContentView,ContentView承继自Layout,只多了一个Content属性来存放内容视图。此时,ContentView的Padding属性就能够想象成盒子的Margin。

我们项目中的Android安装包没有发布进商城,是通过网址间接下载,所以发布教程没有验证:

iOS需要发布,流程次要是有良多和apple打交道的处所比力麻烦,好比说开辟者证书,AppStore证书,用特定的证书打包你的IPA,提交到itunesconnect,审核等等,Xamarin的教程如下:

Xamarin有本人的组件商铺,里面有良多免费和收费的组件,刚起头就在这上面找工具,不外网速其实不成捧场,后来发觉免费插件这上面有的GitHub上几乎都有,所以利用GitHub又快又便利。

若是要在组件商铺中下载需要留意最初一步需要FQ,由于网站用了google供给的jquery库:

GitHub上Xamarin供给的一个常用的免费插件目次,这个插件库里有Xamarin官方的也有第三方的。我们的项目所利用的插件大多来自这个目次,里面有插件的NuGet和GitHub地址:

在GitHub上利用“Xamarin.Forms”为环节词进行搜刮,能够快速找到相关资本。

Xamarin-Forms-Labs:这个库很大,包含的工具良多,IOC容器、序列化组件、缓存组件、UI控件等,我们用得最多的仍是UI控件。可是用法不是像其他插件一样间接援用它的相关dll(之前测验考试过好久,间接利用会导致莫明其妙的问题),而是间接拷贝代码到我们项目中间接用,可是这个库也正如它的名字一样,是尝试性的,在GitHub引见上也能够看到可用控件里几乎所有控件都是beta形态,我们在利用过程中也发觉了不少Bug,所以项目里的代码有所改动,跟以前该当不太一样了。我们项目里参考并利用的控件有Checkbox、RadioButton等。

XamarinFormsGestureRecognizers:这个没有利用过,从申明来看是一个手势功能相关的库。XamarinForms里的控件默认只要Tap点击事务,其他手势操作都在平台内部,这个库就是教你如何将它们毗连起来,然后在PCL中写针对控件的手势操作代码。

Android很简单,在Windows上启动海马玩模仿器,模仿器启动时间比力长,但启动好之后就能够不消关了,然后只需要用Visual Studio设置Android项目为启动项,附加到模仿器进行调试即可;真机用Usb毗连利用同样的体例在IDE里调试。

iOS比力麻烦,需要打开Mac电脑上的BuildHost(若是Mac不在身边,可利用近程软件tightvnc操作,不外一台Mac同时只能供一人利用),然后Visual Studio设置iOS为启动项,可主动寻找局域网内的Mac电脑上的BuildHost,然后输入配对码即可毗连成功,若是失败请重启BuildHost再试;真机调试一样,不外真机只能毗连在Mac电脑上。

Forms中插件的利用也比力简单,根基上用一次就会了。起首,插件的利用体例都很同一,Forms的PCL中一般援用两个库,两个库都是PCL的,一个带Abstractions后缀,里面只定义了接口和实体,不包含逻辑代码;另一个不带Abstractions后缀,就像工场一样,只担任建立Abstractions法式集里定义的那些接口的实现者,建立的体例不是利用前面提到的Xamarin供给的依赖注入( UsingDependencyService),而是前提编译的体例间接New对应平台的实现者。在Andorid和iOS(或者WP)里援用了带Abstractions后缀的法式集,然后盾用一个真正的属于该平台的法式集(非PCL,能够挪用平台特殊API),这个法式集实现了Abstractions法式集里的接口,它的实例化对象在运转时被真正利用。若是我们本人写插件就能够利用Xamarin供给的依赖注入的体例,在特定平台内部写好功能类,然后在PCL中间接导出就能够利用了。

MvvmLight:Mvvm开辟模式的支撑库,还用到了里面的Ioc容器(SimpleIoc,我们系统里有两套Ioc容器,一个就是这个,另一个是Xamarin的依赖注入容器);还用到了它供给的导航组件。

<saging:供给打德律风、发短信、发email等功能。< p=””></saging:供给打德律风、发短信、发email等功能。<>

然后一些用得比力多的UI组件有:圆形图片、Checkbox、RadioButton、图片选择器等,有本人写的,也有在Xamarin-Forms-Labs的根本上改的。

碰到疑问的问题,上Xamarin官方论坛搜刮,大部门你碰到的问题上面该当城市有,根基用不着自动提问,这个地址我认为拜候频次相当高,地址如下:

没有对特定平台内部相关学问引见,我们团队的成员对平台特定API都领会太少,出格是涉及UI方面的,要控制这些学问的难度跟进修原生开辟无异,所以对一些难题处理起来比力吃力,好比之前的Android和iOS的Tab页样式差别问题(Android的Tab在屏幕上面,iOS的Tab在屏幕底部)。由于Tab属于页面,跟控件纷歧样,不克不及利用CustomRenderers的手艺重写样式,在论坛上搜刮的成果如下:

次要意义先是从设想的角度强调不要进行如许通用的设想,若是必然是通用样式那么给出的处理方案也是平台内部的,起首不说手艺门槛,这个实现体例跟Forms的思惟就是有冲突的,所以最好的方案就是在新APP里用Forms纯手写Tab页面。

退出移动版