zoukankan      html  css  js  c++  java
  • 我正在使用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之类的

    image

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

    QQ图片20140707130447

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

    image

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

    image

    我建议使用这个最新的版本,一些成熟的类库,比如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 > 0)
                    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 > 0)
                    request.AddRange (this.existsFileLength);
                request.Method = "GET";
                return request;
            }

    今天先写到这里,后面再慢慢介绍整个开发过程以及注意事项。

    三、打针

    我想每个开发者应该都很清楚,如果要开发完成一款完整的产品,需要很多脑力和精力的,如果想一蹴而就,似乎不太可能。想要在Xamarin平台上开发的朋友,了解一点英文是必要的,因为可能会经常去 bing.com 搜索外国资料,我相信这一点绝大部分朋友都没有问题。

    忍受烦躁也是必须要具备的,对于一个新的东西,一些时候可能查了半天都没有解决,可能会上火,压制自己的火气或者在无人区发泄火气,并清楚的告诉自己,解决了一个又一个小问题,就离成功又进了一步。

    如果真要想开发出一款产品,一定是需要实践的,老是看文章,不动手是不行的,也许有顶尖聪明的人(我也相信有)是能过目不忘或者能够看几遍就会的,但如果你自己评估自己,得到的结论自己不是顶尖聪明的,还是需要动手的。

    四、没图你说个JB

    鉴于看文章时,经常看到有人说“没图你说个JB”,我还是要贴上我们产品移动端的图,是android版本的。

    Screenshot_2014-06-09-18-57-41 Screenshot_2014-06-17-17-59-36

    Screenshot_2014-06-09-18-56-37 Screenshot_2014-06-09-18-58-33

    五、源码呢

    源码肯定是没有的,因为这是一个用于商业的产品,是不合适给出源码的。不过我以后的文章中关键的一些源码还是会给出的,便于理解。

    六、真实产品

    如果想体验一下产品,可以用手机访问 m.kankanbaobei.com 下载android版本的应用

    体验账号:

    老师:16856785678 密码:123456

    家长:19856785678 密码:123456

    完毕。

  • 相关阅读:
    关于新人的培养与程序的测试
    关于23种设计模式的有趣见解
    看足球学习管理团队
    《Effective C#》Item 1
    测试系列之五回归测试
    VS2005 VS2008新建网站和新建项目里选Web应用程序区别
    SaaS的研究
    DropDownList控件选中项的深入研究
    用ie9浏览器若出现看视频有声音没图像的问题处理
    zencart目录页出现c.html网址的解决方法
  • 原文地址:https://www.cnblogs.com/lyyxjc/p/3829615.html
Copyright © 2011-2022 走看看