feat:恢复礼物弹窗-幸运礼物、周星礼物提示
This commit is contained in:
@@ -4,7 +4,6 @@ import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextUtils;
|
||||
@@ -32,16 +31,18 @@ import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.viewpager2.widget.ViewPager2;
|
||||
|
||||
import com.bumptech.glide.load.DataSource;
|
||||
import com.bumptech.glide.load.engine.GlideException;
|
||||
import com.bumptech.glide.request.RequestListener;
|
||||
import com.bumptech.glide.request.target.Target;
|
||||
import com.chwl.app.ui.utils.ImageLoadUtilsV2;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.chwl.app.ui.adapter.StarWeekAdapter;
|
||||
import com.chwl.app.ui.webview.DialogWebViewActivity;
|
||||
import com.chwl.core.UriProvider;
|
||||
import com.chwl.core.gift.bean.LuckyBagNoticeInfo;
|
||||
import com.chwl.core.gift.bean.SimpleUserInfo;
|
||||
import com.chwl.core.room.anotherroompk.ShowUserInfoDialogEvent;
|
||||
import com.chwl.core.utils.extension.StringExtensionKt;
|
||||
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.netease.nim.uikit.support.glide.GlideApp;
|
||||
import com.trello.rxlifecycle3.components.support.RxAppCompatActivity;
|
||||
import com.chwl.app.BR;
|
||||
import com.chwl.app.R;
|
||||
@@ -93,6 +94,8 @@ import com.chwl.library.utils.ListUtils;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.chwl.library.utils.SingleToastUtil;
|
||||
import com.chwl.library.utils.TextWatcherWrapper;
|
||||
import com.zhpan.bannerview.BannerViewPager;
|
||||
import com.zhpan.bannerview.utils.BannerUtils;
|
||||
import com.zyyoona7.lib.EasyPopup;
|
||||
import com.zyyoona7.lib.HorizontalGravity;
|
||||
import com.zyyoona7.lib.VerticalGravity;
|
||||
@@ -107,7 +110,9 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.Single;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
@@ -164,7 +169,6 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
private View sendContainer;
|
||||
private TextView tvTextGold;
|
||||
private TextView tvRecharge;
|
||||
private View llStarWeek;
|
||||
private List<MicMemberInfo> micMemberInfos;
|
||||
private View giftNumLayout;
|
||||
private Disposable mSubscribe;
|
||||
@@ -185,6 +189,25 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
@Nullable
|
||||
private DrawGiftHelper drawGiftHelper;
|
||||
private ImageView ivSuperLuckyGiftTips;
|
||||
private View flLuckyDesc;
|
||||
private RecyclerView rvLuckyMsg;
|
||||
|
||||
|
||||
private BannerViewPager<SimpleUserInfo> mStarWeekBanner;
|
||||
|
||||
private TextView tvLuckyBagIntro;
|
||||
|
||||
@Nullable
|
||||
private Disposable luckyMsgDisposable;
|
||||
private BaseQuickAdapter<LuckyBagNoticeInfo, BaseViewHolder> luckyMsgAdapter;
|
||||
|
||||
|
||||
private ImageView ivAvatarCharm;
|
||||
private ImageView ivAvatarLevel;
|
||||
private TextView tvNickCharm;
|
||||
private TextView tvNickLevel;
|
||||
private View llStarWeek;
|
||||
|
||||
|
||||
public GiftDialog(Context context, int giftId) {
|
||||
this(context, 0, true, false, true, giftId);
|
||||
@@ -387,6 +410,11 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
@SuppressLint("CheckResult")
|
||||
private void init(View root) {
|
||||
root.findViewById(R.id.tv_recharge).setOnClickListener(this);
|
||||
tvLuckyBagIntro = findViewById(R.id.tv_lucky_bag_intro);
|
||||
tvLuckyBagIntro.setOnClickListener(this);
|
||||
mStarWeekBanner = findViewById(R.id.star_week_list);
|
||||
flLuckyDesc = findViewById(R.id.fl_lucky_desc);
|
||||
rvLuckyMsg = findViewById(R.id.rv_lucky_msg);
|
||||
sendGiftButton = root.findViewById(R.id.btn_send);
|
||||
layoutEmpty = root.findViewById(R.id.layout_empty);
|
||||
layoutLoading = root.findViewById(R.id.layout_loading);
|
||||
@@ -449,6 +477,10 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
tvTextGold = root.findViewById(R.id.tv_text_gold);
|
||||
tvRecharge = root.findViewById(R.id.tv_recharge);
|
||||
|
||||
ivAvatarCharm = root.findViewById(R.id.iv_avatar_charm);
|
||||
ivAvatarLevel = root.findViewById(R.id.iv_avatar_level);
|
||||
tvNickCharm = root.findViewById(R.id.tv_nick_charm);
|
||||
tvNickLevel = root.findViewById(R.id.tv_nick_level);
|
||||
llStarWeek = root.findViewById(R.id.ll_star_week);
|
||||
|
||||
giftNumberText = root.findViewById(R.id.gift_number_text);
|
||||
@@ -657,6 +689,7 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
position == GiftIndicator.TYPE_SING_ROOM ||
|
||||
position == GiftIndicator.TYPE_DRAW_GIFT) {
|
||||
showEmptyView();
|
||||
updateWeekStarDesc();
|
||||
isShowDrawGiftModel = false;
|
||||
updateDrawGift();
|
||||
updateSuperLuckyGiftTips();
|
||||
@@ -680,7 +713,9 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
}
|
||||
}
|
||||
isShowDrawGiftModel = false;
|
||||
updateLuckyBagIntro();
|
||||
updateSuperLuckyGiftTips();
|
||||
updateWeekStarDesc();
|
||||
updateDrawGift();
|
||||
giftIndicator.post(() -> {
|
||||
if (position < GiftIndicator.TYPE_WEEK) {
|
||||
@@ -705,6 +740,125 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void updateLuckyBagIntro() {
|
||||
if (currentGiftInfo == null ||
|
||||
(TextUtils.isEmpty(currentGiftInfo.getGiftExplainUrl()) && currentGiftInfo.getGiftType() != GiftType.GIFT_TYPE_LUCKY)) {
|
||||
tvLuckyBagIntro.setVisibility(View.GONE);
|
||||
} else {
|
||||
tvLuckyBagIntro.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if (luckyMsgDisposable != null) luckyMsgDisposable.dispose();
|
||||
if (currentGiftInfo == null || currentGiftInfo.getGiftType() != GiftType.GIFT_TYPE_LUCKY) {
|
||||
flLuckyDesc.setVisibility(View.GONE);
|
||||
} else {
|
||||
flLuckyDesc.setVisibility(View.VISIBLE);
|
||||
if (luckyMsgAdapter == null) {
|
||||
luckyMsgAdapter = new BaseQuickAdapter<>(R.layout.item_lucky_gift_msg) {
|
||||
@Override
|
||||
protected void convert(@NonNull BaseViewHolder helper, LuckyBagNoticeInfo noticeInfo) {
|
||||
TextView tvName = helper.getView(R.id.tv_name);
|
||||
TextView tvLucky = helper.getView(R.id.tv_luck);
|
||||
TextView tvLuckyName = helper.getView(R.id.tv_luck_name);
|
||||
String nickName = RegexUtil.getPrintableString(noticeInfo.getNick());
|
||||
tvName.setText(nickName);
|
||||
tvLucky.setText(noticeInfo.getLuckyBagName());
|
||||
tvLuckyName.setText(noticeInfo.getGiftName());
|
||||
}
|
||||
};
|
||||
rvLuckyMsg.setAdapter(luckyMsgAdapter);
|
||||
rvLuckyMsg.setLayoutManager(new ScollLinearLayoutManager(context, ScollLinearLayoutManager.HORIZONTAL, false));
|
||||
rvLuckyMsg.setOnTouchListener((v, event) -> true);
|
||||
}
|
||||
|
||||
|
||||
luckyMsgDisposable = GiftModel.get().getLuckyGiftMsgList()
|
||||
.compose(RxHelper.bindContext(context))
|
||||
.doOnSuccess(luckyBagNoticeInfos -> luckyMsgAdapter.setNewData(luckyBagNoticeInfos))
|
||||
.toObservable()
|
||||
.flatMap(luckyBagNoticeInfos -> Observable.intervalRange(0, Integer.MAX_VALUE, 0, 5, TimeUnit.SECONDS))
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(aLong -> {
|
||||
int index = aLong.intValue() % luckyMsgAdapter.getItemCount();
|
||||
if (index == 0) {
|
||||
rvLuckyMsg.scrollToPosition(index);
|
||||
} else {
|
||||
rvLuckyMsg.smoothScrollToPosition(index);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void updateWeekStarDesc() {
|
||||
|
||||
if (giftIndicator.getCurrrentType() == GiftIndicator.TYPE_WEEK) {
|
||||
flLuckyDesc.setVisibility(View.GONE);
|
||||
llStarWeek.setVisibility(View.GONE);
|
||||
mStarWeekBanner.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
llStarWeek.setVisibility(View.GONE);
|
||||
mStarWeekBanner.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentGiftInfo == null) {
|
||||
llStarWeek.setVisibility(View.INVISIBLE);
|
||||
mStarWeekBanner.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
|
||||
SimpleUserInfo firstCharmRankUser = currentGiftInfo.getFirstCharmRankUser();
|
||||
if (firstCharmRankUser != null) {
|
||||
ImageLoadUtils.loadImage(getContext(), firstCharmRankUser.getAvatar(), ivAvatarCharm);
|
||||
ivAvatarCharm.setOnClickListener(v -> {
|
||||
if (firstCharmRankUser.getUid() == 0) return;
|
||||
EventBus.getDefault().post(new ShowUserInfoDialogEvent(String.valueOf(firstCharmRankUser.getUid())));
|
||||
});
|
||||
tvNickCharm.setText(StringExtensionKt.subAndReplaceDot(firstCharmRankUser.getNick(), 10));
|
||||
} else {
|
||||
ivAvatarCharm.setOnClickListener(null);
|
||||
ivAvatarCharm.setImageResource(R.drawable.default_avatar);
|
||||
tvNickCharm.setText(ResUtil.getString(R.string.ui_widget_giftdialog_013));
|
||||
}
|
||||
|
||||
SimpleUserInfo firstLevelRankUser = currentGiftInfo.getFirstLevelRankUser();
|
||||
if (firstLevelRankUser != null) {
|
||||
ImageLoadUtils.loadImage(getContext(), firstLevelRankUser.getAvatar(), ivAvatarLevel);
|
||||
ivAvatarLevel.setOnClickListener(v -> {
|
||||
if (firstLevelRankUser.getUid() == 0) return;
|
||||
EventBus.getDefault().post(new ShowUserInfoDialogEvent(String.valueOf(firstLevelRankUser.getUid())));
|
||||
});
|
||||
tvNickLevel.setText(StringExtensionKt.subAndReplaceDot(firstLevelRankUser.getNick(), 10));
|
||||
} else {
|
||||
ivAvatarLevel.setOnClickListener(null);
|
||||
ivAvatarLevel.setImageResource(R.drawable.default_avatar);
|
||||
tvNickLevel.setText(ResUtil.getString(R.string.ui_widget_giftdialog_014));
|
||||
}
|
||||
|
||||
List<SimpleUserInfo> list = new ArrayList<>();
|
||||
if (firstCharmRankUser != null) {
|
||||
list.add(firstCharmRankUser);
|
||||
} else {
|
||||
list.add(new SimpleUserInfo());
|
||||
}
|
||||
if (firstLevelRankUser != null) {
|
||||
list.add(firstLevelRankUser);
|
||||
} else {
|
||||
list.add(new SimpleUserInfo());
|
||||
}
|
||||
|
||||
mStarWeekBanner.setAdapter(new StarWeekAdapter());
|
||||
mStarWeekBanner.setPageMargin(UIUtil.dip2px(context, 10))
|
||||
.setScrollDuration(1200)
|
||||
.setInterval(4500)
|
||||
.setRevealWidth(BannerUtils.dp2px(0f))
|
||||
.setOnPageClickListener((clickedView, position) -> {
|
||||
DialogWebViewActivity.start(context, UriProvider.getWeekStarUrl(), true);
|
||||
})
|
||||
.create(list);
|
||||
}
|
||||
|
||||
private void updateDrawGift() {
|
||||
if (drawGiftHelper == null) {
|
||||
drawGiftHelper = new DrawGiftHelper((Activity) context);
|
||||
@@ -911,7 +1065,9 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
currentGiftInfo = item.data;
|
||||
setGoldOrRadishText(lastSelectedItem);
|
||||
isShowDrawGiftModel = true;
|
||||
updateLuckyBagIntro();
|
||||
updateSuperLuckyGiftTips();
|
||||
updateWeekStarDesc();
|
||||
updateDrawGift();
|
||||
});
|
||||
}
|
||||
@@ -1255,6 +1411,14 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
case R.id.iv_draw_gift_remove_all:
|
||||
clearDrawGift();
|
||||
break;
|
||||
case R.id.tv_lucky_bag_intro:
|
||||
if (currentGiftInfo == null) break;
|
||||
if (currentGiftInfo.getGiftType() == GiftType.GIFT_TYPE_LUCKY) {
|
||||
DialogWebViewActivity.start(context, UriProvider.getLuckyGiftRule(currentGiftInfo.getGiftId()), true);
|
||||
} else {
|
||||
DialogWebViewActivity.start(context, currentGiftInfo.getGiftExplainUrl(), true);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@@ -18,6 +18,55 @@
|
||||
tools:layout_height="50dp"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/fl_lucky_desc"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:background="@drawable/bg_gift_dialog_lucky_desc"
|
||||
android:visibility="gone"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintBottom_toTopOf="@id/ll_dialog_bottom_gift"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
tools:visibility="visible">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_lucky_msg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="@dimen/dp_50"
|
||||
android:layout_toStartOf="@+id/tv_lucky_bag_intro"
|
||||
tools:itemCount="1"
|
||||
tools:listitem="@layout/item_lucky_gift_msg" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/tv_lucky_bag_intro"
|
||||
android:text="@string/play_desc"
|
||||
android:textSize="@dimen/sp_10"
|
||||
android:textColor="@color/color_EB547C"
|
||||
android:textStyle="bold"
|
||||
android:layout_marginEnd="@dimen/dp_13"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<com.zhpan.bannerview.BannerViewPager
|
||||
android:id="@+id/star_week_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:visibility="gone"
|
||||
app:bvp_can_loop="true"
|
||||
app:bvp_auto_play="true"
|
||||
app:bvp_indicator_visibility="gone"
|
||||
app:bvp_page_style="multi_page_scale"
|
||||
app:layout_constraintBottom_toTopOf="@+id/ll_dialog_bottom_gift"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_dialog_bottom_gift"
|
||||
android:layout_width="0dp"
|
||||
|
@@ -5,6 +5,7 @@
|
||||
android:id="@+id/ll_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:layout_height="80dp"
|
||||
android:background="@drawable/bg_star_week_1">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
|
@@ -289,4 +289,17 @@ public class UriProvider {
|
||||
public static String getFansTeamOpenUrl(long roomUid) {
|
||||
return JAVA_WEB_URL.concat("/molistar/modules/fans_club/nameplate.html?roomUid=" + roomUid);
|
||||
}
|
||||
/**
|
||||
* 周星榜
|
||||
*/
|
||||
public static String getWeekStarUrl() {
|
||||
return JAVA_WEB_URL.concat("/molistar/modules/weekStar/newWeekStar.html");
|
||||
}
|
||||
|
||||
/**
|
||||
* 幸运礼物说明
|
||||
*/
|
||||
public static String getLuckyGiftRule(int giftID) {
|
||||
return JAVA_WEB_URL.concat("/molistar/modules/rule/luckyGiftRule.html?giftID=" + giftID);
|
||||
}
|
||||
}
|
||||
|
@@ -675,8 +675,23 @@ public class GiftModel extends BaseModel implements IGiftModel {
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Single<List<LuckyBagNoticeInfo>> getLuckyGiftMsgList() {
|
||||
return api.getLuckyGiftMsgList()
|
||||
.compose(RxHelper.handleBeanData())
|
||||
.compose(RxHelper.handleSchAndExce());
|
||||
}
|
||||
|
||||
private interface Api {
|
||||
|
||||
/**
|
||||
* 福袋最近20条全服记录
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GET("/luckybag/getBannerList")
|
||||
Single<ServiceResult<List<LuckyBagNoticeInfo>>> getLuckyGiftMsgList();
|
||||
|
||||
/**
|
||||
* 获取礼物列表
|
||||
*
|
||||
|
@@ -188,4 +188,11 @@ public interface IGiftModel {
|
||||
* 发送特殊礼物
|
||||
*/
|
||||
Single<Object> sendSpecialGift(long uid);
|
||||
|
||||
/**
|
||||
* 福袋最近20条全服记录
|
||||
*
|
||||
* @return -
|
||||
*/
|
||||
Single<List<LuckyBagNoticeInfo>> getLuckyGiftMsgList();
|
||||
}
|
||||
|
Reference in New Issue
Block a user