我这个seekbar比较简单,是访问自己放进raw文件里的音乐文件;通过Mediapaly实现后台播放。

用if语句判断图片实现切换歌曲,seekbar可以拖动歌曲进度,用

Duration=mp4.getDuration();   //获取音乐长度
sb.setMax(Duration);    //设置SeekBar最大值为音乐文件持续时间

请实现建立raw文件夹放入歌曲Mp3,并放入相关图片。

XML界面:   (drawable的都是自己的图片,你可以相应修改)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@mipmap/musicbg"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/zjpic_2"android:layout_width="240dp"android:layout_height="240dp"android:layout_gravity="center_horizontal"android:layout_margin="15dp"android:src="@drawable/zjad1"/><TextViewandroid:id="@+id/song_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="歌曲名"android:textSize="20sp"/><SeekBarandroid:id="@+id/sb"android:layout_width="match_parent"android:layout_height="wrap_content" /><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:paddingLeft="8dp"android:paddingRight="8dp"><TextViewandroid:id="@+id/tv_progress"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="00:00"/><TextViewandroid:id="@+id/tv_total"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:text="00:00"/></RelativeLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/start_2"android:layout_width="0dp"android:layout_height="40dp"android:layout_margin="8dp"android:layout_weight="1"android:background="@drawable/bt_4"android:text="播放音乐"/><Buttonandroid:id="@+id/stop_2"android:layout_width="0dp"android:layout_height="40dp"android:layout_margin="8dp"android:layout_weight="1"android:background="@drawable/bt_4"android:text="暂停播放"/><Buttonandroid:id="@+id/last_2"android:layout_width="0dp"android:layout_height="40dp"android:layout_margin="8dp"android:layout_weight="1"android:background="@drawable/bt_4"android:text="上一首"/><Buttonandroid:id="@+id/next_2"android:layout_width="0dp"android:layout_height="40dp"android:layout_margin="8dp"android:layout_weight="1"android:background="@drawable/bt_4"android:text="下一首"/></LinearLayout><Buttonandroid:id="@+id/tuichu_1"android:layout_marginTop="50dp"android:layout_width="match_parent"android:layout_margin="25dp"android:layout_height="40dp"android:gravity="center"android:background="@drawable/bt_4"android:text="退出"/></LinearLayout>

效果图:

java逻辑页面:

