<pre name="code" class="html">
从开始学习Android之后,学到了什么也没总结过,那么利用找工作的空闲时间,就写写个人的第一个项目:既可以巩固知识以防止忘记,还可以分享出来以帮助更多人学习,
先来看看完成后的主体效果图。
一,音乐播放器的布局整个布局比较简单,就不一一赘述了。会把源码链接发上来
有需要的朋友可以下载参考。
第一张是主界面,第二张是播放时的界面,第三张是搜索歌曲时的界面。三个界面都写在一个XML文件里了,可能有人觉得很乱,isibility="invisible"一开始设置为隐藏就看不见了界面了。如果不想隐藏就设置为这个项目的话第二张和第三张效果图暂时是隐藏的。只有当监听事件触发了,界面才会出现。圆形图片是怎么来的呢?其实很简单,只需要用前辈们有很多绘制好的了,直接复制CircleImageView这个类过来用就好,<cn.tedu.ui.CircleImageView> 标签名是包名+类名需要手动填写
<cn.tedu.ui.CircleImageView
<cn.tedu.ui.CircleImageView
android:id="@+id/ivCMPic"
android:layout_width="46dp"
android:layout_height="46dp"
android:layout_marginLeft="24dp"
android:layout_marginTop="7dp"
android:onClick="doClick"
android:src="@drawable/timg" />
下面一段代码是红色箭头的监听触发事件。触发的动作可以任意发挥。(平滑,弹跳,淡入淡出等等),比较简单就不细说了,不懂得同志请请百度吧。
/**
* 添加监听
* @param view
*/
public void doClick(View v) {
switch (v.getId()) {
case R.id.ivCMPic://点击圆形图标 弹出播放界面
relativePlayMusic.setVisibility(View.VISIBLE);//一开始是隐藏,当点击之后,界面显示。
ScaleAnimation scaleAnimation = new ScaleAnimation(0.1f, 1f, 0.1f, 1f, 0, relativePlayMusic.getHeight());
scaleAnimation.setDuration(550);
//设置动作
scaleAnimation.setInterpolator(new AccelerateInterpolator());
relativePlayMusic.startAnimation(scaleAnimation);
break;
case R.id.ibSearch: //搜索音乐
searchMusic();
break;
case R.id.btnToSearch: //去搜索 显示搜索界面
relativeSearchMusic.setVisibility(View.VISIBLE);
TranslateAnimation anim2 = new TranslateAnimation(0, 0, -relativeSearchMusic.getHeight(), 0);
anim2.setDuration(550);
relativeSearchMusic.startAnimation(anim2);
break;
case R.id.btnCancel: //点击了取消
relativeSearchMusic.setVisibility(View.INVISIBLE);
TranslateAnimation anim3 = new TranslateAnimation(0, 0, 0, -relativeSearchMusic.getHeight());
anim3.setDuration(350);
relativeSearchMusic.startAnimation(anim3);
break;
}
}
二,音乐列表的获取和显示。
在Android中显示列表,需要用的ListView和Adapter。音乐列表成功显示之后,要做的是能够实现条目点击能够放歌曲。
定义一个继承Service的服务类PlayerMusicServie。用服务调用MediaPlayer提供的方法,完成播放歌曲的需求。关于音乐列表的获取,不同的音乐播放器都会有不同的方案,有的是有多重方案并用。例如说,Android本身有媒体库,可以全盘扫描音乐格式文件,也可以通过网络获取音乐等。通过API文档获取网络上的音乐数据是很常见的一种方式。这里就列举用到的两个百度音乐的接口,一个新歌榜,一个热歌榜。
新歌榜的接口
热歌榜的接口
type= 整数获取不同的榜单。