Android studio中音频播放与进度条联动
16lz
2021-01-23
-
布局文件
-
java文件
public class MainActivity extends AppCompatActivity { private SeekBar main_sb; private ImageButton main_ib; private MediaPlayer mediaplayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取控件id main_sb = findViewById(R.id.main_sb); main_ib = findViewById(R.id.main_ib); //设置按钮初始图标 main_ib.setImageResource(android.R.drawable.ic_media_play); main_ib.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //判断 if (mediaplayer==null){ //放入歌曲 mediaplayer=MediaPlayer.create(MainActivity.this,R.raw.mmd); //设置进度条最大长度为音频时长 main_sb.setMax(mediaplayer.getDuration()); //开始播放 mediaplayer.start(); //使按钮变为暂停图标 main_ib.setImageResource(android.R.drawable.ic_media_pause); //线程开始运行 new myThread().start(); }else if (mediaplayer.isPlaying()){ //如果正在播放 (暂停) mediaplayer.pause(); //改变按钮为播放 main_ib.setImageResource(android.R.drawable.ic_media_play); }else{ //如果没有播放 (播放) main_ib.setImageResource(android.R.drawable.ic_media_pause); } } }); //设置进度条快进效果main_sb.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) { mediaplayer.seekTo(main_sb.getProgress()); }}); } //设置一个线程运行进度条 class myThread extends Thread{ @Override public void run() { super.run(); //判断当前播放位置是否小于总时长 while (main_sb.getProgress()<=main_sb.getMax()) { //设置进度条当前位置为音频播放位置 main_sb.setProgress(mediaplayer.getCurrentPosition()); } } }}
更多相关文章
- android 拖拽图片&拖动浮动按钮到处跑
- android 根据apk文件路径获取图标
- Android 子线程 更新 UI 界面 总结
- Android SystemUI状态栏添加图标
- 获取未安装的APK图标
- Android 自定义shape圆形按钮
- Android点击2次返回按钮退出应用程序
- Android非UI线程访问UI线程的方法总结