package com.qxcm.moduleutil.widget; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; import android.widget.SeekBar; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.databinding.DataBindingUtil; import com.qxcm.moduleutil.R; import com.qxcm.moduleutil.databinding.RoomDialogMusicWindowOpenBinding; import java.util.ArrayList; import java.util.List; import java.util.Random; public class MusicView extends FrameLayout { private Context mContext; private int playPattern = 1; //1循环播放 2单曲循环 3随机播放 private boolean isPaly = false; // private MusicTable mMusicTable; private OnItemClickListener mOnItemClickListener; // private List musicTables = new ArrayList<>(); private RoomDialogMusicWindowOpenBinding mBinding; public MusicView(@NonNull Context context) { super(context); initView(context); } public MusicView(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); initView(context); } public MusicView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context); } private void initView(Context context) { this.mContext = context; mBinding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.room_dialog_music_window_open,this,true); // playPattern = SpUtils.getPlayPattern(); initListener(); switch (playPattern) { case 1: // mBinding.ivPattern.setImageResource(R.mipmap.room_music_win_circulation); break; case 2: mBinding.ivPattern.setImageResource(R.mipmap.room_music_win_singlecircle); break; case 3: // mBinding.ivPattern.setImageResource(R.mipmap.room_music_win_random); break; } // mBinding.seekBar.setProgress(SpUtils.getChannelVolume()); mBinding.ivMinx.setOnClickListener(this::onClick); mBinding.ivMusicPlayState.setOnClickListener(this::onClick); mBinding.ivList.setOnClickListener(this::onClick); mBinding.ivNext.setOnClickListener(this::onClick); mBinding.ivLast.setOnClickListener(this::onClick); mBinding.ivPattern.setOnClickListener(this::onClick); mBinding.flParent.setOnClickListener(this::onMusicDismiss); mBinding.rlPlayRegion.setOnClickListener(this::onRegion); } private void initListener() { mBinding.seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean b) { if (b) { if (progress < 0) { progress = 0; } if (progress > 100) { progress = 100; } if (mOnItemClickListener != null) { mOnItemClickListener.setMusicVolume((int) (progress * 0.6)); } } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } //icon_music_stop public void setPalyState(boolean b) { this.isPaly = b; if (isPaly) { // mBinding.ivMusicPlayState.setImageResource(R.mipmap.room_music_win_start); } else { mBinding.ivMusicPlayState.setImageResource(R.mipmap.room_music_win_puase); } } // public void setData(MusicTable musicTable) { // this.mMusicTable = musicTable; // mBinding.tvMusicTitle.setText(mMusicTable.getTitle()); // mBinding.tvSinger.setText(mMusicTable.getAuthor()); // } public void onClick(View view) { int id = view.getId(); if (id == R.id.iv_minx) { if (mOnItemClickListener != null) { mOnItemClickListener.minimize(); } } else if (id == R.id.iv_list) { if (mOnItemClickListener != null) { mOnItemClickListener.openMusicList(); } } else if (id == R.id.iv_music_play_state) { if (mOnItemClickListener != null) { if (isPaly) { mOnItemClickListener.pausePlay(); } else { mOnItemClickListener.resumePlay(); } } } else if (id == R.id.iv_next) { next(); } else if (id == R.id.iv_last) { last(); } else if (id == R.id.iv_pattern) { if (playPattern == 1) { playPattern = 2; } else if (playPattern == 2) { playPattern = 3; } else if (playPattern == 3) { playPattern = 1; } switch (playPattern) { case 1: // mBinding.ivPattern.setImageResource(R.mipmap.room_music_win_circulation); break; case 2: mBinding.ivPattern.setImageResource(R.mipmap.room_music_win_singlecircle); break; case 3: // mBinding.ivPattern.setImageResource(R.mipmap.room_music_win_random); break; } // SpUtils.setPlayPattern(playPattern); } } public void addOnItemClickListener(OnItemClickListener onItemClickListener) { this.mOnItemClickListener = onItemClickListener; } // public void setMusicList(List lovalMusicData) { // this.musicTables = lovalMusicData; // } public interface OnItemClickListener { void minimize(); void openMusicList(); // void playMusic(MusicTable musicTable); void stopPlay(); void pausePlay(); void resumePlay(); void setMusicVolume(int progress); } // public void initData() { // musicTables = DbController.getInstance(mContext).queryMusicListAll(); // } public void next() { // initData(); // if (musicTables.size() == 0) { // return; // } // musicTables.size(); // int index = 0; // if (mMusicTable != null) { // for (int i = 0; i < musicTables.size(); i++) { // if (mMusicTable.getId().equals(musicTables.get(i).getId())) { // index = i; // break; // } // } // } // //下一首播放逻辑 // if (playPattern == 1) {//列表循环 // index++; // } else if (playPattern == 3) {//随机播放 // if (musicTables.size() > 1) { // Random random = new Random(); // index = random.nextInt(musicTables.size() - 1); // } // } // // if (index == musicTables.size()) { // mMusicTable = musicTables.get(0); // } else { // mMusicTable = musicTables.get(index); // } // if (mOnItemClickListener != null) { // mOnItemClickListener.playMusic(mMusicTable); // } // setData(mMusicTable); } public void last() { // initData(); // int index = 0; // for (int i = 0; i < musicTables.size(); i++) { // if (mMusicTable.getId().equals(musicTables.get(i).getId())) { // index = i; // break; // } // } // //上一首播放逻辑 // if (playPattern == 1) {//列表循环 // index--; // } else if (playPattern == 3) {//随机播放 // Random random = new Random(); // index = random.nextInt(musicTables.size() - 1); // } // if (index <= 0) { // mMusicTable = musicTables.get(musicTables.size() - 1); // } else { // mMusicTable = musicTables.get(index); // } // if (mOnItemClickListener != null) { // mOnItemClickListener.playMusic(mMusicTable); // } // setData(mMusicTable); } /** * 更新轮循方式 */ public void updateLoopType(int type) { playPattern = type; // if (type == 1) { // mBinding.ivPattern.setImageResource(R.mipmap.room_music_win_circulation); // } else if (type == 2) { // mBinding.ivPattern.setImageResource(R.mipmap.room_music_win_singlecircle); // } else { // mBinding.ivPattern.setImageResource(R.mipmap.room_music_win_random); // } } /** * 点击外部弹窗消失 */ public void onMusicDismiss(View view) { if (mOnItemClickListener != null) { mOnItemClickListener.minimize(); } } /** * 点击播放器内部无效 */ public void onRegion(View view) { } }