全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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


# Android  # 音乐播放器  # 控制台  # java音乐播放器编写源码  # java音乐播放器实现代码  # Java swing仿酷狗音乐播放器  # 教你轻松制作java视频播放器  # 教你轻松制作java音乐播放器  # 实例解析使用Java实现基本的音频播放器的编写要点  # 简单实现Android本地音乐播放器  # android多媒体音乐(MediaPlayer)播放器制作代码  # 利用java制作简单的音乐播放器  # 一曲  # 播放器  # 值为  # 播放歌曲  # 博客  # 第一首  # 跑马灯  # 图片处理  # 几个  # 我就  # 让他  # 下载地址  # 去看  # 自定义  # 很长  # 写到  # 这篇  # 上一篇  # 这几个  # 首歌 


相关文章: 如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  济南专业网站制作公司,济南信息工程学校怎么样?  如何高效利用200m空间完成建站?  如何设计高效校园网站?  如何访问已购建站主机并解决登录问题?  如何通过二级域名建站提升品牌影响力?  如何破解联通资金短缺导致的基站建设难题?  定制建站方案优化指南:企业官网开发与建站费用解析  微信小程序 input输入框控件详解及实例(多种示例)  企业微网站怎么做,公司网站和公众号有什么区别?  XML的“混合内容”是什么 怎么用DTD或XSD定义  建站之星云端配置指南:模板选择与SEO优化一键生成  如何用美橙互联一键搭建多站合一网站?  如何在阿里云购买域名并搭建网站?  如何用5美元大硬盘VPS安全高效搭建个人网站?  如何快速搭建FTP站点实现文件共享?  ,交易猫的商品怎么发布到网站上去?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  宁波自助建站系统如何快速打造专业企业网站?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  如何快速选择适合个人网站的云服务器配置?  北京网站制作网页,网站升级改版需要多久?  公司网站设计制作厂家,怎么创建自己的一个网站?  平台云上自助建站如何快速打造专业网站?  如何通过商城自助建站源码实现零基础高效建站?  如何彻底卸载建站之星软件?  ,想在网上投简历,哪几个网站比较好?  建站主机与服务器功能差异如何区分?  如何在万网主机上快速搭建网站?  利用JavaScript实现拖拽改变元素大小  如何做静态网页,sublimetext3.0制作静态网页?  高端建站如何打造兼具美学与转化的品牌官网?  如何在局域网内绑定自建网站域名?  如何用VPS主机快速搭建个人网站?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  公众号网站制作网页,微信公众号怎么制作?  大连网站制作公司哪家好一点,大连买房网站哪个好?  如何确认建站备案号应放置的具体位置?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  浅析上传头像示例及其注意事项  建站主机如何选?性能与价格怎样平衡?  如何安全更换建站之星模板并保留数据?  如何在云主机上快速搭建多站点网站?  宝塔新建站点为何无法访问?如何排查?  如何通过可视化优化提升建站效果?  建站之星官网登录失败?如何快速解决?  为什么Go需要go mod文件_Go go mod文件作用说明 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。