fix:礼物弹窗适配RTL:Viewpager换ViewPager2

fix:移除礼物弹窗-余额文案
This commit is contained in:
max
2024-04-16 15:19:26 +08:00
parent a8bc86b5aa
commit 6277322ebe
2 changed files with 78 additions and 61 deletions

View File

@@ -31,7 +31,11 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import androidx.viewpager2.widget.ViewPager2;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.netease.nim.uikit.common.util.sys.ScreenUtil;
import com.trello.rxlifecycle3.components.support.RxAppCompatActivity;
@@ -128,7 +132,7 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
*/
private final boolean userOnMic;
private View mContentView;
private ViewPager gridView;
private ViewPager2 gridView;
private PageIndicatorView indicatorView;
private RecyclerView avatarList;
private GiftAvatarAdapter avatarListAdapter;
@@ -322,6 +326,38 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
params.dimAmount = 0f;
getWindow().setAttributes(params);
mSubscribe = IMNetEaseManager.get().getChatRoomEventObservable().subscribe(this::onReceiveRoomEvent);
disableSlideClose();
}
private void disableSlideClose(){
BottomSheetBehavior bottomSheetBehavior = getBottomSheetBehavior();
if (bottomSheetBehavior != null) {
bottomSheetBehavior.addBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
if(newState == BottomSheetBehavior.STATE_DRAGGING){
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
}
});
}
}
protected View getBottomSheetLayout() {
return getDelegate().findViewById(com.google.android.material.R.id.design_bottom_sheet);
}
protected BottomSheetBehavior<View> getBottomSheetBehavior() {
View view = getBottomSheetLayout();
if (view != null) {
return BottomSheetBehavior.from(view);
}
return null;
}
@Override
@@ -558,13 +594,6 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
total = total.setScale(0, RoundingMode.DOWN);
tvTextGold.setText(total.toPlainString());
}
String goldNumText = getContext().getString(R.string.gold_num_text, goldWalletInfo.getDiamondNum());
SpannableBuilder builder = new SpannableBuilder();
builder.append(context.getText(R.string.gift_wallet_overage), new ForegroundColorSpan(
context.getResources().getColor(R.color.white_transparent_50)))
.append(goldNumText);
tvTextGold.setText(builder.build());
}
private void setUpdateTipsText() {
@@ -822,68 +851,56 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
SparseArray<RecyclerView> cacheItemView = new SparseArray<>();
lastSelectedItem = pagerList.get(defaultSelectPage).get(defaultSelectItem);
setGoldOrRadishText(lastSelectedItem);
gridView.setAdapter(new PagerAdapter() {
@Override
public int getCount() {
return pagerList.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
gridView.setAdapter(new RecyclerView.Adapter() {
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int pagePos) {
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
RecyclerView recyclerView;
MultiTypeAdapter<GiftInfoVm> giftAdapter;
if (cacheItemView.get(pagePos) == null) {
recyclerView = new RecyclerView(context);
recyclerView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
recyclerView.setLayoutManager(new GridLayoutManager(context, 4));
giftAdapter = new MultiTypeAdapter<>(BR.item, true);
recyclerView.setAdapter(giftAdapter);
cacheItemView.put(pagePos, recyclerView);
} else {
recyclerView = cacheItemView.get(pagePos);
giftAdapter = (MultiTypeAdapter<GiftInfoVm>) recyclerView.getAdapter();
}
giftAdapter.clearAllItem();
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);
isShowDrawGiftModel = true;
updateDrawGift();
});
container.addView(recyclerView);
return recyclerView;
recyclerView = new RecyclerView(context);
recyclerView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
recyclerView.setLayoutManager(new GridLayoutManager(context, 4));
return new RecyclerView.ViewHolder(recyclerView){};
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
RecyclerView recyclerView = cacheItemView.get(position);
MultiTypeAdapter<GiftInfoVm> adapter = (MultiTypeAdapter) recyclerView.getAdapter();
adapter.getAllItems().clear();
container.removeView(recyclerView);
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
RecyclerView recyclerView = (RecyclerView) holder.itemView;
MultiTypeAdapter<GiftInfoVm> giftAdapter;
if (recyclerView.getAdapter() instanceof MultiTypeAdapter) {
giftAdapter = (MultiTypeAdapter) recyclerView.getAdapter();
} else {
giftAdapter = new MultiTypeAdapter<>(BR.item, true);
recyclerView.setAdapter(giftAdapter);
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);
isShowDrawGiftModel = true;
updateDrawGift();
});
}
giftAdapter.clearAllItem();
giftAdapter.addData(pagerList.get(position));
}
@Override
public int getItemCount() {
return pagerList.size();
}
});
gridView.setCurrentItem(defaultSelectPage);
gridView.addOnPageChangeListener(new OnPageSelectedListener() {
gridView.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
if (pagerList.size() > 1) {

View File

@@ -262,7 +262,7 @@
</LinearLayout>
<androidx.viewpager.widget.ViewPager
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"