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下载地址:音乐播放器

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

(0)

相关推荐

  • Java swing仿酷狗音乐播放器

    今天给大家介绍下用Java swing开发一款音乐播放器,高仿酷狗音乐播放器,完整源码地址在最下方,本文只列出部分源码,因为源码很多,全部贴不下,下面还是老规矩.来看看运行结果: 下面我们来看看代码: 首先看一下主窗口的实现代码: package com.baiting; import java.awt.Dimension; import java.awt.Toolkit; import com.baiting.menu.CloseWindow; /** * 窗口 * @author lmq *

  • java音乐播放器实现代码

    本文实例为大家分享了java音乐播放器的具体代码,供大家参考,具体内容如下 这个是源码结构介绍 这个是界面,有点简陋,见笑了,但是基本上的东西都有了,没办法,没有美工的程序写的界面 直接上源代码Player.java package com.service; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Random; import javax.sound

  • 简单实现Android本地音乐播放器

    音乐播放需要调用service,在此,只是简单梳理播放流程. public class PlayMusicService extends Service { //绑定服务 调用服务的方法. @Override public IBinder onBind(Intent intent) { return null; } } <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to

  • 利用java制作简单的音乐播放器

    本文主要是用到java中的swing技术,以及JMFjar中的API,为大家分享了java音乐播放器的具体实现代码,供大家参考,具体内容如下 备注:需要用JDK1.8才能播放音乐MP3 package baidu; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import javax.swing.*; import javax.media.bean.playerbean.*;

  • 教你轻松制作java音乐播放器

    一.音乐播放器的实现原理 Javase的多媒体功能很弱,所以有一个专门处理多媒体的插件叫JMF,JMF提供的模型可大致分为七类 * 数据源(Data source) * 截取设备(Capture Device,包括视频和音频截取设备) * 播放器(Player) * 处理器(Processor) * 数据池(DataSink) * 数据格式(Format) * 管理器(Manager) 而我所做的这个音乐播放器MyMusicPlayer(这是我创建的类名)正是调用了JMF中的Player类来实现

  • 实例解析使用Java实现基本的音频播放器的编写要点

    Java音频播放,因为必须依赖到本地环境,所以JAVA在音频处理方面优势不大,或者说打从Java体系开发时就没太多的考虑音频播放因素,要知道最早的Java 1.1版本中,没有后来的javax.sound包,音频只能通过Applet包调取-- 遗憾的是,在图形程序开发中,我们的程序却又难免要使用到背景音乐.效果音等配合图像操作,哎,这实在是Sun大神给我们开的一个不打不小的玩笑.万幸后来Sun大神开眼,提供了javax.sound包,才解救我们于水深火热当中~ 但是继之而来的问题是,在javax.

  • android多媒体音乐(MediaPlayer)播放器制作代码

    本文实例为大家分享了android多媒体音乐播放器的具体实现代码,供大家参考,具体内容如下 首先,在AndroidManifest.xml中配置权限 <!-- 读取手机中的音乐 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 注释:Android多媒体音乐的几种来源 1.在andriod的应用中 MediaPlayer.create(this, R.r

  • java音乐播放器编写源码

    本文实例为大家分享了java音乐播放器的具体代码,供大家参考,具体内容如下 源码: package baidu; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import javax.swing.*; import javax.media.bean.playerbean.*; //这个包要用到JMF public class MP3 extends JFrame impleme

  • 教你轻松制作java视频播放器

    前言 跳过废话,直接看正文 当年入坑Java是因为它的跨平台优势.那时我认为,"编写一次,处处运行."这听上去多么牛逼,应该是所有语言发展的终极之道,java势必会一统天下. 然而事实证明,那时的我还是太年轻. 正所谓鱼和熊掌不可兼得,若要享受跨平台带来的方便,便不可避免地要接受性能上的不足.事实上,java一直在致力于提高虚拟机的性能(JIT等技术),但面对对实时计算性能要求很高或涉及到用硬件优化的任务(视频的硬件编码.解码)时,仍远远比不上c或c++.因此,很少能够看到有人用jav

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

    Android音乐播放器的运行效果 这篇博客还是接着上一篇Android音乐播放器制作写的,没看过的可以去看看. 其中这个效果(圆形ImageView和控件匀速旋转): 我前面的博客中写到过我就不一一细说了: 图片变成圆形:android图片处理,让图片变成圆形 旋转:android图片处理:让图片一直匀速旋转 文字跑马灯:TextView的跑马灯效果以及TextView的一些属性 具体实现 首先是布局文件中添加了如下代码,这些代码就是实现控制台的,给整体设置了一个invisible,为了让他点

  • 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音乐播放器简单实现案例

    目录 音乐播放器开发 SoundPool 播放多个音频 video View播放视频 控制摄像头摄像 音乐播放器开发 MediaPlayer 是Android 控制音频和视频文件播放类 1.创建MediaPlayer 对象 的Create方法 2.无can构造方法 -> setDataSorce -> prepare()加载创造文件 注意访问SDK需要授予权限 当Mediaplay.stop() 资源后需要重新加载资源,使用Mediaplay.setDataSource() 方法进行加载 ,最

  • Android 音乐播放器的开发实例详解

    本文将引导大家做一个音乐播放器,在做这个Android开发实例的过程中,能够帮助大家进一步熟悉和掌握学过的ListView和其他一些组件.为了有更好的学习效果,其中很多功能我们手动实现,例如音乐播放的快进快退等. 先欣赏下本实例完成后运行的界面效果: 首先我们建立项目,我使用的SDK是Android2.2的,然后在XML中进行布局. 上方是一个ListView用来显示我们的音乐列表,中间是一个SeekBar可以拖动当前音乐的播放进度,之所以用SeekBar而不用ProgressBar是因为我们需

  • android音乐播放器监听电话状态实现代码

    如下代码是监听电话的状态,代码简单不做介绍直接看代码: 复制代码 代码如下: private boolean mResumeAfterCall = false; private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {  @Override  public void onCallStateChanged(int state, String incomingNumber) {   if (state ==

  • Android版音乐播放器

    音乐播放器是一个非常常见的应用,这篇博客就是介绍如何制作一个简单的音乐播放器,这款音乐播放器具有以下的功能:播放歌曲.暂停播放歌曲..显示歌曲的总时长.显示歌曲的当前播放时长.调节滑块可以将歌曲调节到任何时间播放.退出音乐播放器. 实现效果如下 实现方式: 第一步:使用Android Studio创建一个Android工程,并且修改activity_main.xml文件 <?xml version="1.0" encoding="utf-8"?> <

  • Android媒体开发之音乐播放器

    本文实例为大家分享了Android媒体开发之音乐播放器的具体代码,供大家参考,具体内容如下 可以对音乐文件实现播放.暂停.重播和停止功能.退出应用和回到桌面时音乐停止. 主界面: 主界面配置文件mian.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andro

  • Android实现音乐播放器锁屏页

    本文实例为大家分享了Android音乐播放器锁屏页的具体代码,供大家参考,具体内容如下 首页我们先看一下效果图 下边来说一下实现逻辑,其主要思路就是新建一个activity使其覆盖在锁屏页上边. 一.我们新建一个LockActivty,既然是四大组件之一,必不可少的在AndroidManifest.xml中注册: <activity android:name=".LockActivity" android:excludeFromRecents="true" a

随机推荐