先理理思维导图
然后看界面是进度条加按钮
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.g160628_android27_playmusic.MainActivity">
<SeekBar
android:id="@+id/sb_main_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_media_play"
android:onClick="playOrpause"/>
</LinearLayout>
然后是Java类
MainActivity.java
package com.example.g160628_android27_playmusic; import android.media.MediaPlayer; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageButton; import android.widget.SeekBar; public class MainActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; private SeekBar sb_main_bar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取进度条的id sb_main_bar = (SeekBar) findViewById(R.id.sb_main_bar); //给进度条设置滑动监听 sb_main_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { //进度改变 } @Override public void onStartTrackingTouch(SeekBar seekBar) { //开始滑动 } //停止滑动(我们是滑动完进度条后才播放音乐) @Override public void onStopTrackingTouch(SeekBar seekBar) { //获取当前进度条的位置 int currentPosition=seekBar.getProgress(); //跳转到某个位置进行播放 mediaPlayer.seekTo(currentPosition); } }); } public void playOrpause(View view){ //换图标(拿到ImageButton) ImageButton imageButton= (ImageButton) view; if(mediaPlayer==null){//如果第一次点击播放 //实例化MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.s8); //播放 mediaPlayer.start(); //暂停图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); //获取音乐的播放时间 int time=mediaPlayer.getDuration(); //设置进度条的最大值 为 音乐的播放时间 sb_main_bar.setMax(time); //调用进度条的线程 new MyThread().start(); }else if(mediaPlayer.isPlaying()){//如果正在播放 //暂停 mediaPlayer.pause(); //播放图标 imageButton.setImageResource(android.R.drawable.ic_media_play); }else { //播放(接着放) mediaPlayer.start(); //暂停图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); } } //字线程 class MyThread extends Thread{ @Override public void run() { super.run(); while (sb_main_bar.getProgress()<sb_main_bar.getMax()){//当前的进度小于进度条的最大值 //获取音乐的当前播放位置 int currentPosition=mediaPlayer.getCurrentPosition(); sb_main_bar.setProgress(currentPosition); } } } }
效果是点击按钮可以播放音乐而且进度条也会走动