Android音乐播放器制作 加入控制台(三)

Android音乐播放器的运行效果

这篇博客还是接着上一篇Android音乐播放器制作写的,没看过的可以去看看。

其中这个效果(圆形ImageView和控件匀速旋转):

我前面的博客中写到过我就不一一细说了:
图片变成圆形:android图片处理,让图片变成圆形
旋转:android图片处理:让图片一直匀速旋转
文字跑马灯:TextView的跑马灯效果以及TextView的一些属性

具体实现

首先是布局文件中添加了如下代码,这些代码就是实现控制台的,给整体设置了一个invisible,为了让他点击有音乐播放的时候控制台才显示出来:

<RelativeLayout android:id="@+id/main_control_rl" android:layout_width="match_parent" android:layout_height="90dp" android:layout_alignParentBottom="true" android:background="@drawable/bottom_control_shape" android:visibility="invisible"> <com.duanlian.mymusicplayerdemo.view.CircleImageView android:id="@+id/control_imageview" android:layout_width="65dp" android:layout_height="65dp" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:src="@mipmap/duanlian" /> <TextView android:id="@+id/control_singer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="40dp" android:layout_marginTop="5dp" android:layout_toRightOf="@+id/control_imageview" android:text="歌手名" android:textSize="15sp" /> /> <TextView android:id="@+id/control_song" android:layout_width="150dp" android:layout_height="wrap_content" android:layout_marginLeft="15dp" android:layout_marginTop="5dp" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:layout_toRightOf="@+id/control_singer" android:text="歌曲的名字是不是很长" android:textSize="16sp" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="50dp" android:layout_alignParentBottom="true" android:layout_marginBottom="10dp" android:layout_marginLeft="10dp" android:layout_toRightOf="@+id/control_imageview"> <Button android:id="@+id/playing_btn_previous" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="30dp" android:background="@drawable/last_select" android:onClick="control" /> <Button android:id="@+id/playing_btn_pause" android:layout_width="55dp" android:layout_height="55dp" android:layout_centerHorizontal="true" android:background="@drawable/play_press" android:onClick="control" /> <Button android:id="@+id/playing_btn_next" android:layout_width="50dp" android:layout_height="50dp" android:layout_alignParentRight="true" android:layout_marginRight="30dp" android:background="@drawable/next_select" android:onClick="control" /> </RelativeLayout> </RelativeLayout>

其中的

<com.duanlian.mymusicplayerdemo.view.CircleImageView android:id="@+id/control_imageview" android:layout_width="65dp" android:layout_height="65dp" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:src="@mipmap/duanlian" />

这个是自定义圆形图片,之前的博客已经说过了,具体可以去看,然后控制的这种效果是背景添加了一个shap

代码如下:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="200.0dip" /> <solid android:color="#84C3D1" /> <stroke android:width="1.0dip" android:color="#ffff6000" /> </shape>

点击上一曲下一期的变化效果:

添加了一个点击的selector:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:drawable="@drawable/last_normal" /> <item android:state_focused="true" android:drawable="@drawable/last_normal" /> <item android:state_pressed="true" android:drawable="@drawable/last_press" /> </selector>

布局文件搞定,下面是代码中的实现
首先就是声明的控件和一些变量增加了 这几个:

private int playPosition;//当前播放歌曲的序号 private boolean IsPlay = false;//是否有歌曲在播放 private Button playPause;//暂停和播放按钮 private TextView song;//歌曲名 private TextView singer;//歌手名 private ImageView imageView;//控制台的图片 private Animation animation;//动画