package com.example.myapplication3;import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;import java.util.ArrayList;
import java.util.List;public class MusicActivity extends AppCompatActivity {/** Called when the activity is first created. */Button play,pause,last,next,exit;MediaPlayer mp1,mp2,mp3,mp4;SeekBar sb;Handler handler=new Handler();int Duration;private ImageView mbpicture1;private int id=R.drawable.zjad1;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_music);mbpicture1=(ImageView) findViewById(R.id.zjpic_2);play=(Button)findViewById(R.id.start_2);pause=(Button)findViewById(R.id.stop_2);last=(Button)findViewById(R.id.last_2);next=(Button)findViewById(R.id.next_2);exit=(Button)findViewById(R.id.tuichu_1);sb=(SeekBar)findViewById(R.id.sb);//找到相应Viewmp1 =MediaPlayer.create(this,Uri.parse("android.resource://" + getPackageName() + "/" +R.raw.zaijiananda));mp2 =MediaPlayer.create(this,Uri.parse("android.resource://" + getPackageName() + "/" +R.raw.rangwoliuzainishenbian));mp3 =MediaPlayer.create(this,Uri.parse("android.resource://" + getPackageName() + "/" +R.raw.aidehuiguixian));mp4 =MediaPlayer.create(this,Uri.parse("android.resource://" + getPackageName() + "/" +R.raw.zhoushengdayu));//后面的参数必须是URI形式的,所以要把相应路径转换成URIplay.setOnClickListener(playlis);pause.setOnClickListener(pauselis);last.setOnClickListener(lastlis);next.setOnClickListener(nextlis);exit.setOnClickListener(exitlis);sb.setOnSeekBarChangeListener(sbLis);if (id==R.drawable.zjad1){//监听器Duration=mp1.getDuration();//音乐文件持续时间}else if (id==R.drawable.cyx){Duration=mp2.getDuration();}else if (id==R.drawable.aiqinggongyu){Duration=mp3.getDuration();}else if (id==R.drawable.dayuhaitang){Duration=mp4.getDuration();}sb.setMax(Duration);//设置SeekBar最大值为音乐文件的持续时间}//start的按钮监听private OnClickListener playlis=new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubhandler.post(start);//调用handler播放}};//利用Runable线程;开始播放Runnable start=new Runnable(){@Overridepublic void run() {// TODO Auto-generated method stubif (id==R.drawable.zjad1){mp1.start();}else if (id==R.drawable.cyx){mp2.start();}else if (id==R.drawable.aiqinggongyu){mp3.start();}else if (id==R.drawable.dayuhaitang){mp4.start();}handler.post(updatesb);//用一个handler更新SeekBar}};//下一首Runnable next_3=new Runnable(){@Overridepublic void run() {// TODO Auto-generated method stubif (id==R.drawable.zjad1) {id = R.drawable.cyx;handler.post(start);mp1.pause();}else if (id==R.drawable.cyx) {id = R.drawable.aiqinggongyu;handler.post(start);mp2.pause();}else if (id==R.drawable.aiqinggongyu) {id = R.drawable.dayuhaitang;handler.post(start);mp3.pause();}else if (id==R.drawable.dayuhaitang) {id = R.drawable.zjad1;handler.post(start);mp4.pause();}mbpicture1.setImageResource(id);handler.post(updatesb);//用一个handler更新SeekBar}};//上一首Runnable last_3=new Runnable(){@Overridepublic void run() {// TODO Auto-generated method stubif (id==R.drawable.zjad1) {id = R.drawable.dayuhaitang;handler.post(start);mp1.pause();}else if (id==R.drawable.dayuhaitang) {id = R.drawable.aiqinggongyu;handler.post(start);mp4.pause();}else if (id==R.drawable.aiqinggongyu) {id = R.drawable.cyx;handler.post(start);mp3.pause();}else if (id==R.drawable.cyx) {id = R.drawable.zjad1;handler.post(start);mp2.pause();}mbpicture1.setImageResource(id);handler.post(updatesb);//用一个handler更新SeekBar}};//更新进度条Runnable updatesb =new Runnable(){@Overridepublic void run() {// TODO Auto-generated method stubif (id==R.drawable.zjad1){sb.setProgress(mp1.getCurrentPosition());}else if (id==R.drawable.cyx){sb.setProgress(mp2.getCurrentPosition());}else if (id==R.drawable.aiqinggongyu){sb.setProgress(mp3.getCurrentPosition());}else if (id==R.drawable.dayuhaitang){sb.setProgress(mp4.getCurrentPosition());}handler.postDelayed(updatesb, 1000);//每秒钟更新一次}};//暂停事件的监听private OnClickListener pauselis=new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubmp1.pause();mp2.pause();mp3.pause();mp4.pause();//暂停}};//下一首事件的监听private OnClickListener nextlis=new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubhandler.post(next_3);}};//上一首事件的监听private OnClickListener lastlis=new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubhandler.post(last_3);}};//seekbar事件的监听private OnSeekBarChangeListener sbLis=new OnSeekBarChangeListener(){@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {// TODO Auto-generated method stub}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {// TODO Auto-generated method stub}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {// TODO Auto-generated method stubif (id==R.drawable.zjad1){mp1.seekTo(sb.getProgress());//SeekBar确定位置后,跳到指定位置}else if (id==R.drawable.cyx){mp2.seekTo(sb.getProgress());}else if (id==R.drawable.aiqinggongyu) {mp3.seekTo(sb.getProgress());}else if (id==R.drawable.dayuhaitang) {mp4.seekTo(sb.getProgress());}}};//退出事件的监听private OnClickListener exitlis=new OnClickListener() {@Overridepublic void onClick(View view) {mp1.reset();mp2.reset();mp3.reset();mp4.reset();Intent intent=new Intent(MusicActivity.this,MainActivity.class);startActivity(intent);}};
}

我没有写Mediaplay.releas()释放资源,总是app闪退 ,有大佬知道因为啥吗?

感谢感谢

