From 6fb428b536a584a10249b279a5afac9470c01e91 Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 29 Jan 2024 15:32:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=A1=A5=E5=85=85=E8=A7=A3=E9=94=81?= =?UTF-8?q?=E7=A4=BC=E7=89=A9=E7=82=B9=E5=87=BB=E8=81=94=E5=8A=A8=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/widget/GIftDialogUnlockPanel.kt | 11 +++ .../com/nnbc123/app/ui/widget/GiftDialog.java | 79 ++++++++++++++----- 2 files changed, 71 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/nnbc123/app/ui/widget/GIftDialogUnlockPanel.kt b/app/src/main/java/com/nnbc123/app/ui/widget/GIftDialogUnlockPanel.kt index 5c5e9f8a0..0afffb33e 100644 --- a/app/src/main/java/com/nnbc123/app/ui/widget/GIftDialogUnlockPanel.kt +++ b/app/src/main/java/com/nnbc123/app/ui/widget/GIftDialogUnlockPanel.kt @@ -3,6 +3,7 @@ package com.nnbc123.app.ui.widget import android.content.Context import android.util.AttributeSet import androidx.cardview.widget.CardView +import androidx.core.util.Consumer import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import com.nnbc123.app.R @@ -65,4 +66,14 @@ class GIftDialogUnlockPanel : CardView { fun refreshState() { adapter.notifyItemRangeChanged(0, adapter.itemCount, true) } + + fun setOnItemClickListener(listener: Consumer) { + adapter.setOnItemClickListener { adapter, view, position -> + val item = adapter.getItem(position) as? UnlockItem + val giftId = item?.getGiftData()?.giftId + if (giftId != null) { + listener.accept(giftId) + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/nnbc123/app/ui/widget/GiftDialog.java b/app/src/main/java/com/nnbc123/app/ui/widget/GiftDialog.java index c2767c3c2..f7091ede0 100644 --- a/app/src/main/java/com/nnbc123/app/ui/widget/GiftDialog.java +++ b/app/src/main/java/com/nnbc123/app/ui/widget/GiftDialog.java @@ -31,6 +31,7 @@ import androidx.appcompat.widget.AppCompatTextView; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.Group; import androidx.core.content.ContextCompat; +import androidx.core.util.Consumer; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -219,6 +220,7 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene private Group groupPrivilege; private GIftDialogUnlockPanel unLockPanel; private ImageView dressUpBannerView; + private SparseArray cacheItemView = new SparseArray<>(); private int mPrivilegePosition = 0; @@ -595,6 +597,15 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene if (DemoCache.readNewGiftTypeTipIndicator()) { viewNewFeature.setVisibility(View.VISIBLE); } + unLockPanel.setOnItemClickListener(new Consumer() { + @Override + public void accept(Integer integer) { + if (integer == null) { + return; + } + trySelectGift(integer); + } + }); } private void initVipPager() { @@ -626,6 +637,33 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene pagerViewVip.setPlayDelay(3000); } + private boolean trySelectGift(int giftId) { + if (pagerList == null) { + return false; + } + int currentPage = gridView.getCurrentItem(); + if (currentPage < 0 || currentPage >= pagerList.size()) { + return false; + } + List list = pagerList.get(currentPage); + if (list == null) { + return false; + } + for (int i = 0; i < list.size(); i++) { + GiftInfoVm item = list.get(i); + GiftInfo itemInfo = item.data(); + if (itemInfo != null && itemInfo.getGiftId() == giftId) { + onGiftClick(item); + RecyclerView recyclerView = cacheItemView.get(currentPage); + if (recyclerView != null) { + recyclerView.smoothScrollToPosition(i); + } + return true; + } + } + return false; + } + private void showLoadingAnimation() { Animation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, @@ -1158,7 +1196,6 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene layoutEmpty.setVisibility(View.GONE); gridView.setVisibility(View.VISIBLE); - SparseArray cacheItemView = new SparseArray<>(); lastSelectedItem = pagerList.get(defaultSelectPage).get(defaultSelectItem); setGoldOrRadishText(lastSelectedItem); gridView.setAdapter(new PagerAdapter() { @@ -1194,24 +1231,7 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene giftAdapter.addData(pagerList.get(pagePos)); giftAdapter.setOnItemClickListener(item -> { - if (item.data.isSendMsg()) { - etSendMessage.setVisibility(View.VISIBLE); - } else { - etSendMessage.setVisibility(View.GONE); - } - if (lastSelectedItem != null) { - lastSelectedItem.isSelect.set(false); - } - item.isSelect.set(true); - lastSelectedItem = item; - currentGiftInfo = item.data; - setGoldOrRadishText(lastSelectedItem); - updateLuckyBagIntro(); - updateWeekStarDesc(); - isShowDrawGiftModel = true; - updateDrawGift(); - updateUnLockTips(); - updateDressUpTips(); + onGiftClick(item); }); container.addView(recyclerView); return recyclerView; @@ -1228,6 +1248,27 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene gridView.setCurrentItem(defaultSelectPage); } + private void onGiftClick(GiftInfoVm item) { + if (item.data.isSendMsg()) { + etSendMessage.setVisibility(View.VISIBLE); + } else { + etSendMessage.setVisibility(View.GONE); + } + if (lastSelectedItem != null) { + lastSelectedItem.isSelect.set(false); + } + item.isSelect.set(true); + lastSelectedItem = item; + currentGiftInfo = item.data; + setGoldOrRadishText(lastSelectedItem); + updateLuckyBagIntro(); + updateWeekStarDesc(); + isShowDrawGiftModel = true; + updateDrawGift(); + updateUnLockTips(); + updateDressUpTips(); + } + private List loadGiftInfoList() { List giftInfos; String roomUid = null;