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 { private GiftRoomAdapter roomAdapter; private List mGiftNumList; private SelectGiftNumPopupWindow mSelectGiftNumPopupWindow; private KeyboardPopupWindow mKeyboardPopupWindow; private List 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>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(List 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(); } } }