点唱房功能
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
package com.xscm.modulemain.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.blankj.utilcode.util.ScreenUtils;
|
||||
import com.xscm.modulemain.R;
|
||||
import com.xscm.modulemain.databinding.DialogGiftSongBinding;
|
||||
import com.xscm.moduleutil.adapter.GiftRoomAdapter;
|
||||
import com.xscm.moduleutil.base.BaseFragment;
|
||||
import com.xscm.moduleutil.base.CommonAppContext;
|
||||
import com.xscm.moduleutil.bean.GiftNumBean;
|
||||
import com.xscm.moduleutil.bean.RoonGiftModel;
|
||||
import com.xscm.moduleutil.event.GiftUserRefreshEvent;
|
||||
import com.xscm.moduleutil.event.RoomGiftClickToEvent;
|
||||
import com.xscm.moduleutil.http.BaseObserver;
|
||||
import com.xscm.moduleutil.http.RetrofitClient;
|
||||
import com.xscm.moduleutil.widget.dialog.BaseDialog;
|
||||
import com.xscm.moduleutil.widget.dialog.KeyboardPopupWindow;
|
||||
import com.xscm.moduleutil.widget.dialog.SelectGiftNumPopupWindow;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
import org.greenrobot.eventbus.ThreadMode;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
/**
|
||||
* 礼物歌曲对话框类
|
||||
* 该类可能用于实现一个展示歌曲相关礼物的对话框界面
|
||||
*/
|
||||
public class GiftSongDialog extends BaseDialog<DialogGiftSongBinding> {
|
||||
private GiftRoomAdapter roomAdapter;
|
||||
private List<GiftNumBean> mGiftNumList;
|
||||
private SelectGiftNumPopupWindow mSelectGiftNumPopupWindow;
|
||||
private KeyboardPopupWindow mKeyboardPopupWindow;
|
||||
|
||||
private List<RoonGiftModel> giftList = new ArrayList<>();
|
||||
private OnGiftConfirmListener onGiftConfirmListener;
|
||||
|
||||
public GiftSongDialog(@NonNull Context context) {
|
||||
super(context, com.xscm.moduleutil.R.style.dialogBottom);
|
||||
}
|
||||
|
||||
public interface OnGiftConfirmListener {
|
||||
void onGiftConfirm(String giftId,String name, String giftNum);
|
||||
}
|
||||
|
||||
public void setOnGiftConfirmListener(OnGiftConfirmListener listener) {
|
||||
this.onGiftConfirmListener = listener;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getLayoutId() {
|
||||
return R.layout.dialog_gift_song;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
EventBus.getDefault().register(this);
|
||||
setCancelable(true);
|
||||
setCanceledOnTouchOutside(true);
|
||||
Window window = getWindow();
|
||||
window.setGravity(Gravity.BOTTOM);
|
||||
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
|
||||
mBinding.tvGiveCoinNum.setOnClickListener(this::onClick);
|
||||
mBinding.tvGive.setOnClickListener(this::onClick);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void onClick(View view1) {
|
||||
if (view1.getId()== com.xscm.moduleutil.R.id.tv_give_coin_num){
|
||||
if (mSelectGiftNumPopupWindow == null) {
|
||||
|
||||
mSelectGiftNumPopupWindow = new SelectGiftNumPopupWindow(getContext(), (adapter, view, position) -> {
|
||||
GiftNumBean giftNumBean = (GiftNumBean) adapter.getItem(position);
|
||||
if ("0".equals(giftNumBean.getNumber())) {//自定义
|
||||
mKeyboardPopupWindow = new KeyboardPopupWindow(getContext(), getCurrentFocus());
|
||||
mKeyboardPopupWindow.refreshKeyboardOutSideTouchable(false);//false开启键盘 ,true关闭键盘
|
||||
mKeyboardPopupWindow.addRoomPasswordListener(new KeyboardPopupWindow.KeyboardCompleteListener() {//监听自定键盘的完成
|
||||
@Override
|
||||
public void inputComplete(String inputContent) {
|
||||
mBinding.tvGiveCoinNum.setText(inputContent);
|
||||
mKeyboardPopupWindow.releaseResources();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
mBinding.tvGiveCoinNum.setText(giftNumBean.getNumber());
|
||||
}
|
||||
mSelectGiftNumPopupWindow.dismiss();
|
||||
});
|
||||
}
|
||||
mSelectGiftNumPopupWindow.setData(mGiftNumList);
|
||||
mSelectGiftNumPopupWindow.showAtLocation(mBinding.tvGiveCoinNum, Gravity.BOTTOM | Gravity.RIGHT, 100, 230);
|
||||
|
||||
}else if (view1.getId()== com.xscm.moduleutil.R.id.tv_give){
|
||||
// 获取选中的礼物ID
|
||||
String selectedGiftId = null;
|
||||
String name="";
|
||||
for (RoonGiftModel giftModel : giftList) {
|
||||
if (giftModel.isChecked()) {
|
||||
selectedGiftId = giftModel.getGift_id();
|
||||
name=giftModel.getGift_name();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取礼物数量
|
||||
String giftNum = mBinding.tvGiveCoinNum.getText().toString();
|
||||
|
||||
// 如果有选中的礼物,通过回调传递数据
|
||||
if (selectedGiftId != null && onGiftConfirmListener != null) {
|
||||
onGiftConfirmListener.onGiftConfirm(selectedGiftId,name, giftNum);
|
||||
dismiss();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
mGiftNumList=new ArrayList<>();
|
||||
mGiftNumList.add(new GiftNumBean("20", "x20"));
|
||||
mGiftNumList.add(new GiftNumBean("15", "x15"));
|
||||
mGiftNumList.add(new GiftNumBean("10", "x10"));
|
||||
mGiftNumList.add(new GiftNumBean("5", "x5"));
|
||||
mGiftNumList.add(new GiftNumBean("1", "x1"));
|
||||
|
||||
RetrofitClient.getInstance().getGiftList(0,"",new BaseObserver<List<RoonGiftModel>>() {
|
||||
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(List<RoonGiftModel> roonGiftModels) {
|
||||
giftList= roonGiftModels;
|
||||
roomAdapter = new GiftRoomAdapter(CommonAppContext.getInstance(), roonGiftModels, 0, "0");
|
||||
mBinding.rvGift.setAdapter(roomAdapter);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onGiftClicRoomkTEvent(RoomGiftClickToEvent event) {
|
||||
String id = event.gift.getGift_id();
|
||||
for (int i = 0; i < giftList.size(); i++) {
|
||||
RoonGiftModel giftModel = giftList.get(i);
|
||||
if (giftModel.getGift_id().equals(id)) {
|
||||
if (giftModel.isChecked()) {
|
||||
giftModel.setChecked(false);
|
||||
} else {
|
||||
giftModel.setChecked(true);
|
||||
}
|
||||
} else {
|
||||
giftModel.setChecked(false);
|
||||
}
|
||||
}
|
||||
if (event.adapter != null && event.adapter.get() != null) {
|
||||
event.adapter.get().notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user