【Jamendo是一个音乐平台与社群网站。Jamendo上的所有音乐都使用Creative Commons授权或自由艺术授权,这使得任何人可以免费下载,而且复制与分享的行为都是合法的。根据所使用的授权类型,对歌曲进行修改或者商业使用也都可行。Jamendo允许使用者透过串流方式,以收听Ogg Vorbis或MP3格式的音乐,并能透过BitTorrent与eDonkey网络下载音乐档案。】 --- 维基百科
本文要研究的开源项目是Teleca Poland编写维护的,代码托管在Github上面,地址是:https://github.com/telecapoland/jamendo-android,他的个人博客地址是:http://telecapoland.blogspot.com/ 不过貌似被墙了...这一系列文章本着学习研究的心态进行,首先感谢作者无私的分享,我才有这么一个机会来对一个完整的项目进行分析;其次,是人写出来的代码都会有bug,何况是一个人的单独创作,因此,我将不止于单纯的代码分析,将对代码中的bug进行修正,对可以改进的地方进行优化,并在上面的基础上实现一个自己比较满意的版本。最后,希望能有时间将这一系列文章写好写完整,现在就开始我们的分析吧!
作为开篇,按照惯例,先来看下Jamendo运行的主要界面,好有个感性的认识。
下面两张图是欢迎页面,左图显示的是新手教程,方便用户快速入门,但以对话框的形式呈现在用户体验上显得不够友好;右图是点击对话框的确定按钮后显示的Splash页面,之后就进入程序的主界面。
主界面的布局由两部分组成,顶部以Gallery形式显示专辑封面,下方则以ListView形式显示程序的主要功能点,如下图所示:
音乐播放界面是一个音乐播放器很重要的部分,尤其是UI设计得好的话很能给用户很好的第一印象,下面两张图片就是播放界面了,可以看到的是,UI设计的还是挺不错的,右图是将下方的SlidingDrawer拉起后显示的界面。
程序的界面部分就介绍到这里了,文章后面会附上编译出来的apk,懒得自己编译代码的同学可以直接下载安装试用(PS:上面的音乐资源挺不错的)。接着就来看下工程的包组织结构,从下图可以看到工程的包是以Android组件来进行划分的,也可以猜出代码架构并没有采用MVC模式。
ADT较新的版本都增加了Android Lint功能,做过C++开发的同学应该对历史悠久的PC-Lint不陌生,Android Lint功能类似,是Google提供的用于对Android工程进行静态代码分析的工具,Eclipse安装了支持Lint功能的ADT版本后,在工具栏将有Lint按钮
使用它检测Jamendo工程,将得出如下的lint输出信息如下
可以看到既有错误也有警告,后续我们在分析过程中将逐步清除这些lint。
开篇就先到这里额!
附件:Jamendo.apk下载地址:http://download.csdn.net/detail/ace1985/4509732