我正在使用Xamarin的跨平台框架—Xamarin.Android回忆录
一、缘起
在自己给别家公司做兼职外包的时候,已经明确知道外包的活不是那么好干的,一般在经历了初期热血澎湃的激情后,逐渐冷淡,愤怒,再冷淡,再愤怒…,听上去好像高潮迭起,但令人尴尬的是,这高潮迭起我们都不想要,以至于最后都想草草结束,一走了之。但当我们把Android移动应用委托第三方开发后,还是未能料到产品会如此粗糙,在不能确定这产品要到何时才能与观众见面时,我们果断终止了恋爱。
于是接下来可选的方案有限,初期采用好评如潮的phonegap开发后,其界面的流畅速度,尤其以下滑滚动速度最让人不能接受,就像待嫁新娘一样,姗姗来迟不说,你拉她往前走,她却要在原地停顿一下,再走一点,非常不情愿,那既然不能在你情我愿的情况下共同生活,我只能转身留给她越来越模糊的背影…
最后,不得已,选择了我到现在还算比较满意的,比较强健的Xamarin.Android。一定要强调的是,使用Xamarin.Android开发的应用体积确实要比java开发出来的要大很多,基本算法是:2.9M的必备包+2.8M处理器兼容包(如果你不打算兼容X86架构的移动处理器,那么不用此包也行)=5.7M,就说你的应用刚开始就有5.7M的体型,但是我观察了很多热门常规应用(非游戏,游戏包一般都很大),都已经10几M,20多M,30多M,所以目前体积对我来说,不是太大问题。
二、当前
我们开发的是一款幼儿园的移动产品,这是我们目前产品的结构,我这里使用的Xamarin.Studio(XS),当然也可以使用VS2012之类的

下面看看前端展示层的具体结构

接下来的这个就是公共库,也即PCL库

关于PCL库,多说一些,PCL库也分为多个版本,每个版本适配的目标不一样,比如,我使用的PCL-78 就是下面这个模样

我建议使用这个最新的版本,一些成熟的类库,比如NewtonSoft.Json,还有SQLite的.NET PCL版本都能够使用。PCL类库听上去很美,当然实际上也不错,不过也有一些注意问题,比如WebRequest,不同的平台支持的WebRequest不太一样,某些属性用法还不一样,比如AddRange,添加Range头的重要性不言而喻,在wp8平台是这样使用:
protected override System.Net.HttpWebRequest BeginRequest()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.AllowReadStreamBuffering = false;
request.AllowWriteStreamBuffering = false;
if (this.existsFileLength > )
request.Headers["Range"] = string.Format("bytes={0}-", this.existsFileLength);
request.Method = "GET";
return request;
}
而在Xamarin.Android中是这样的:
protected override System.Net.HttpWebRequest BeginRequest ()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create (uriString);
request.AllowReadStreamBuffering = false;
request.AllowWriteStreamBuffering = false;
if (this.existsFileLength > )
request.AddRange (this.existsFileLength);
request.Method = "GET";
return request;
}
今天先写到这里,后面再慢慢介绍整个开发过程以及注意事项。
三、打针
我想每个开发者应该都很清楚,如果要开发完成一款完整的产品,需要很多脑力和精力的,如果想一蹴而就,似乎不太可能。想要在Xamarin平台上开发的朋友,了解一点英文是必要的,因为可能会经常去 bing.com 搜索外国资料,我相信这一点绝大部分朋友都没有问题。
忍受烦躁也是必须要具备的,对于一个新的东西,一些时候可能查了半天都没有解决,可能会上火,压制自己的火气或者在无人区发泄火气,并清楚的告诉自己,解决了一个又一个小问题,就离成功又进了一步。
如果真要想开发出一款产品,一定是需要实践的,老是看文章,不动手是不行的,也许有顶尖聪明的人(我也相信有)是能过目不忘或者能够看几遍就会的,但如果你自己评估自己,得到的结论自己不是顶尖聪明的,还是需要动手的。
四、没图你说个JB
鉴于看文章时,经常看到有人说“没图你说个JB”,我还是要贴上我们产品移动端的图,是android版本的。


