Files
yusheng-android/MainModule/src/main/java/com/xscm/modulemain/dialog/GiftSongDialog.java
2025-11-18 19:39:16 +08:00

174 lines
6.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}
}
}