需求:在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(); }
如有問題,歡迎評論指正。