From 4ca1b0c9807bd8dd8aaba581a3c1234dbec14c7b Mon Sep 17 00:00:00 2001 From: huangjian Date: Tue, 2 Aug 2022 11:09:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EH5=E8=BF=9B=E5=85=A5=E6=88=BF?= =?UTF-8?q?=E9=97=B4=E6=89=93=E5=BC=80=E7=A4=BC=E7=89=A9=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erban/avroom/activity/AVRoomActivity.java | 52 ++++++++--- .../erban/avroom/fragment/BaseRoomFragment.kt | 6 +- .../yizhuan/erban/ui/webview/JSInterface.java | 19 ++++ .../yizhuan/erban/ui/widget/GiftDialog.java | 93 ++++++++++++++++--- .../anotherroompk/ShowGiftDialogEvent.java | 9 ++ 5 files changed, 146 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java b/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java index 2510f31d3..78cbc3be2 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/activity/AVRoomActivity.java @@ -106,6 +106,7 @@ import com.yizhuan.xchat_android_core.patriarch.event.PmDismissAllLimitDialogEve import com.yizhuan.xchat_android_core.patriarch.exception.PmRoomLimitException; import com.yizhuan.xchat_android_core.redpackage.RedPackageModel; import com.yizhuan.xchat_android_core.redpackage.RedPackageNotifyInfo; +import com.yizhuan.xchat_android_core.room.anotherroompk.ShowGiftDialogEvent; import com.yizhuan.xchat_android_core.room.bean.RoomInfo; import com.yizhuan.xchat_android_core.room.bean.RoomModeType; import com.yizhuan.xchat_android_core.room.dragonball.DragonBallModel; @@ -166,6 +167,7 @@ public class AVRoomActivity extends BaseMvpActivity?> : RxBus.get().toFlowable(ShowGiftDialogEvent::class.java) .compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW)) .observeOn(AndroidSchedulers.mainThread()) - .subscribe { onSendGiftBtnClick() } + .subscribe { onSendGiftBtnClick(it.giftId) } RxBus.get().toFlowable(ShowUserInfoDialogEvent::class.java) .compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW)) @@ -1126,10 +1126,10 @@ open class BaseRoomFragment?> : } } - private fun onSendGiftBtnClick() { + private fun onSendGiftBtnClick(giftId: Int = 0) { if (giftDialog == null) { GiftDialog.GIFT_DIALOG_FROM = "房间" - giftDialog = GiftDialog(context, 0, true) + giftDialog = GiftDialog(context, giftId) giftDialog?.setGiftDialogBtnClickListener(this@BaseRoomFragment) giftDialog?.setOnDismissListener { giftDialog = null } } diff --git a/app/src/main/java/com/yizhuan/erban/ui/webview/JSInterface.java b/app/src/main/java/com/yizhuan/erban/ui/webview/JSInterface.java index 2e3bd770f..c5f341ed6 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/webview/JSInterface.java +++ b/app/src/main/java/com/yizhuan/erban/ui/webview/JSInterface.java @@ -178,6 +178,25 @@ public class JSInterface { } + /** + * 调转房间 + * + * @param uid 房主uid + */ + @JavascriptInterface + public void openRoomForGiftId(String uid, int giftId) { + LogUtil.i(TAG, "openRoom:" + uid + "giftId=" + giftId); + if (!TextUtils.isEmpty(uid)) { + try { + long uidLong = Long.parseLong(uid); + mActivity.runOnUiThread(() -> AVRoomActivity.startForFromGiftId(context, uidLong, giftId)); + } catch (NumberFormatException e) { + e.printStackTrace(); + } + } + + } + /** * 获取用户ticket * diff --git a/app/src/main/java/com/yizhuan/erban/ui/widget/GiftDialog.java b/app/src/main/java/com/yizhuan/erban/ui/widget/GiftDialog.java index 375c48bfe..c1ee1ac06 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/widget/GiftDialog.java +++ b/app/src/main/java/com/yizhuan/erban/ui/widget/GiftDialog.java @@ -179,6 +179,7 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene * 被送礼物的人的uid */ private long uid; + private int giftId; private List micMemberInfos; private View giftNumLayout; private Disposable mSubscribe; @@ -200,6 +201,10 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene private WalletInfo goldWalletInfo; private int itemType = ITEM_TYPE_GOLD; + public GiftDialog(Context context, int giftId) { + this(context, 0, true, false, true, giftId); + } + public GiftDialog(Context context, long OtherUid, boolean isInRoom) { this(context, OtherUid, isInRoom, false); } @@ -208,6 +213,10 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene this(context, OtherUid, isInRoom, isMagic, true); } + public GiftDialog(Context context, long OtherUid, boolean isInRoom, boolean isMagic, boolean isHideMagicTab) { + this(context, OtherUid, isInRoom, isMagic, isHideMagicTab, 0); + } + /*** * * @param context context @@ -216,10 +225,11 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene * false表示不在房间,此时OtherUid就是被赠送人的ID * @param isHideMagicTab true则隐藏魔法,默认false */ - public GiftDialog(Context context, long OtherUid, boolean isInRoom, boolean isMagic, boolean isHideMagicTab) { + public GiftDialog(Context context, long OtherUid, boolean isInRoom, boolean isMagic, boolean isHideMagicTab, int giftId) { super(context, R.style.ErbanBottomSheetDialogDimFalse); this.context = context; this.uid = OtherUid; + this.giftId = giftId; this.micMemberInfos = new ArrayList<>(); this.micMemberInfos.addAll(transformAvatarList(OtherUid)); this.isInRoom = isInRoom; @@ -229,11 +239,16 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene this.userOnMic = AvRoomDataManager.get().checkIsOnMicByAccount(String.valueOf(uid)); } - private static List> beanTransformVm(Context context, List data, boolean isKnap, int pageSize) { + private static List> beanTransformVm(Context context, + List data, + boolean isKnap, + int pageSize, + @Nullable GiftInfo selectGiftInfo) { List> result = new ArrayList<>(); if (ListUtils.isListEmpty(data)) { return result; } + boolean hasSelectGift = false; for (int i = 0; i < data.size(); i++) { IItem item = null; List page = null; @@ -245,8 +260,14 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene page = result.get(result.size() - 1); } } + if (data.get(i) instanceof GiftInfo) { - item = createGiftItem(context, (GiftInfo) data.get(i), i == 0, isKnap); + boolean select = false; + if (selectGiftInfo != null && selectGiftInfo.getGiftId() == ((GiftInfo) data.get(i)).getGiftId()) { + hasSelectGift = true; + select = true; + } + item = createGiftItem(context, (GiftInfo) data.get(i), select, isKnap); } else if (data.get(i) instanceof MagicInfo) { item = createMagicItem(context, (MagicInfo) data.get(i), i == 0); } @@ -254,6 +275,9 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene page.add(item); } } + if (!hasSelectGift && result.get(0).get(0) instanceof GiftInfoVm) { + ((GiftInfoVm) result.get(0).get(0)).isSelect.set(true); + } return result; } @@ -408,11 +432,6 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene } }); - if (isMagic) { //如果是送魔法,则直接指向魔法的tab - giftIndicator.setPosition(GiftIndicator.TYPE_MAGIC); - } else { - giftIndicator.setPosition(GiftIndicator.TYPE_NORMAL); - } if (isHideMagicTab) { giftIndicator.hidePosition(GiftIndicator.TYPE_MAGIC); } else { @@ -458,8 +477,33 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene tvGiftValue = root.findViewById(R.id.tv_gift_value); ivFirstRecharge.setOnClickListener(this); tvLuckyBagIntro.setOnClickListener(this); - // 更新所有礼物 - updateGiftView(giftIndicator.getCurrrentType()); + if (giftId == 0) { + // 更新所有礼物 + giftIndicator.setPosition(GiftIndicator.TYPE_NORMAL); + updateGiftView(giftIndicator.getCurrrentType()); + } else { + int indicatorType = GiftIndicator.TYPE_NORMAL; + GiftInfo giftInfo = GiftModel.get().findGiftInfoById(giftId); + if (giftInfo != null) { + switch (giftInfo.getGiftType()) { + case GiftType.GIFT_TYPE_NORMAL: + indicatorType = GiftIndicator.TYPE_NORMAL; + break; + case GiftType.GIFT_TYPE_LUCKY: + indicatorType = GiftIndicator.TYPE_LUCKY; + break; + case GiftType.GIFT_TYPE_VIP: + indicatorType = GiftIndicator.TYPE_NOBLE; + break; + case GiftType.GIFT_TYPE_WEEK_STAR: + indicatorType = GiftIndicator.TYPE_WEEK; + break; + } + } + giftIndicator.setPosition(indicatorType); + updateGiftView(giftIndicator.getCurrrentType(), giftInfo); + } + goldWalletInfo = PayModel.get().getCurrentWalletInfo(); View descLayout = root.findViewById(R.id.desc_layout); @@ -630,11 +674,15 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene } currentMagicInfo = currentMagicInfoList.get(0); etSendMessage.setVisibility(View.GONE); - List> pagerList = beanTransformVm(context, currentMagicInfoList, false, 8); + List> pagerList = beanTransformVm(context, currentMagicInfoList, false, 8, null); setGridViewData(pagerList); } private void updateGiftView(int position) { + updateGiftView(position, null); + } + + private void updateGiftView(int position, @Nullable GiftInfo selectGiftInfo) { if (position == GiftIndicator.TYPE_MAGIC) { updateMagicView(); return; @@ -677,11 +725,11 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene } return; } - currentGiftInfo = currentGiftInfoList.get(0); + currentGiftInfo = selectGiftInfo == null ? currentGiftInfoList.get(0) : selectGiftInfo; if (currentGiftInfo.isSendMsg()) { etSendMessage.setVisibility(View.VISIBLE); } - pagerList = beanTransformVm(context, currentGiftInfoList, isKnap, position == GiftIndicator.TYPE_WEEK ? 4 : 8); + pagerList = beanTransformVm(context, currentGiftInfoList, isKnap, position == GiftIndicator.TYPE_WEEK ? 4 : 8, selectGiftInfo); setGridViewData(pagerList); if (isKnap) { tvGiftValue.setVisibility(View.VISIBLE); @@ -813,13 +861,27 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene return; } indicatorView.initIndicator(pagerList.size()); - indicatorView.setSelectedPage(0); + int defaultSelectPage = 0; + int defaultSelectItem = 0; + wai: + for (int i = 0; i < pagerList.size(); i++) { + List pager = pagerList.get(i); + for (int j = 0; j < pager.size(); j++) { + IItem iItem = pager.get(j); + if (iItem instanceof GiftInfoVm && ((GiftInfoVm) iItem).isSelect.get()) { + defaultSelectPage = i; + defaultSelectItem = j; + break wai; + } + } + } + indicatorView.setSelectedPage(defaultSelectPage); layoutEmpty.setVisibility(View.GONE); gridView.setVisibility(View.VISIBLE); indicatorView.setVisibility(pagerList.size() > 1 ? View.VISIBLE : View.INVISIBLE); SparseArray cacheItemView = new SparseArray<>(); - LastSelectedItem = pagerList.get(0).get(0); + LastSelectedItem = pagerList.get(defaultSelectPage).get(defaultSelectItem); setGoldOrRadishText(LastSelectedItem); gridView.setAdapter(new PagerAdapter() { @@ -896,6 +958,7 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene container.removeView(recyclerView); } }); + gridView.setCurrentItem(defaultSelectPage); gridView.addOnPageChangeListener(new OnPageSelectedListener() { @Override public void onPageSelected(int position) { diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/room/anotherroompk/ShowGiftDialogEvent.java b/core/src/main/java/com/yizhuan/xchat_android_core/room/anotherroompk/ShowGiftDialogEvent.java index 2be3710c8..6975d1848 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/room/anotherroompk/ShowGiftDialogEvent.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/room/anotherroompk/ShowGiftDialogEvent.java @@ -1,5 +1,14 @@ package com.yizhuan.xchat_android_core.room.anotherroompk; public class ShowGiftDialogEvent { + private int giftId; + public int getGiftId() { + return giftId; + } + + public ShowGiftDialogEvent setGiftId(int giftId) { + this.giftId = giftId; + return this; + } }