需求:在Android中,给定mp3文件播放路径url,打开特定页面加载播放
分析:不可能先将mp3文件下载完成后再播放,影响用户体验,所以需要找到一款可以直接播放线上mp3文件的控件;故而找到了MiniMusicView,犹豫MiniMusicView自带的布局带有局限性,所以我们使用自定义布局,以降低控件的耦合性,提高使用的灵活性。
1.首先在build.gradle中添加依赖
implementation 'com.henryblue.minimusicview:library:1.0.1'
2.自定义你的播放界面,大致包括 暂停/播放、上一曲、下一曲。。。大家可自行发挥,这里不多做介绍
下面完善Activity中的逻辑代码
3.新建MiniMusicView,并绑定到你自定义的xml上去
//新建 mMusicView = new MiniMusicView(this); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); addContentView(mMusicView, params); View view = View.inflate(WebviewActivity.this, R.layout.activity_minimusic, null); //根据你自定义的布局进行赋值 tvTitle = (TextView) view.findViewById(R.id.br_title); controlBtn = (ImageButton) view.findViewById(R.id.ib_play); preBtn = (ImageButton) view.findViewById(R.id.ib_pre); nextBtn = (ImageButton) view.findViewById(R.id.ib_next); imageView = (ImageView) view.findViewById(R.id.br_iamge); //将自定义xml与MiniMusicView绑定 mMusicView.addView(view);
4.播放mp3文件
mMusicView.startPlayMusic(url);
5.播放/暂停事件,这里用一个按钮控制,若当前正在播放则暂停,若已经暂停则继续播放,并更换相应的显示图标
if (isPlay) { mMusicView.pausePlayMusic(); controlBtn.setImageResource(R.drawable.music_play); isPlay = false; } else { mMusicView.resumePlayMusic(); controlBtn.setImageResource(R.drawable.music_pause); isPlay = true; }
6.在Activty销毁时,销毁MiniMusicView(最容易忽略)
@Override protected void onDestroy() { mMusicView.stopPlayMusic(); super.onDestroy(); }
如有问题,欢迎评论指正。