174 lines
6.5 KiB
Java
174 lines
6.5 KiB
Java
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();
|
||
}
|
||
}
|
||
}
|