android studio seekbar 简单音乐播放器相关推荐

  1. Android Studio如何实现音乐播放器

    Android Studio如何实现音乐播放器 今天跟着大佬的步骤实现了一个和老师讲的不一样的简易音乐播放器,超级赞!再完善和改一下主题适合用作自己的音乐播放器. 原贴: Android Studio ...

  2. Android Studio如何实现音乐播放器(简单易上手)

    我们大家平时长时间打代码的时候肯定会感到疲惫和乏味,这个时候一边播放自己喜欢的音乐,一边继续打代码,心情自然也愉快很多.音乐带给人的听觉享受是无可比拟的,动听的音乐可以愉悦人的身心,让人更加积极地去热 ...

  3. Android如何实现简单音乐播放器的代码

    想必大家在学Android的音乐播放器时肯定会遇到很多困难,不怕,在这里我给大家分享一个很简单的音乐播放器,绝对会对你的学习有所帮助.本例子不难,但是也确能给你带来柳暗花明又一村的感觉.闲话少说,马上 ...

  4. android音乐播放器实现,Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer),供大家参考,具体内容如下 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个 ...

  5. android播放mp3功能,Android Studio实现简单音乐播放功能的示例代码

    项目要求 基于Broadcast,BroadcastReceiver等与广播相关的知识实现简单的音乐播放功能,包括音乐的播放.暂停.切换.进度选择.音量调整. 设计效果 (进度条时间刷新功能还没有实现 ...

  6. Android复习02(ListView具体操作[很详细]、简单音乐播放器)

    2020年 3月24日 星期二 Android录播回放 笔记[腾讯课堂] https://ke.qq.com/webcourse/index.html#cid=989760&term_id=1 ...

  7. Android:简单音乐播放器,实现歌曲列表显示,播放暂停,切歌等功能

    效果截图(大作业不建议用,太简单了) 源码下载 简单音乐播放器

  8. 安卓java音乐播放器下一曲_Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer),供大家参考,具体内容如下 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个 ...

  9. 简单音乐播放器的设计与实现

    简单音乐播放器的设计与实现 本文将介绍如何在Andriod Studio设计制作一个简单音乐播放器 功能说明 ​ 第二次安卓开发,所以要求相对上次而言难度稍微加大了一点.该程序实现的主要功能有上一曲, ...

最新文章

  1. jquery $.proxy使用 Jquery实现ready()的源码
  2. APP用户的生命周期价值(LTV)
  3. 程序集注册工具 (Regasm.exe)
  4. 50%的次日留存率,没有评论留言功能的same是如何做到的?
  5. C语言 | C语言实现高精度加法——数组加法(附源代码)
  6. android 蓝牙打印格式,Android蓝牙打印格式排版
  7. 【Tiny4412】EMMC启动最小网络文件系统
  8. 【ES6】Class 类的使用与继承方法详解
  9. 华为P50系列即将发布:麒麟9000E/9000处理器有戏?
  10. 【架构设计的艺术】Kafka如何通过精妙的架构设计优化JVM GC问题?
  11. python的mysql模块_Python中操作mysql的pymysql模块详解
  12. git切换分支出现head is now at_git寻根——^和~的区别
  13. java8学习之方法引用详解及默认方法分析
  14. 宁波大学计算机专硕分数线,2019宁波大学研究生分数线汇总(含2016-2019历年复试)...
  15. SQL注入风险与防范措施
  16. 【论文笔记】Learning Convolutional Networks for Content-weighted Image Compression
  17. 用Python做一个会旋转的五彩风筝
  18. centOS8安装vmtools
  19. 在linux中关闭防火墙
  20. 计算机网络原理自学考试课程,自学考试《计算机网络原理》课程全国统一命题考试说明...

热门文章

  1. A19.从零开始前后端react+flask - 删除前后端数据
  2. 运维自我提升:怎样做好企业 IT 运维工作
  3. 代理ip的使用场景。
  4. createfile调用失败_Java NIO Files.createFile()以NoSuchFileException失败
  5. 计算机图形学迷宫论文,三维迷宫的设计与制造
  6. 空间分析建模目的_房产测绘与二三维一体化建模研究——以连云港市为例
  7. 精灵随着鼠标的移动而移动
  8. 买天猫网店转让成为电商创业新趋势
  9. 【华为OD机试真题 Java】找出通过车辆最多颜色 (A卷2022Q4)
  10. Codevs 1066 引水入城 2010年NOIP全国联赛提高组 BFS + 贪心