安卓实战案例入门教程

  这是一个 TMDb API 真实项目的安卓源码,点按下面标题下载相应源码:

Part 1: Main Activity UI

界面:


Part 2: 使用HTTP API

假设搜索电影的URL是:http://api.themoviedb.org/2.1/Movie.search/en/xml/APIKEY/Transformers

搜索人名的URL是:

http://api.themoviedb.org/2.1/Person.search/en/xml/APIKEY/Brad+Pitt

这个程序使用基于 Apache Commons HTTP 客户端包。

 

Part 3: 解析 XML响应

假设XML文件是这样。这是搜索电影Transformers” 和 “2007”的结果。

XML可以使用SAX或DOM解析。 SAX规范定义了一个基于事件的方法来实现解析器XML数据,并通过扫描,当某些部分的文档已经扫描完成,使用回调处理程序。而DOM规范定义基于树的导航阅读整个XML文档的方法。

一般来说,SAX的用法是更大的挑战,因为该API需要发展处理事件的回调函数,而DOM方法需要更大的内存占用。出于这个原因,我们要选择SAX的XML解析器实现。

 

Part 4: 从main activity实现API的异步调用

当向云端API异步调用时,界面显示:

这是使用安卓的Asnc Task

Part 5: 加载新的activities

解析了来自服务器端的XML响应,如何根据其加载新的活动页面显示呢?

使用Intent,我们使用Intent类构造器加入一个上下文和目标类. 这种直接硬加载指定类名称的方法类似反射。

...
Intent intent = 
 new Intent(MovieSearchAppActivity.this, MoviesListActivity.class);
intent.putExtra("movies", result);
startActivity(intent);
...

 

运行界面如下:

点击进入,出现IMDB 页面:

 

Part 6: 优化数据展示list view

之前数据展示比较丑陋,优化显示结果如下:

 

Part 7: 使用options菜单优化用户交互的对话框

我们在上面界面下加上可选操作按钮:

点按查看完整图片,出现效果:

 

Part 8:为首页创建一个AppWidget

AppWidget 是一个让开发者开发widget的框架,通过该源码,可以让用户加入窗口小工具:

选择我们的应用窗口:

加入后效果:

 

如果你点击电影名称,将激活浏览器加载到IMDB相应的电影页面。