点击ListView的一下改变:

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { //创建一个播放音频的方法,把点击到的地址传过去 //list.get(i).path这个就是歌曲的地址 play(list.get(i).path); ////播放暂停按钮图片变成播放状态 playPause.setBackgroundResource(R.drawable.pause_press); //把当前点击的item的position拿到,知道当前播放歌曲的序号 playPosition = i; //播放音乐的时候把是否在播放赋值为true IsPlay = true; //点击item让控制台显示出来 findViewById(R.id.main_control_rl).setVisibility(View.VISIBLE); } });

然后就是几个button的点击事件了:

/** * 底部控制栏的点击事件 * * @param view */ public void control(View view) { switch (view.getId()) { case R.id.playing_btn_previous://上一曲 //如果播放歌曲的序号小于或者等于0的话点击上一曲就提示已经是第一首了 if (playPosition <= 0) { Toast.makeText(MainActivity.this, "已经是第一首歌了", Toast.LENGTH_SHORT).show(); } else { //让歌曲的序号减一 playPosition--; //播放 play(list.get(playPosition).path); playPause.setBackgroundResource(R.drawable.pause_press); } break; case R.id.playing_btn_pause://暂停和播放 if (IsPlay == false) { //播放暂停按钮图片变成播放状态 playPause.setBackgroundResource(R.drawable.pause_press); //继续播放 mediaPlayer.start(); imageView.startAnimation(animation); IsPlay = true;//是否在播放赋值为true animation.start(); Toast.makeText(MainActivity.this, "播放" + list.get(playPosition).song, Toast.LENGTH_SHORT).show(); } else { //播放暂停按钮图片变成暂停状态 playPause.setBackgroundResource(R.drawable.play_press); //暂停歌曲 mediaPlayer.pause(); imageView.clearAnimation();//停止动画 IsPlay = false;//是否在播放赋值为false Toast.makeText(MainActivity.this, "暂停" + list.get(playPosition).song, Toast.LENGTH_SHORT).show(); } break; case R.id.playing_btn_next://下一曲 //歌曲序号大于或者等于歌曲列表的大小-1时,让歌曲序号为第一首 if (playPosition >= list.size() - 1) { playPosition = 0; } else { //点击下一曲让歌曲的序号加一 playPosition++; } //播放 play(list.get(playPosition).path); //播放暂停按钮图片变成播放状态 playPause.setBackgroundResource(R.drawable.pause_press); break; } }

最后还有设置歌曲名和歌手名的:

/** * 控制歌曲和歌手TextView的方法 */ private void setText() { song.setText(list.get(playPosition).song); song.setSelected(true);//当歌曲名字太长是让其滚动 singer.setText(list.get(playPosition).singer); }

就是这个简单

demo下载地址:音乐播放器

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-09-20 06:36:42

Android音乐播放器制作 加入控制台(三)的相关文章

Android音乐播放器制作 点击歌曲实现播放(二)

上次我们实现了把手机里的音频扫描到,然后放在list集合里面,用ListView展示在手机界面上,如果没有看过的可以去看看本人的博客:Android音乐播放器制作(一)扫描本地音乐显示在手机上 这次是在上一次的基础上直接继续写代码,几行代码实现点击那首歌曲就播放那首歌曲,系统已经提供了播放音频的对象了,直接用就可以了,具体如下: 1.声明一个MediaPlayer private MediaPlayer mediaPlayer;//播放音频的 2.实例化 //初始化 mediaPlayer =

Android音乐播放器制作 扫描本地音乐显示在手机(一)

思路 首先是扫描本地所有的音频文件,然后全部装进集合当中,接下来就是用ListView展示在屏幕上,大概就是这几个步骤了,接下来细讲 创建一个容器 进行过数据解析的朋友都应该知道JavaBean吧,用来装载解析出来的数据,我们这里同样也要创建一个JavaBean,用来装载扫描到的音频文件,具体的代码是: package com.duanlian.mymusicplayerdemo.bean; /** * Created by user on 2016/6/24. * 放置音乐 */ public

教你轻松制作Android音乐播放器

欣赏一下我们清爽的界面吧~ 如果是只用activity来制作这样的东西简直是太小儿科了,此处我们当然用的是service 首先我们先上service的代码: 1.如果我们要访问service的属性和方法,那么在activity肯定是以bindservice的方法实现的,而在service中的onbind方法也是必须要实现的,onbind返回的Ibinder对象在activity的serviceconnection中得到使用. 2.activity获取到Ibinder对象,可以进一步获取服务对象和

android音乐播放器中播放模式的设计

在音乐播放器中,播放模式一般放在音乐播放完毕后自动识别,如下给出逻辑代码,可根据需要添加合适 的代码 public static final int ALL = 0;//全部循环 public static final int SINGLE = 1;//单曲循环 public static final int RANDOM = 2;//随机 // 一首歌播放完成后(这里设置播放模式) public class Completed implements OnCompletionListener {

七大主流Android音乐播放器横向评测

核心功能对比随着智能手机和3G网络的普及,移动互联网日益成为人们生活娱乐的重心之一.在音乐领域,竞争也十分激烈,在PC之后,几大提供音乐服务的厂商正在加紧占据手机客户端.本期我们在 Android平台挑选了七家国内主流音乐播放器进行评测,主要针对核心功能.操作体验.曲库丰富程度.应用细节几方面进行横向对比.这七家主流音乐播放器分别是多米音乐.QQ音乐.酷我音乐.虾米音乐.酷狗音乐.天天动听和百度ting.以下是评测详情: 一.核心功能对比1.整合本地音乐本地音乐仍然是Android音乐播放器不可

android音乐播放器开发

问题描述 android音乐播放器开发 怎么实现让mp3格式的音乐显示在列表上并单击播放我是新手可不可以说的详细点 解决方案 ? 之所以选择android音乐播放器开发,是因为这里面涉及到了android的四大核心核心组件:Activity,Service,ContentProvider,BroadCast Receiver.对于学习理解这几大组件有着非常实际意义,而且再加上网络歌曲的播放,网络部分也会涉及到,所以还是很全面的一个练手项目.? 先来分析一个手机音乐播放器应该具备的基础功能,1.显

音效设置-android音乐播放器设置音效

问题描述 android音乐播放器设置音效 我在做一个音乐播放器,有一个功能是音效设置,我在网上翻了一下没有找到类似的技术.希望大家知道的能帮忙解决一下. 解决方案 Android有一个系统控制音效的 AudioManager: 可以根据 AudioManager 的对象获取音效服务:

android音乐播放器(改进版)

   这个是对以前做的那个音乐播放器的优化版本,因为以前把控制音乐播放放在了activity里,这个版本已经放在了service中,在服务中控制播放音乐,通过BroadcastReceiver传递一些数据,并且实现了在电话打过来时,停止播放音乐,打完电话继续播放.当然还有上一个版本的甩歌功能,用的是加速度传感器,控制音乐的播放暂停.最突出的功能算是加入了歌词同步的功能,真正实现了音乐歌词的同步播放.废话不多说看几张截图吧:         主界面还是和以前一样,点击某一首进入播放界面: 外观上看

关于android音乐播放器后台音乐服务停止的问题

问题描述 关于android音乐播放器后台音乐服务停止的问题 我在做一个android音乐播放器,当程序比较多的时候,手机会自动杀掉我的进程,但是我的服务还是在的,也就是0个进程和1个服务.可是我的服务里的音乐播放就停止了,随着进程被杀掉,音乐也停止了.可是我的服务还在啊,音乐为什么停了,我不知道为什么.求解惑. 解决方案 startService() 程序开启后服务不会随程序关闭而关闭,需要主动关闭 bindService() 服务会随着程序关闭而关闭 解决方案二: 请好好复习Service生