欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-18 14:02:16
android音乐播放器的运行效果 这篇博客还是接着上一篇android音乐播放器制作写的,没看过的可以去看看。 其中这个效果(圆形imageview和控件匀速...

android音乐播放器的运行效果

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

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

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

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

我前面的博客中写到过我就不一一细说了:
图片变成圆形: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

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

代码如下:

<?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> 

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

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

添加了一个点击的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下载地址:音乐播放器

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

上一篇:

下一篇: