泡在网上的日子客户端开发计划

今天决定将搁置了很久的客户端开发继续下去,完善界面与代码,并跟大家分享整个开发过程。

事实上很久以前我已经做了一个客户端,但是那个时候的产品能力确实不行,总觉得欠缺些什么,于是没有继续下去,现在网站的功能稍微丰富了些,做一个客户端还是有它的实用价值,特别是开源代码模块,直接在手机上看demo的效果确实很有用。

前面我写了一篇用jsoup开发客户端的文章,但是我们网站的客户端并不会采用这种方式,因为服务端程序我可以随便改,所以会提供专门的客户端接口。关于服务端的接口需要说明的是很久以前我做的客户端是使用xml格式的数据,但是json的解析确实比xml简单快速,因此我在之后的接口中都是json格式,同时会慢慢的将以前的接口也改成json格式,不过在初期,可能是两者都有的。

网站的功能

客户端肯定不是网站的一个手机翻版,app既要充分利用手机自身的优势(比如开源代码的效果演示,这在网站上是做不到的),又要注意手机尺寸问题,需要充分提炼网站的内容,然后将他们放在合适的地方。比如在网站上,综合资讯、程序设计...、应用推荐是在一个层面上的,但是如果在app中应用推荐可能会单独设计;又比如网站的首页有很多内容,在app中我们可能会只保留栏目导航、幻灯播放以及精华文章三个部分。

网站主要有四个功能

  1. 文章阅读

  2. 开源代码极其效果演示

  3. 问答

  4. 笔记(注册会员有此功能,有时候有些知识点还不成文,但又非常有用,可以记在笔记里面,目前笔记还没有编辑功能,但是这个功能我会完善)。

  5. 书签功能(这个待定)。

代码组成

这个客户端的开发应该说参考了oschina的很多东西(网络模块,界面)。

现在我已经完成了大致的框架,等我整理下在明天放到github上。

界面上我使用时下很流行的tab结构。

下拉刷新我是用的自己从xlistview修改的一个库:https://github.com/jianghejie/PullToRefreshListView

listView图片的异步加载是改写自LazyList的一个库。

虽然这些库远远比不上那些有名的开源库,比如universal image loader等,但是我还是喜欢用自己的,因为它简单,没有太多冗余功能。

源码的演示功能我暂时采用了dynamic-load-apk-Apk动态加载框架,但是目前在资源文件上貌似会出现一些不太好解决的冲突。不过还有很多备选的插件框架可以选择。

网络数据请求是基于httpclient,具体实现参考了oschina的方法,

网站的数据访问接口

"/action/article_list.php";文章列表
"/plus/search.php";搜索
"/action/category_list.php";栏目
"/plus/view.php";文章内容
"/ask/";问答
"/plus/list.php?tid=31"; 开源代码

其中url路径和网站上一致的需要带特定参数才行。