Jamendo是一个开源的在线音乐播放器。项目结构如图所示:
粗略介绍每个包作用:
com.teleca.jamendo.widget.*:用户自定义组建,主要包括进度条、错误条、专辑倒影图片控件、以及相关接口。
com.teleca.jamendo.util.:用户自定义视图切换器、图片缓存、自定义触摸监听器(播放进度)、以及分享,计算音乐时间,设置语言等工具帮助类。
com.teleca.jamendo.util.download.:提供下载远程音乐任务,以及相关接口回调,同时定义操作数据库相关接口,以及观察类。
com.teleca.jamendo.service.*:音乐的播放服务,以及下载服务。
com.teleca.jamendo.media.*:音乐播放器引擎以及相关接口(自定义类继承播放器MediaPlayer)。
com.teleca.jamendo.gestures.*:读取raw文件存取手势类,以及相关接口,同时自定义手势识别界面,用于手势操作播放音乐。
com.teleca.jamendo.dialog.*:自定义对话框基类,以及相关对话框。
com.teleca.jamendo.db.*:sqlite数据库操作相关类以及方法,包括相关基类,泛型。
com.teleca.jamendo.api.*:提供对象实体,歌曲、歌曲条目列表,歌曲专辑,歌手,以及相关IO异常处理等
com.teleca.jamendo.api.impl.*:通过服务端解析JSON格式数据并转化为相应实体对象,列表等。
com.teleca.jamendo.api.util:提供访问网络之工具类,url请求缓存,封装http请求等等。
com.teleca.jamendo.adapter.*:提供适配ListView列表适配器基类,以及相关子类.
com.teleca.jamendo.activity.*:提供操作界面activity,欢迎页,关于,播放浏览,播放,以及搜索,显示歌曲等界面。
当然我们可以粗略知道UI布局文件夹,包括UI布局,菜单布局,动画,xml(设置界面),值文件(不同语言版本),raw(手势文件)
首先我们对其包结构以及相关包用途有个大致的了解,接下来,再慢慢来看看这些界面,做到心中有数。
首先是:软件说明,以及欢迎界面。
然后是操作主界面(有音乐文件前,SD卡保存音乐文件后):
然后是设置以及关于,播放界面
搜索、专辑列表、播放列表,下载等界面
好了,就先到这里,接下来再慢慢根据UI分析布局,以及相对应的activity,以及一些主要类方法,因为很多内容都重复了,因此有一些基本的类就不再分析,大家可以用举一反三,我们这里主要是根据UI,以及模块功能分析,主要是按全局角度。