五、源码呢
源码肯定是没有的,因为这是一个用于商业的产品,是不合适给出源码的。不过我以后的文章中关键的一些源码还是会给出的,便于理解。
六、真实产品
如果想体验一下产品,可以用手机访问 m.kankanbaobei.com 下载android版本的应用
体验账号:
老师:16856785678 密码:123456
家长:19856785678 密码:123456
完毕。
我正在使用Xamarin的跨平台框架—Xamarin.Android回忆录的更多相关文章
- C#移动跨平台开发(2)Xamarin移动跨平台解决方案是如何工作的?
概述 上一篇 C#移动跨平台开发(1)环境准备发布之后不久,无独有偶,微软宣布了开放.NET框架源代码并且会为Windows.Mac和Linux开发一个核心运行时(Core CLR),这也是开源的!I ...
- Xamarin.Forms入门-使用 Xamarin.Forms 来创建跨平台的用户界面
Xamarin.Forms 是一个跨平台的.基于原生控件的UI工具包,开发人员可以轻松的创建适用于 Android,iOS 以及 Windows Phone的用户界面.Xamarin.Forms 通过 ...
- Xamarin移动跨平台解决方案是如何工作
Xamarin移动跨平台解决方案是如何工作的? 概述 上一篇 C#移动跨平台开发(1)环境准备发布之后不久,无独有偶,微软宣布了开放.NET框架源代码并且会为Windows.Mac和Linux开发一个 ...
- 与Xamarin.Forms跨平台的用户界面
Xamarin.Forms 与Xamarin.Forms跨平台的用户界面 Xamarin的. 形式是一个跨平台的UI工具包,它允许开发人员 轻松地创建本地用户界面布局,可以共享 在Android,iO ...
- Xamarin.Forms跨平台开发入门-第二部分:深入解析
英文原文: https://developer.xamarin.com/guides/xamarin-forms/getting-started/hello-xamarin-forms/deepdiv ...
- Visual Studio跨平台开发Xamarin
台湾微软的一系列Visual Studio跨平台开发Xamarin的资料,上面还有视频.具体参看 http://www.microsoft.com/taiwan/newsletter/library/ ...
- xamarin跨平台iOS、Android 与Windows
http://xamarin.csdn.net/ Xamarin是一个行动App开发平台,提供跨平台开发能力,开发人员透过Xamarin开发工具与程序语言,即可开发出iOS.Android 与Wind ...
- Xamarin原生跨平台概述(精简概述,命中要害。PS:无图)
Xamarin原生跨平台:原生界面.原生性能.原生API(与H5比较): 1.C#可以访问Andrid.IOS原生API,也可以调用C#系统类型,如Syetem,System.IO;2.原理:基于Mo ...
- 使用Xamarin实现跨平台移动应用开发(转载)
刚在朋友圈看到张善友,转发的一条分享“使用Xamarin实现跨平台移动应用开发”,写的确实很详细得体,从收费到开源,这段时间xamarin受到不少质疑,如此文http://blog.csdn.net/ ...
随机推荐
- C语言 · 高精度加法
问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...
- opencv中Mat与IplImage,CVMat类型之间转换
opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...
- SQL Server 数据加密功能解析
SQL Server 数据加密功能解析 转载自: 腾云阁 https://www.qcloud.com/community/article/194 数据加密是数据库被破解.物理介质被盗.备份被窃取的最 ...
- javascript的api设计原则
前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博文同时也参考了其他一些文章,相关地址会在后面贴出来.很难做到 ...
- Java初始化过程
这篇文章主要讲解Java在创建对象的时候,初始化的顺序.主要从以下几个例子中讲解: 继承关系中初始化顺序 初始化块与构造器的顺序 已经加载过的类的初始化顺序 加载父类,会不会加载子类 创建子类对象会不 ...
- AbpZero--1.如何开始
1.加群 群号:104390185,下载这个文件并解压 用VS2015打开aspnet-zero-1.9.0.1 2.修改Web项目web.config连接字符串 <add name=" ...
- 如何为你的微信小程序体积瘦身?
众所周知,微信小程序在发布的时候,对提交的代码有1M大小的限制!所以,如果你正在写一个功能稍微复杂一点的小程序,就必须得时刻小心注意你的代码是不是快触及这个底线了. 在设计一个小程序之初,我们就需要重 ...
- ABAP实现屏幕自己刷新和跳转功能
ABAP开发工程中,有时候需要让跳转出的屏幕自动实现跳转和刷新的功能,该功能的实现需要在屏幕PBO 里面调用相应的事件执行. 关键代码为: SET TITLEBAR ' 屏幕自动程序'. IF g_c ...
- SharePoint 2016 入门视频教程
之前一直有朋友让自己录一些SharePoint的入门视频,之前没有太多时间,一个巧合的机会收到CSDN学院的邮件,可以在CSDN上发布视频教程,自己就录了一些.说起录视频也是蛮辛苦的,每天下班吃完饭要 ...
- Android中的LinearLayout布局
LinearLayout : 线性布局 在一般情况下,当有很多控件需要在一个界面列出来时,我们就可以使用线性布局(LinearLayout)了, 线性布局是按照垂直方向(vertical)或水平方向 ...