Merge branch 'feature/gift' into develop
@@ -1,5 +1,6 @@
|
||||
package com.nnbc123.app.avroom.widget;
|
||||
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_GIFT;
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_GIFT_COMPOUND;
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_KITCHEN;
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_PRIVILEGE;
|
||||
@@ -93,6 +94,7 @@ import com.nnbc123.core.im.custom.bean.CarveUpGoldAttachment;
|
||||
import com.nnbc123.core.im.custom.bean.CleanScreenAttachment;
|
||||
import com.nnbc123.core.im.custom.bean.CustomAttachment;
|
||||
import com.nnbc123.core.im.custom.bean.DatingAttachment;
|
||||
import com.nnbc123.core.im.custom.bean.DressUpGiftAttachment;
|
||||
import com.nnbc123.core.im.custom.bean.FaceAttachment;
|
||||
import com.nnbc123.core.im.custom.bean.FansTeamMsgAttachment;
|
||||
import com.nnbc123.core.im.custom.bean.GiftAttachment;
|
||||
@@ -121,6 +123,7 @@ import com.nnbc123.core.im.custom.bean.RoomReceivedLuckyGiftAttachment;
|
||||
import com.nnbc123.core.im.custom.bean.RoomTipAttachment;
|
||||
import com.nnbc123.core.im.custom.bean.TarotAttachment;
|
||||
import com.nnbc123.core.im.custom.bean.TarotMsgBean;
|
||||
import com.nnbc123.core.im.custom.bean.UnLockGiftAttachment;
|
||||
import com.nnbc123.core.im.custom.bean.VipMessageAttachment;
|
||||
import com.nnbc123.core.im.custom.bean.WelcomeAttachment;
|
||||
import com.nnbc123.core.im.custom.bean.WishListAttachment;
|
||||
@@ -215,6 +218,7 @@ public class MessageView extends FrameLayout {
|
||||
private int whiteColor;
|
||||
private int greyColor;
|
||||
private int appColor;
|
||||
private int giftColor;
|
||||
private int badgeWidth;
|
||||
private int badgeHeight;
|
||||
private int sysIconHeight;
|
||||
@@ -277,6 +281,7 @@ public class MessageView extends FrameLayout {
|
||||
whiteColor = ContextCompat.getColor(context, R.color.white);
|
||||
greyColor = ContextCompat.getColor(context, R.color.white_transparent_50);
|
||||
appColor = ContextCompat.getColor(context, R.color.app_color);
|
||||
giftColor = ContextCompat.getColor(context, R.color.color_5CEFFF);
|
||||
paddingWidth = Utils.dip2px(context, 10);
|
||||
paddingHeight = Utils.dip2px(context, 8);
|
||||
badgeWidth = Utils.dip2px(context, 15);
|
||||
@@ -1011,6 +1016,13 @@ public class MessageView extends FrameLayout {
|
||||
if (second == CustomAttachment.CUSTOM_MSG_PRIVILEGE_SECOND || second == CustomAttachment.CUSTOM_MSG_PRIVILEGE_SECOND_VIDEO) {
|
||||
setPrivilegeNoticeMessage(chatRoomMessage, tvContent);
|
||||
}
|
||||
} else if (first == CUSTOM_MSG_GIFT) {
|
||||
setVIPMessageBackground(chatRoomMessage, tvContent);
|
||||
if (second == CustomAttachment.CUSTOM_MSG_GIFT_UNLOCK) {
|
||||
setUnLockGiftMsg(tvContent, (UnLockGiftAttachment) attachment, chatRoomMessage);
|
||||
} else if (second == CustomAttachment.CUSTOM_MSG_GIFT_DRESS) {
|
||||
setDressGiftMsg(tvContent, (DressUpGiftAttachment) attachment, chatRoomMessage);
|
||||
}
|
||||
} else {
|
||||
tvContent.setTextColor(Color.WHITE);
|
||||
tvContent.setText(tvContent.getResources().getText(R.string.not_support_message_tip));
|
||||
@@ -2928,6 +2940,53 @@ public class MessageView extends FrameLayout {
|
||||
|
||||
}
|
||||
|
||||
private void setUnLockGiftMsg(TextView tvContent, UnLockGiftAttachment attachment, ChatRoomMessage chatRoomMessage) {
|
||||
if (attachment == null) return;
|
||||
String nick = RegexUtil.getPrintableString(attachment.getNick());
|
||||
String giftName = attachment.getGiftNameNotNull();
|
||||
String giftImage = attachment.getGiftUrlNotNull();
|
||||
SpannableBuilder text = new SpannableBuilder(tvContent)
|
||||
.append(getNewUserDrawable(chatRoomMessage), badgeWidth, badgeHeight)
|
||||
.append(nick, new ForegroundColorSpan(appColor), new OriginalDrawStatusClickSpan() {
|
||||
|
||||
@Override
|
||||
public void onClick(@NonNull View widget) {
|
||||
if (clickConsumer != null) {
|
||||
Single.just(chatRoomMessage.getFromAccount()).subscribe(clickConsumer);
|
||||
}
|
||||
}
|
||||
})
|
||||
.append(" 已解锁礼物 ", new ForegroundColorSpan(whiteColor))
|
||||
.append(giftImage, giftLength, giftLength)
|
||||
.append(giftName, new ForegroundColorSpan(giftColor));
|
||||
tvContent.setText(text.build());
|
||||
tvContent.setOnClickListener(null);
|
||||
tvContent.setMovementMethod(new LinkMovementMethod());
|
||||
}
|
||||
|
||||
private void setDressGiftMsg(TextView tvContent, DressUpGiftAttachment attachment, ChatRoomMessage chatRoomMessage) {
|
||||
if (attachment == null) return;
|
||||
String nick = RegexUtil.getPrintableString(attachment.getNick());
|
||||
String dressName = attachment.getDressNameNotNull();
|
||||
String dressImage = attachment.getDressUrlNotNull();
|
||||
SpannableBuilder text = new SpannableBuilder(tvContent)
|
||||
.append(getNewUserDrawable(chatRoomMessage), badgeWidth, badgeHeight)
|
||||
.append(nick, new ForegroundColorSpan(appColor), new OriginalDrawStatusClickSpan() {
|
||||
|
||||
@Override
|
||||
public void onClick(@NonNull View widget) {
|
||||
if (clickConsumer != null) {
|
||||
Single.just(chatRoomMessage.getFromAccount()).subscribe(clickConsumer);
|
||||
}
|
||||
}
|
||||
})
|
||||
.append(" 获得 "+dressName+"装扮 ", new ForegroundColorSpan(whiteColor))
|
||||
.append(dressImage, giftLength, giftLength);
|
||||
tvContent.setText(text.build());
|
||||
tvContent.setOnClickListener(null);
|
||||
tvContent.setMovementMethod(new LinkMovementMethod());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private Drawable getNewUserDrawable(ChatRoomMessage chatRoomMessage) {
|
||||
boolean newUser = NobleUtil.getIsNewUser(UserInfo.IS_NEW_USER, chatRoomMessage);
|
||||
|
@@ -2,7 +2,6 @@ package com.nnbc123.app.decoration.adapter;
|
||||
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.netease.nim.uikit.support.glide.GlideApp;
|
||||
import com.nnbc123.app.R;
|
||||
@@ -39,62 +38,22 @@ public class MyCarAdapter extends BaseAdapter<CarInfo> {
|
||||
|
||||
helper.addOnClickListener(R.id.tv_used);
|
||||
|
||||
// 倒计时
|
||||
int remainingDay = item.getRemainingDay();
|
||||
int status = item.getStatus();
|
||||
boolean canUse;
|
||||
|
||||
if (remainingDay >= 0 && status == CarInfo.STATUS_USER_CAN_USE) {
|
||||
canUse = true;
|
||||
} else {
|
||||
canUse = false;
|
||||
}
|
||||
|
||||
// 时间
|
||||
if (remainingDay >= 0 && status == CarInfo.STATUS_USER_CAN_USE) {
|
||||
String days;
|
||||
if (item.getRemainingDay() > 99){
|
||||
days = "99+";
|
||||
}else {
|
||||
days = item.getRemainingDay()+"";
|
||||
if (item.getStatus() == CarInfo.STATUS_USER_CAN_USE) {
|
||||
binding.tvUsed.setVisibility(View.VISIBLE);
|
||||
binding.tvUsed.setEnabled(true);
|
||||
binding.tvCounters.setText(mContext.getString(R.string.decoration_remainder) + item.getExpireText());
|
||||
if (item.isUsing()) {
|
||||
binding.tvUsed.setText("取消使用");
|
||||
binding.tvUsed.setBackgroundResource(R.drawable.bg_common_cancel);
|
||||
} else {
|
||||
binding.tvUsed.setText("使用");
|
||||
binding.tvUsed.setBackgroundResource(R.drawable.bg_common_confirm);
|
||||
}
|
||||
binding.tvCounters.setText(String.format(binding.tvCounters.getResources().getString(R.string.decoration_status_wrapper),
|
||||
binding.tvCounters.getResources().getString(R.string.decoration_remainder) + days + "天"));
|
||||
} else {
|
||||
if (status == CarInfo.STATUS_OFF_SHELF || status == CarInfo.STATUS_OUT_OF_DATE) {
|
||||
binding.tvCounters.setText(String.format(binding.tvCounters.getResources().getString(R.string.decoration_status_wrapper),
|
||||
binding.tvCounters.getResources().getString(R.string.past_due)));
|
||||
}
|
||||
binding.tvUsed.setVisibility(View.GONE);
|
||||
binding.tvCounters.setText(binding.tvCounters.getResources().getString(R.string.past_due));
|
||||
}
|
||||
|
||||
|
||||
setUseButton(binding.tvUsed, canUse, item.isUsing());
|
||||
updateTag(item, binding.ivTag);
|
||||
|
||||
}
|
||||
|
||||
private void setUseButton(TextView tvUsed, boolean canUse, boolean isUsing) {
|
||||
|
||||
if (!canUse) {
|
||||
tvUsed.setVisibility(View.GONE);
|
||||
tvUsed.setText("使用");
|
||||
tvUsed.setBackgroundResource(R.drawable.bg_common_disable);
|
||||
tvUsed.setEnabled(false);
|
||||
tvUsed.setTextColor(mContext.getResources().getColor(R.color.text_secondary_878b9c));
|
||||
} else if (isUsing) {
|
||||
tvUsed.setVisibility(View.VISIBLE);
|
||||
tvUsed.setText("取消使用");
|
||||
tvUsed.setBackgroundResource(R.drawable.bg_common_cancel);
|
||||
tvUsed.setEnabled(true);
|
||||
tvUsed.setTextColor(mContext.getResources().getColor(R.color.text_normal_282828));
|
||||
} else {
|
||||
tvUsed.setVisibility(View.VISIBLE);
|
||||
tvUsed.setText("使用");
|
||||
tvUsed.setBackgroundResource(R.drawable.bg_common_confirm);
|
||||
tvUsed.setTextColor(mContext.getResources().getColor(R.color.text_title_282828));
|
||||
tvUsed.setEnabled(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void updateTag(CarInfo carInfo, ImageView ivTag) {
|
||||
|
@@ -55,25 +55,12 @@ public class MyChatBubbleAdapter extends BaseAdapter<ChatBubbleInfo> {
|
||||
binding.tvUsed.setVisibility(View.GONE);
|
||||
binding.tvUsed.setEnabled(false);
|
||||
binding.tvUsed.setText("使用");
|
||||
binding.tvCounters.setText(mContext.getString(R.string.past_due));
|
||||
} else {
|
||||
binding.tvUsed.setVisibility(View.VISIBLE);
|
||||
binding.tvUsed.setEnabled(true);
|
||||
|
||||
binding.tvCounters.setText(mContext.getString(R.string.decoration_remainder) + item.getExpireText());
|
||||
}
|
||||
|
||||
// 日期展示
|
||||
if (item.isHasExpired()) { // 过期
|
||||
binding.tvCounters.setText(mContext.getString(R.string.past_due));
|
||||
} else {
|
||||
String days;
|
||||
if (item.getExpireDays() > 99) {
|
||||
days = "99+";
|
||||
} else {
|
||||
days = item.getExpireDays() + "";
|
||||
}
|
||||
binding.tvCounters.setText(mContext.getString(R.string.decoration_remainder) + days + mContext.getString(R.string.day));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -46,30 +46,14 @@ public class MyHeadWearAdapter extends BaseAdapter<HeadWearInfo> {
|
||||
binding.ivTag.setImageResource(R.drawable.ic_mark_exclusive);
|
||||
}
|
||||
|
||||
// 过期状态不可使用
|
||||
if (item.getStatus() == 2) {
|
||||
binding.tvUsed.setVisibility(View.GONE);
|
||||
binding.tvUsed.setEnabled(false);
|
||||
binding.tvUsed.setText("使用");
|
||||
} else {
|
||||
if (item.getStatus() == 3) {
|
||||
binding.tvUsed.setVisibility(View.VISIBLE);
|
||||
binding.tvUsed.setEnabled(true);
|
||||
|
||||
}
|
||||
|
||||
// 日期展示
|
||||
if (item.getStatus() == 2) { // 过期
|
||||
binding.tvCounters.setText(mContext.getString(R.string.past_due));
|
||||
binding.tvCounters.setText(mContext.getString(R.string.decoration_remainder) + item.getExpireText());
|
||||
} else {
|
||||
String days;
|
||||
if (item.getExpireDays() > 99){
|
||||
days = "99+";
|
||||
}else {
|
||||
days = item.getExpireDays()+"";
|
||||
}
|
||||
binding.tvCounters.setText(mContext.getString(R.string.decoration_remainder) + days + mContext.getString(R.string.day));
|
||||
binding.tvUsed.setVisibility(View.GONE);
|
||||
binding.tvCounters.setText(mContext.getString(R.string.past_due));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -32,31 +32,16 @@ public class MyNamePlateAdapter extends BaseQuickAdapter<NamePlateInfo.Nameplate
|
||||
.load(item.getNameplateImage())
|
||||
.into(ivCover);
|
||||
|
||||
|
||||
//使用按钮
|
||||
TextView tvUsed = helper.getView(R.id.tv_used);
|
||||
tvUsed.setBackgroundResource(item.isUsing() ? R.drawable.bg_common_cancel : R.drawable.bg_common_confirm);
|
||||
tvUsed.setTextColor(item.isUsing() ? mContext.getResources().getColor(R.color.color_4C5AF1) :
|
||||
mContext.getResources().getColor(R.color.white));
|
||||
tvUsed.setText(item.isUsing() ? R.string.label_used : R.string.label_can_use);
|
||||
if (item.isIsExpired()) { // 过期
|
||||
// 日期展示
|
||||
if (!item.isExpired()) {
|
||||
helper.setText(R.id.tv_counters, mContext.getString(R.string.decoration_remainder) + item.getExpireText());
|
||||
tvUsed.setVisibility(View.VISIBLE);
|
||||
tvUsed.setText(item.isUsing() ? R.string.label_used : R.string.label_can_use);
|
||||
tvUsed.setEnabled(true);
|
||||
tvUsed.setBackgroundResource(item.isUsing() ? R.drawable.bg_common_cancel : R.drawable.bg_common_confirm);
|
||||
} else {
|
||||
helper.setText(R.id.tv_counters, mContext.getString(R.string.past_due));
|
||||
tvUsed.setVisibility(View.GONE);
|
||||
tvUsed.setEnabled(false);
|
||||
tvUsed.setBackgroundResource(R.drawable.bg_common_disable);
|
||||
tvUsed.setText("使用");
|
||||
tvUsed.setTextColor(mContext.getResources().getColor(R.color.text_secondary_878b9c));
|
||||
} else {
|
||||
String days;
|
||||
if (item.getExpireDays() > 99) {
|
||||
days = "99+";
|
||||
} else {
|
||||
days = item.getExpireDays() + "";
|
||||
}
|
||||
helper.setText(R.id.tv_counters, mContext.getString(R.string.decoration_remainder) + days + mContext.getString(R.string.day));
|
||||
tvUsed.setVisibility(View.VISIBLE);
|
||||
tvUsed.setEnabled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -54,25 +54,12 @@ public class MyUserCardWearAdapter extends BaseAdapter<UserCardWearInfo> {
|
||||
binding.tvUsed.setVisibility(View.GONE);
|
||||
binding.tvUsed.setEnabled(false);
|
||||
binding.tvUsed.setText("使用");
|
||||
binding.tvCounters.setText(mContext.getString(R.string.past_due));
|
||||
} else {
|
||||
binding.tvUsed.setVisibility(View.VISIBLE);
|
||||
binding.tvUsed.setEnabled(true);
|
||||
|
||||
binding.tvCounters.setText(mContext.getString(R.string.decoration_remainder) + item.getExpireText());
|
||||
}
|
||||
|
||||
// 日期展示
|
||||
if (item.isHasExpired()) { // 过期
|
||||
binding.tvCounters.setText(mContext.getString(R.string.past_due));
|
||||
} else {
|
||||
String days;
|
||||
if (item.getExpireDays() > 99) {
|
||||
days = "99+";
|
||||
} else {
|
||||
days = item.getExpireDays() + "";
|
||||
}
|
||||
binding.tvCounters.setText(mContext.getString(R.string.decoration_remainder) + days + mContext.getString(R.string.day));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,13 +1,18 @@
|
||||
package com.nnbc123.app.decoration.view.widgets;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.nnbc123.app.ui.widget.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
|
||||
import com.nnbc123.app.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
|
||||
import com.nnbc123.app.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
|
||||
import com.nnbc123.app.ui.widget.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator;
|
||||
import com.nnbc123.core.home.bean.TabInfo;
|
||||
|
||||
import java.util.List;
|
||||
@@ -38,9 +43,9 @@ public class MyDecorationMagicIndicator extends CommonNavigatorAdapter {
|
||||
public IPagerTitleView getTitleView(Context context, final int i) {
|
||||
BadgeScaleTransitionPagerTitleView scaleTransitionPagerTitleView = new BadgeScaleTransitionPagerTitleView(context);
|
||||
scaleTransitionPagerTitleView.setNormalColor(ContextCompat.getColor(mContext, R.color.text_secondary_878b9c));
|
||||
scaleTransitionPagerTitleView.setSelectedColor(ContextCompat.getColor(mContext, R.color.text_title_282828));
|
||||
scaleTransitionPagerTitleView.setSelectedColor(ContextCompat.getColor(mContext, R.color.color_2B2D33));
|
||||
scaleTransitionPagerTitleView.setMinScale(0.9f);
|
||||
scaleTransitionPagerTitleView.setTextSize(15);
|
||||
scaleTransitionPagerTitleView.setTextSize(14);
|
||||
scaleTransitionPagerTitleView.setText(mTitleList.get(i).getName());
|
||||
if (mTitleList.get(i).getName().equals("座驾")) {
|
||||
scaleTransitionPagerTitleView.findViewById(R.id.car_badge).setId(R.id.car_badge_garage);
|
||||
@@ -62,7 +67,16 @@ public class MyDecorationMagicIndicator extends CommonNavigatorAdapter {
|
||||
|
||||
@Override
|
||||
public IPagerIndicator getIndicator(Context context) {
|
||||
return null;
|
||||
LinePagerIndicator indicator = new LinePagerIndicator(context);
|
||||
indicator.setMode(LinePagerIndicator.MODE_EXACTLY);
|
||||
indicator.setLineHeight(UIUtil.dip2px(context, 4));
|
||||
indicator.setRoundRadius(UIUtil.dip2px(context, 2));
|
||||
indicator.setLineWidth(UIUtil.dip2px(context, 8));
|
||||
indicator.setColors(Color.parseColor("#FFDA24"));
|
||||
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
|
||||
//lp.bottomMargin = 0;
|
||||
indicator.setLayoutParams(lp);
|
||||
return indicator;
|
||||
}
|
||||
|
||||
public void setOnItemSelectListener(OnItemSelectListener onItemSelectListener) {
|
||||
|
@@ -10,6 +10,7 @@ import android.graphics.drawable.Drawable;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.vip.VipHelper;
|
||||
import com.nnbc123.core.gift.bean.GiftInfo;
|
||||
import com.nnbc123.core.gift.bean.GiftType;
|
||||
import com.nnbc123.core.gift.bean.SimpleVipInfo;
|
||||
import com.nnbc123.library.bindinglist.BaseItem;
|
||||
|
||||
@@ -28,6 +29,8 @@ public class GiftInfoVm extends BaseItem<GiftInfo> {
|
||||
|
||||
public final ObservableField<String> countText = new ObservableField<>();
|
||||
|
||||
public final ObservableBoolean isLocked = new ObservableBoolean();
|
||||
|
||||
public Drawable nobleDrawable;
|
||||
|
||||
public Drawable radishDrawable;
|
||||
@@ -54,8 +57,6 @@ public class GiftInfoVm extends BaseItem<GiftInfo> {
|
||||
*/
|
||||
public boolean isExclusive;
|
||||
|
||||
public boolean isLocked;
|
||||
|
||||
public String vipIcon;
|
||||
|
||||
public boolean isPrivateChat;
|
||||
@@ -64,13 +65,13 @@ public class GiftInfoVm extends BaseItem<GiftInfo> {
|
||||
super(context, data);
|
||||
this.isSelect.set(select);
|
||||
if (data.getConsumeType() == GiftInfo.CONSUME_TYPE_GOLD) {
|
||||
radishDrawable = null;
|
||||
radishDrawableSelected = null;
|
||||
radishDrawable = context.getResources().getDrawable(R.drawable.gift_dialog_ic_diamond);
|
||||
radishDrawableSelected = context.getResources().getDrawable(R.drawable.gift_dialog_ic_diamond);
|
||||
} else {
|
||||
radishDrawable = context.getResources().getDrawable(R.drawable.icon_radish_transparent);
|
||||
radishDrawableSelected = context.getResources().getDrawable(R.drawable.icon_radish_transparent_selected);
|
||||
}
|
||||
goldText.set(data.getGoldPrice() + "钻石");
|
||||
goldText.set(String.valueOf(data.getGoldPrice()));
|
||||
this.isKnap.set(isKnap);
|
||||
updateCount();
|
||||
int nobleId = data.getLevel();
|
||||
@@ -88,8 +89,8 @@ public class GiftInfoVm extends BaseItem<GiftInfo> {
|
||||
isShowEffect = data.isHasEffect();
|
||||
isExclusive = data.isRoomExclude();
|
||||
SimpleVipInfo vipInfo = data.getGiftVipInfo();
|
||||
isLocked = vipInfo != null && VipHelper.getMyVipLevel() < vipInfo.getVipLevel();
|
||||
vipIcon = vipInfo == null ? "" : vipInfo.getVipIcon();
|
||||
isLocked.set(getIsLocked());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -106,4 +107,20 @@ public class GiftInfoVm extends BaseItem<GiftInfo> {
|
||||
this.countText.set("x" + data.getCount());
|
||||
}
|
||||
|
||||
public void refreshUnlockState() {
|
||||
isLocked.set(getIsLocked());
|
||||
}
|
||||
|
||||
private boolean getIsLocked() {
|
||||
SimpleVipInfo vipInfo = data.getGiftVipInfo();
|
||||
boolean isLocked = vipInfo != null && VipHelper.getMyVipLevel() < vipInfo.getVipLevel();
|
||||
if (!isLocked) {
|
||||
if (data.getGiftType() == GiftType.GIFT_TYPE_UNLOCK) {
|
||||
if (!data.isUnlocked()) {
|
||||
isLocked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return isLocked;
|
||||
}
|
||||
}
|
||||
|
@@ -30,8 +30,8 @@ public class UserGiftActivity extends BaseActivity {
|
||||
MagicIndicator magicIndicator = findViewById(R.id.magic_indicator);
|
||||
List<Fragment> fragmentList = new ArrayList<>(2);
|
||||
//礼物类型 1:普通礼物;2:辛运礼物
|
||||
fragmentList.add(UserInfoGiftFragment.newInstance(1,true));
|
||||
fragmentList.add(UserInfoGiftFragment.newInstance(2,true));
|
||||
fragmentList.add(UserInfoGiftFragment.newInstance(1));
|
||||
fragmentList.add(UserInfoGiftFragment.newInstance(2));
|
||||
UserInfoPagerAdapter pagerAdapter = new UserInfoPagerAdapter(getSupportFragmentManager(), fragmentList);
|
||||
final List<String> tagList = new ArrayList<>(2);
|
||||
tagList.add("普通礼物");
|
||||
|
@@ -9,6 +9,7 @@ import android.graphics.Color;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
@@ -57,6 +58,7 @@ import com.nnbc123.app.ui.utils.ImageLoadUtils;
|
||||
import com.nnbc123.app.ui.widget.ButtonItem;
|
||||
import com.nnbc123.app.ui.widget.ObservableScrollView;
|
||||
import com.nnbc123.app.ui.widget.magicindicator.ViewPagerHelper;
|
||||
import com.nnbc123.app.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.nnbc123.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator;
|
||||
import com.nnbc123.app.ui.widget.rollviewpager.HintView;
|
||||
import com.nnbc123.app.ui.widget.rollviewpager.RollPagerView;
|
||||
@@ -163,6 +165,11 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
|
||||
}
|
||||
});
|
||||
|
||||
if (userId != AuthModel.get().getCurrentUid()) {
|
||||
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) mBinding.viewPager.getLayoutParams();
|
||||
layoutParams.bottomMargin = UIUtil.dip2px(context, 60);
|
||||
mBinding.viewPager.setLayoutParams(layoutParams);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@@ -47,13 +47,11 @@ public class UserInfoGiftFragment extends BaseBindingFragment<FragmentUserInfoGi
|
||||
private UserGiftAdapter userGiftAdapter;
|
||||
private Observer mObserver;
|
||||
private Observer mUidObserver;
|
||||
private boolean isDetails = false;
|
||||
|
||||
public static UserInfoGiftFragment newInstance(int giftType, boolean isDetails) {
|
||||
public static UserInfoGiftFragment newInstance(int giftType) {
|
||||
UserInfoGiftFragment userInfoGiftFragment = new UserInfoGiftFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("giftType", giftType);
|
||||
args.putBoolean("isDetails", isDetails);
|
||||
userInfoGiftFragment.setArguments(args);
|
||||
return userInfoGiftFragment;
|
||||
}
|
||||
@@ -89,9 +87,8 @@ public class UserInfoGiftFragment extends BaseBindingFragment<FragmentUserInfoGi
|
||||
|
||||
@Override
|
||||
public void initiate() {
|
||||
isDetails = requireArguments().getBoolean("isDetails", false);
|
||||
mBinding.rvGift.setLayoutManager(new GridLayoutManager(mContext, 4));
|
||||
userGiftAdapter = new UserGiftAdapter(mContext, userInfoItems, isDetails);
|
||||
userGiftAdapter = new UserGiftAdapter(mContext, userInfoItems);
|
||||
userGiftAdapter.bindToRecyclerView(mBinding.rvGift);
|
||||
userGiftAdapter.setSpanSizeLookup(new BaseQuickAdapter.SpanSizeLookup() {
|
||||
@Override
|
||||
@@ -155,10 +152,6 @@ public class UserInfoGiftFragment extends BaseBindingFragment<FragmentUserInfoGi
|
||||
for (int i = 0; i < giftWallInfoList.size(); i++) {
|
||||
userInfoItem = new UserInfoItem<>(UserInfoItem.TYPE_GIFT_ITEM, giftWallInfoList.get(i));
|
||||
userInfoItems.add(userInfoItem);
|
||||
//非礼物详情页主需要12个就够了
|
||||
if (!isDetails && i == 11){
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -3,24 +3,24 @@ package com.nnbc123.app.ui.user.adapter;
|
||||
import android.content.Context;
|
||||
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.ui.utils.ImageLoadUtils;
|
||||
import com.nnbc123.core.bean.UserInfoItem;
|
||||
import com.nnbc123.core.user.bean.GiftWallInfo;
|
||||
import com.nnbc123.library.utils.ResUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class UserGiftAdapter extends UserTabBaseAdapter {
|
||||
|
||||
private final boolean isDetails;
|
||||
|
||||
public UserGiftAdapter(Context context, List<UserInfoItem> data, boolean isDetails) {
|
||||
public UserGiftAdapter(Context context, List<UserInfoItem> data) {
|
||||
super(context, data);
|
||||
addItemType(UserInfoItem.TYPE_GIFT_ITEM, R.layout.list_item_gift_wall_info);
|
||||
addItemType(UserInfoItem.TYPE_GIFT_EMPTY, R.layout.layout_gift_empty);
|
||||
this.isDetails = isDetails;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -46,17 +46,57 @@ public class UserGiftAdapter extends UserTabBaseAdapter {
|
||||
GiftWallInfo giftWallInfo = (GiftWallInfo) item.getData();
|
||||
|
||||
if (giftWallInfo != null) {
|
||||
|
||||
helper.setText(R.id.gift_name, giftWallInfo.getGiftName())
|
||||
.setGone(R.id.gift_name, isDetails)
|
||||
.setText(R.id.gift_num, "x" + giftWallInfo.getReciveCount())
|
||||
.setBackgroundRes(R.id.gift_num, isDetails ? R.drawable.bg_user_gift_item_details : R.drawable.bg_user_gift_item)
|
||||
.setText(R.id.gift_price, giftWallInfo.getGiftPrice() + "")
|
||||
.setGone(R.id.gift_price, isDetails);
|
||||
.setText(R.id.gift_price, giftWallInfo.getGiftPrice() + "");
|
||||
|
||||
ImageView giftPic = helper.itemView.findViewById(R.id.gift_img);
|
||||
ImageLoadUtils.loadImage(mContext, giftWallInfo.getPicUrl(), giftPic);
|
||||
loadLevelUI(helper, giftWallInfo);
|
||||
}
|
||||
}
|
||||
|
||||
private void loadLevelUI(BaseViewHolder helper, GiftWallInfo item) {
|
||||
ImageView bgView = helper.getView(R.id.iv_bg);
|
||||
TextView nameView = helper.getView(R.id.gift_name);
|
||||
TextView numView = helper.getView(R.id.gift_num);
|
||||
TextView priceView = helper.getView(R.id.gift_price);
|
||||
int bgResId;
|
||||
switch (item.getGiftLevel()) {
|
||||
case 1:
|
||||
bgResId = R.drawable.gift_wall_bg_level_1;
|
||||
break;
|
||||
case 2:
|
||||
bgResId = R.drawable.gift_wall_bg_level_2;
|
||||
break;
|
||||
case 3:
|
||||
bgResId = R.drawable.gift_wall_bg_level_3;
|
||||
break;
|
||||
case 4:
|
||||
bgResId = R.drawable.gift_wall_bg_level_4;
|
||||
break;
|
||||
case 5:
|
||||
bgResId = R.drawable.gift_wall_bg_level_5;
|
||||
break;
|
||||
case 6:
|
||||
bgResId = R.drawable.gift_wall_bg_level_6;
|
||||
break;
|
||||
case 7:
|
||||
bgResId = R.drawable.gift_wall_bg_level_7;
|
||||
break;
|
||||
default:
|
||||
bgResId = R.drawable.gift_wall_bg_level_0;
|
||||
break;
|
||||
}
|
||||
bgView.setImageResource(bgResId);
|
||||
if (bgResId == R.drawable.gift_wall_bg_level_0) {
|
||||
nameView.setTextColor(ResUtil.getColor(R.color.color_696D7A));
|
||||
numView.setTextColor(ResUtil.getColor(R.color.color_7F8494));
|
||||
priceView.setTextColor(ResUtil.getColor(R.color.color_7F8494));
|
||||
} else {
|
||||
nameView.setTextColor(ResUtil.getColor(R.color.color_FFFFFF));
|
||||
numView.setTextColor(ResUtil.getColor(R.color.color_F5F6FA));
|
||||
priceView.setTextColor(ResUtil.getColor(R.color.color_F5F6FA));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,5 @@
|
||||
package com.nnbc123.app.ui.user.view
|
||||
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.GradientDrawable
|
||||
import android.view.Gravity
|
||||
@@ -13,6 +12,7 @@ import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.viewpager.widget.ViewPager
|
||||
import com.chuhai.utils.ktx.singleClick
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.base.BaseViewBindingFragment
|
||||
@@ -21,17 +21,18 @@ import com.nnbc123.app.home.adapter.MainMagicIndicatorAdapter
|
||||
import com.nnbc123.app.skill.activity.SkillHomeActivity
|
||||
import com.nnbc123.app.skill.activity.SkillHomeActivity.Companion.PAGE_TYPE_CUSTOM
|
||||
import com.nnbc123.app.skill.activity.SkillHomeActivity.Companion.PAGE_TYPE_SELF
|
||||
import com.nnbc123.app.ui.user.UserGiftActivity
|
||||
import com.nnbc123.app.ui.user.UserInfoActivity
|
||||
import com.nnbc123.app.ui.user.UserInfoGiftFragment
|
||||
import com.nnbc123.app.ui.user.adapter.SkillCardAdapter
|
||||
import com.nnbc123.app.ui.user.adapter.UserInfoPagerAdapter
|
||||
import com.nnbc123.app.ui.user.decorationsend.UserInfoSkillDecoration
|
||||
import com.nnbc123.app.ui.user.viewmodel.UserInfoViewModel
|
||||
import com.nnbc123.app.ui.webview.CommonWebViewActivity
|
||||
import com.nnbc123.app.ui.widget.magicindicator.MagicIndicator
|
||||
import com.nnbc123.app.ui.widget.magicindicator.ViewPagerHelper
|
||||
import com.nnbc123.app.ui.widget.magicindicator.buildins.UIUtil
|
||||
import com.nnbc123.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
|
||||
import com.nnbc123.core.UriProvider
|
||||
import com.nnbc123.core.auth.AuthModel
|
||||
import com.nnbc123.core.user.bean.UserInfoSkillEntity
|
||||
import com.nnbc123.library.annatation.ActLayoutRes
|
||||
@@ -54,14 +55,15 @@ class UserInfoInfoFragment : BaseViewBindingFragment<FragmentUserinfoUserinfoBin
|
||||
val magicIndicator: MagicIndicator = binding.magicIndicatorGift
|
||||
val fragmentList: MutableList<Fragment> = ArrayList(2)
|
||||
//礼物类型 1:普通礼物;2:辛运礼物
|
||||
fragmentList.add(UserInfoGiftFragment.newInstance(1, false))
|
||||
fragmentList.add(UserInfoGiftFragment.newInstance(2, false))
|
||||
fragmentList.add(UserInfoGiftFragment.newInstance(1))
|
||||
fragmentList.add(UserInfoGiftFragment.newInstance(2))
|
||||
val pagerAdapter = UserInfoPagerAdapter(childFragmentManager, fragmentList)
|
||||
val tagList: MutableList<String> = ArrayList(2)
|
||||
tagList.add("普通礼物")
|
||||
tagList.add("幸运礼物")
|
||||
val commonNavigator = CommonNavigator(context)
|
||||
commonNavigator.setTitleWrapContent(true)
|
||||
commonNavigator.setTitleGravity(Gravity.CENTER)
|
||||
commonNavigator.titleMargin = ScreenUtil.dip2px(7.0F)
|
||||
val magicIndicatorAdapter = MainMagicIndicatorAdapter(context, tagList)
|
||||
magicIndicatorAdapter.setOnItemSelectListener { position: Int, view: TextView? ->
|
||||
@@ -115,9 +117,6 @@ class UserInfoInfoFragment : BaseViewBindingFragment<FragmentUserinfoUserinfoBin
|
||||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
when (v.id) {
|
||||
R.id.iv_more_gift -> startActivity(Intent(mContext, UserGiftActivity::class.java))
|
||||
}
|
||||
}
|
||||
|
||||
private fun createSkillEmptyView(): View {
|
||||
@@ -150,11 +149,19 @@ class UserInfoInfoFragment : BaseViewBindingFragment<FragmentUserinfoUserinfoBin
|
||||
}
|
||||
|
||||
override fun init() {
|
||||
binding.viewPagerGift.post {
|
||||
val layoutParams = binding.viewPagerGift.layoutParams
|
||||
val newHeight = binding.layoutRoot.height - binding.viewPagerGift.top
|
||||
layoutParams.height = newHeight
|
||||
binding.viewPagerGift.layoutParams = layoutParams
|
||||
}
|
||||
binding.tvGiftLevel.singleClick {
|
||||
CommonWebViewActivity.start(context, UriProvider.getGiftLevelRuleUrl())
|
||||
}
|
||||
initGiftList()
|
||||
vm.userInfoSkillData.observe(this) {
|
||||
initSkillCardList(it)
|
||||
}
|
||||
binding.ivMoreGift.setOnClickListener(this)
|
||||
}
|
||||
|
||||
}
|
@@ -427,6 +427,14 @@ public class ImageLoadUtils {
|
||||
GlideApp.with(context.getApplicationContext()).load(url).dontAnimate().into(imageView);
|
||||
}
|
||||
|
||||
public static void loadImage(ImageView imageView, String url, int cornerRadius) {
|
||||
if (imageView == null) {
|
||||
return;
|
||||
}
|
||||
GlideApp.with(imageView.getContext()).load(url).dontAnimate()
|
||||
.transform(new CenterCrop(), new RoundedCorners(cornerRadius)).into(imageView);
|
||||
}
|
||||
|
||||
public static void loadImage1(Context context, String url, ImageView imageView) {
|
||||
GlideApp.with(context).load(url).optionalFitCenter().into(new SimpleTarget<Drawable>() {
|
||||
@Override
|
||||
|
@@ -69,6 +69,15 @@ public class ImageLoadUtilsV2 {
|
||||
isDontAnim, null);
|
||||
}
|
||||
|
||||
public static void loadImage(ImageView imageView, String url, int defaultRes, int roundDp) {
|
||||
if (imageView == null) {
|
||||
return;
|
||||
}
|
||||
loadImage(imageView.getContext(), imageView, url, -1, false,
|
||||
defaultRes, defaultRes, false, null,
|
||||
new CenterCrop(), new RoundedCorners(UIUtil.dip2px(imageView.getContext(), roundDp)));
|
||||
}
|
||||
|
||||
public static void loadImage(ImageView imageView, String url,
|
||||
int size, boolean isSquare,
|
||||
int errorId, int placeholderId,
|
||||
|
@@ -0,0 +1,98 @@
|
||||
package com.nnbc123.app.ui.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.util.AttributeSet
|
||||
import android.view.ViewGroup
|
||||
import androidx.cardview.widget.CardView
|
||||
import androidx.core.util.Consumer
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.github.mmin18.widget.RealtimeBlurView
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.core.gift.bean.GiftInfo
|
||||
import com.nnbc123.core.gift.bean.GiftType
|
||||
import com.nnbc123.core.gift.bean.UnLockBaseGiftInfo
|
||||
import com.nnbc123.core.gift.bean.UnlockItem
|
||||
|
||||
/**
|
||||
* Created by Max on 2024/1/26 17:16
|
||||
* Desc:
|
||||
**/
|
||||
class GIftDialogUnlockPanel : CardView {
|
||||
private var recyclerView: RecyclerView? = null
|
||||
private var adapter: GiftUnLockInfoAdapter = GiftUnLockInfoAdapter(emptyList())
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
|
||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
|
||||
context,
|
||||
attrs,
|
||||
defStyleAttr
|
||||
)
|
||||
|
||||
init {
|
||||
inflate(context, R.layout.gift_dialog_unlock_panel, this)
|
||||
recyclerView = findViewById(R.id.recyclerView)
|
||||
recyclerView?.adapter = adapter
|
||||
}
|
||||
|
||||
fun update(currentGift: GiftInfo?) {
|
||||
if (currentGift == null || currentGift.giftType != GiftType.GIFT_TYPE_UNLOCK) {
|
||||
this.isVisible = false
|
||||
return
|
||||
}
|
||||
val list = ArrayList<UnlockItem>()
|
||||
val baseGift = currentGift.baseGift
|
||||
val childGift = currentGift.unlockGiftList
|
||||
if (baseGift != null) {
|
||||
list.add(UnLockBaseGiftInfo(baseGift))
|
||||
}
|
||||
if (!childGift.isNullOrEmpty()) {
|
||||
list.addAll(childGift)
|
||||
}
|
||||
if (list.isEmpty()) {
|
||||
this.isVisible = false
|
||||
return
|
||||
}
|
||||
this.isVisible = true
|
||||
checkAddBlurView()
|
||||
val index = list.indexOfFirst {
|
||||
it.getGiftData()?.giftId == currentGift.giftId
|
||||
}
|
||||
adapter.selectItemId = currentGift.giftId
|
||||
adapter.setNewData(baseGift, list)
|
||||
if (index >= 0) {
|
||||
recyclerView?.smoothScrollToPosition(index)
|
||||
}
|
||||
}
|
||||
|
||||
fun refreshState() {
|
||||
adapter.notifyItemRangeChanged(0, adapter.itemCount, true)
|
||||
}
|
||||
|
||||
fun setOnItemClickListener(listener: Consumer<Int>) {
|
||||
adapter.setOnItemClickListener { adapter, view, position ->
|
||||
val item = adapter.getItem(position) as? UnlockItem
|
||||
val giftId = item?.getGiftData()?.giftId
|
||||
if (giftId != null) {
|
||||
listener.accept(giftId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkAddBlurView() {
|
||||
if (getChildAt(0) is RealtimeBlurView) {
|
||||
return
|
||||
}
|
||||
val blurView = RealtimeBlurView(context, null)
|
||||
blurView.setBlurRadius(25f)
|
||||
blurView.setDownsampleFactor(4f)
|
||||
blurView.setOverlayColor(Color.parseColor("#e0161722"))
|
||||
blurView.layoutParams = ViewGroup.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.MATCH_PARENT
|
||||
)
|
||||
addView(blurView, 0)
|
||||
}
|
||||
}
|
@@ -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;
|
||||
@@ -217,6 +218,9 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
private AppCompatTextView tvNum;
|
||||
private SuperTextView tvPrivilegeGive;
|
||||
private Group groupPrivilege;
|
||||
private GIftDialogUnlockPanel unLockPanel;
|
||||
private ImageView dressUpBannerView;
|
||||
private SparseArray<RecyclerViewNoViewpagerScroll> cacheItemView = new SparseArray<>();
|
||||
|
||||
private int mPrivilegePosition = 0;
|
||||
|
||||
@@ -423,6 +427,9 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
ivDrawGiftRemoveLast = findViewById(R.id.iv_draw_gift_remove_last);
|
||||
ivDrawGiftRemoveAll = findViewById(R.id.iv_draw_gift_remove_all);
|
||||
ivDrawGiftClose = findViewById(R.id.iv_draw_gift_close);
|
||||
unLockPanel = findViewById(R.id.panel_unlock);
|
||||
dressUpBannerView = findViewById(R.id.iv_dress_up_banner);
|
||||
dressUpBannerView.setOnClickListener(this);
|
||||
ivDrawGiftClose.setOnClickListener(this);
|
||||
ivDrawGiftRemoveLast.setOnClickListener(this);
|
||||
ivDrawGiftRemoveAll.setOnClickListener(this);
|
||||
@@ -432,8 +439,8 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
giftNumLayout = findViewById(R.id.gift_number_layout);
|
||||
giftNumLayout.setOnClickListener(this);
|
||||
List<GiftTab> tabInfoList = new ArrayList<>();
|
||||
tabInfoList.add(new GiftTab(GiftIndicator.TYPE_NORMAL, "礼物", "礼物"));
|
||||
tabInfoList.add(new GiftTab(GiftIndicator.TYPE_LUCKY, "幸运", "幸运"));
|
||||
tabInfoList.add(new GiftTab(GiftIndicator.TYPE_NORMAL, "普通", "普通"));
|
||||
tabInfoList.add(new GiftTab(GiftIndicator.TYPE_INTEREST, "趣味", "趣味", true));
|
||||
tabInfoList.add(new GiftTab(GiftIndicator.TYPE_NOBLE, "贵族", "贵族"));
|
||||
tabInfoList.add(new GiftTab(GiftIndicator.TYPE_WEEK, "星座礼物", "星座礼物"));
|
||||
tabInfoList.add(new GiftTab(GiftIndicator.TYPE_SING_ROOM, "人气", "人气"));
|
||||
@@ -446,8 +453,8 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
giftIndicator.initTab(
|
||||
tabInfoList,
|
||||
true,
|
||||
context.getResources().getColor(R.color.color_bdbfd0),
|
||||
context.getResources().getColor(R.color.color_ffe710)
|
||||
context.getResources().getColor(R.color.color_CED1DB),
|
||||
context.getResources().getColor(R.color.color_FFDA24)
|
||||
);
|
||||
//noinspection ResultOfMethodCallIgnored
|
||||
giftIndicator.addClick()
|
||||
@@ -456,15 +463,13 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
.subscribe(integer -> {
|
||||
updateGiftView(integer);
|
||||
//福袋礼物有定时更新逻辑,每次点击都需要刷新福袋礼物信息
|
||||
if (integer == GiftIndicator.TYPE_LUCKY) {
|
||||
if (integer == GiftIndicator.TYPE_INTEREST) {
|
||||
reloadData(false);
|
||||
}
|
||||
});
|
||||
|
||||
if (isInRoom) {
|
||||
giftIndicator.showPosition(GiftIndicator.TYPE_LUCKY);
|
||||
} else {
|
||||
giftIndicator.hidePosition(GiftIndicator.TYPE_LUCKY);
|
||||
giftIndicator.hidePosition(GiftIndicator.TYPE_DRAW_GIFT);
|
||||
llTabType.setVisibility(View.GONE);
|
||||
lineTabType.setVisibility(View.GONE);
|
||||
@@ -523,15 +528,17 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
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;
|
||||
case GiftType.GIFT_TYPE_UNLOCK:
|
||||
case GiftType.GIFT_TYPE_LUCKY:
|
||||
case GiftType.GIFT_TYPE_DRESS_UP:
|
||||
indicatorType = GiftIndicator.TYPE_INTEREST;
|
||||
break;
|
||||
}
|
||||
}
|
||||
showGiftTab(indicatorType, giftInfo);
|
||||
@@ -590,6 +597,15 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
if (DemoCache.readNewGiftTypeTipIndicator()) {
|
||||
viewNewFeature.setVisibility(View.VISIBLE);
|
||||
}
|
||||
unLockPanel.setOnItemClickListener(new Consumer<Integer>() {
|
||||
@Override
|
||||
public void accept(Integer integer) {
|
||||
if (integer == null) {
|
||||
return;
|
||||
}
|
||||
trySelectGift(integer);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initVipPager() {
|
||||
@@ -621,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<GiftInfoVm> 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,
|
||||
@@ -689,8 +732,6 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
currentGiftInfoList = nobleGiftInfos;
|
||||
} else if (position == GiftIndicator.TYPE_NORMAL) {
|
||||
currentGiftInfoList = getNormalGiftInfos();
|
||||
} else if (position == GiftIndicator.TYPE_LUCKY) {
|
||||
currentGiftInfoList = getLuckyGiftInfos();
|
||||
} else if (position == GiftIndicator.TYPE_WEEK) {
|
||||
currentGiftInfoList = getWeekStarGiftInfos();
|
||||
} else if (position == GiftIndicator.TYPE_DRAW_GIFT) {
|
||||
@@ -699,6 +740,8 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
currentGiftInfoList = getSingleRoomGiftInfos();
|
||||
} else if (position == GiftIndicator.TYPE_PENALTY) {
|
||||
currentGiftInfoList = getPenaltyGiftInfos();
|
||||
} else if (position == GiftIndicator.TYPE_INTEREST) {
|
||||
currentGiftInfoList = getInterestGiftInfos();
|
||||
}
|
||||
//是否背包礼物
|
||||
final boolean isKnap = (position == GiftIndicator.TYPE_KNAP);
|
||||
@@ -755,7 +798,7 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
} else if (isKnap) {
|
||||
giftIndicator.getBackpackValueView().setVisibility(View.VISIBLE);
|
||||
showEmptyView();
|
||||
} else if (position == GiftIndicator.TYPE_LUCKY ||
|
||||
} else if (position == GiftIndicator.TYPE_INTEREST ||
|
||||
position == GiftIndicator.TYPE_WEEK ||
|
||||
position == GiftIndicator.TYPE_DRAW_GIFT ||
|
||||
position == GiftIndicator.TYPE_SING_ROOM ||
|
||||
@@ -824,6 +867,8 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
updateWeekStarDesc();
|
||||
isShowDrawGiftModel = false;
|
||||
updateDrawGift();
|
||||
updateUnLockTips();
|
||||
updateDressUpTips();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -877,6 +922,24 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
privilegeView.setAdapter(baseQuickAdapter);
|
||||
}
|
||||
|
||||
private void updateUnLockTips() {
|
||||
unLockPanel.update(currentGiftInfo);
|
||||
}
|
||||
|
||||
private void updateDressUpTips() {
|
||||
if (currentGiftInfo == null || currentGiftInfo.getGiftType() != GiftType.GIFT_TYPE_DRESS_UP) {
|
||||
dressUpBannerView.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
String banner = currentGiftInfo.getBannerUrl();
|
||||
if (banner == null || banner.length() == 0) {
|
||||
dressUpBannerView.setVisibility(View.GONE);
|
||||
return;
|
||||
}
|
||||
dressUpBannerView.setVisibility(View.VISIBLE);
|
||||
ImageLoadUtils.loadImage(dressUpBannerView, banner, UIUtil.dip2px(context, 8));
|
||||
}
|
||||
|
||||
private void updateLuckyBagIntro() {
|
||||
if (luckyMsgDisposable != null) luckyMsgDisposable.dispose();
|
||||
if (currentGiftInfo == null || currentGiftInfo.getGiftType() != GiftType.GIFT_TYPE_LUCKY) {
|
||||
@@ -908,11 +971,14 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
.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);
|
||||
int count = luckyMsgAdapter.getItemCount();
|
||||
if (count > 0) {
|
||||
int index = aLong.intValue() % count;
|
||||
if (index == 0) {
|
||||
rvLuckyMsg.scrollToPosition(index);
|
||||
} else {
|
||||
rvLuckyMsg.smoothScrollToPosition(index);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1130,7 +1196,6 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
layoutEmpty.setVisibility(View.GONE);
|
||||
gridView.setVisibility(View.VISIBLE);
|
||||
|
||||
SparseArray<RecyclerViewNoViewpagerScroll> cacheItemView = new SparseArray<>();
|
||||
lastSelectedItem = pagerList.get(defaultSelectPage).get(defaultSelectItem);
|
||||
setGoldOrRadishText(lastSelectedItem);
|
||||
gridView.setAdapter(new PagerAdapter() {
|
||||
@@ -1166,22 +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();
|
||||
onGiftClick(item);
|
||||
});
|
||||
container.addView(recyclerView);
|
||||
return recyclerView;
|
||||
@@ -1198,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<GiftInfo> loadGiftInfoList() {
|
||||
List<GiftInfo> giftInfos;
|
||||
String roomUid = null;
|
||||
@@ -1237,12 +1308,6 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
GiftType.GIFT_TYPE_WEEK_STAR);
|
||||
}
|
||||
|
||||
private List<GiftInfo> getLuckyGiftInfos() {
|
||||
return GiftModel.get().getGiftInfosByType(
|
||||
String.valueOf(AvRoomDataManager.get().getRoomUid()),
|
||||
GiftType.GIFT_TYPE_LUCKY);
|
||||
}
|
||||
|
||||
private List<GiftInfo> getDrawGiftInfos() {
|
||||
return GiftModel.get().getGiftInfosByType(
|
||||
String.valueOf(AvRoomDataManager.get().getRoomUid()),
|
||||
@@ -1261,6 +1326,12 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
GiftType.GIFT_TYPE_PENALTY);
|
||||
}
|
||||
|
||||
private List<GiftInfo> getInterestGiftInfos() {
|
||||
return GiftModel.get().getGiftInfosByType(
|
||||
String.valueOf(AvRoomDataManager.get().getRoomUid()),
|
||||
GiftType.GIFT_TYPE_INTEREST);
|
||||
}
|
||||
|
||||
private List<GiftInfo> getNobleGiftInfos() {
|
||||
return GiftModel.get().getGiftInfoList(GiftType.GIFT_TYPE_VIP);
|
||||
}
|
||||
@@ -1293,6 +1364,14 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.iv_dress_up_banner:
|
||||
if (currentGiftInfo != null) {
|
||||
String skipUrl = currentGiftInfo.getBannerSkipUrl();
|
||||
if (skipUrl != null) {
|
||||
CommonWebViewActivity.start(context, skipUrl);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case R.id.ll_gold:
|
||||
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_GIFT_PANEL_TO_RECHARGE, "礼物面板_去充值:" + GIFT_DIALOG_FROM);
|
||||
ChargeDialog.start(getContext());
|
||||
@@ -1326,10 +1405,11 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
micMemberInfo.setAccount(String.valueOf(uid));
|
||||
targetUids.add(micMemberInfo);
|
||||
Log.e(TAG, "onClick: indicator type: " + giftIndicator.getCurrrentType());
|
||||
int number = giftNumber == -1 ? finalCurrentGiftInfo.getCount() : giftNumber;
|
||||
giftDialogBtnClickListener.onSendGiftBtnClick(
|
||||
finalCurrentGiftInfo,
|
||||
targetUids,
|
||||
giftNumber == -1 ? finalCurrentGiftInfo.getCount() : giftNumber,
|
||||
number,
|
||||
giftMessage,
|
||||
giftIndicator.getCurrrentType() == GiftIndicator.TYPE_KNAP,
|
||||
false,
|
||||
@@ -1337,7 +1417,7 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
new SenGiftCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
onSendGiftSuccess(finalCurrentGiftInfo);
|
||||
onSendGiftSuccess(finalCurrentGiftInfo, number, targetUids);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1356,10 +1436,11 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
micMemberInfo.setAccount(String.valueOf(uid));
|
||||
targetUids.add(micMemberInfo);
|
||||
Log.e(TAG, "onClick: indicator type: " + giftIndicator.getCurrrentType());
|
||||
int number = giftNumber == -1 ? finalCurrentGiftInfo.getCount() : giftNumber;
|
||||
giftDialogBtnClickListener.onSendGiftBtnClick(
|
||||
finalCurrentGiftInfo,
|
||||
targetUids,
|
||||
giftNumber == -1 ? finalCurrentGiftInfo.getCount() : giftNumber,
|
||||
number,
|
||||
giftMessage,
|
||||
giftIndicator.getCurrrentType() == GiftIndicator.TYPE_KNAP,
|
||||
false,
|
||||
@@ -1367,7 +1448,7 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
new SenGiftCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
onSendGiftSuccess(finalCurrentGiftInfo);
|
||||
onSendGiftSuccess(finalCurrentGiftInfo, number, targetUids);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1388,10 +1469,11 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
sendGiftButton.setEnabled(true);
|
||||
return;
|
||||
}
|
||||
int number = giftNumber == -1 ? finalCurrentGiftInfo.getCount() : giftNumber;
|
||||
giftDialogBtnClickListener.onSendGiftBtnClick(
|
||||
finalCurrentGiftInfo,
|
||||
selectedMembers,
|
||||
giftNumber == -1 ? finalCurrentGiftInfo.getCount() : giftNumber,
|
||||
number,
|
||||
giftMessage,
|
||||
giftIndicator.getCurrrentType() == GiftIndicator.TYPE_KNAP,
|
||||
avatarListAdapter.getSelectType() == GiftAvatarAdapter.SELECT_TYPE_WHOLE_MIC,
|
||||
@@ -1399,7 +1481,7 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
new SenGiftCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
onSendGiftSuccess(finalCurrentGiftInfo);
|
||||
onSendGiftSuccess(finalCurrentGiftInfo, number, selectedMembers);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1511,11 +1593,11 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
tvTabInteraction.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
|
||||
giftIndicator.hidePosition(GiftIndicator.TYPE_DRAW_GIFT);
|
||||
giftIndicator.hidePosition(GiftIndicator.TYPE_PENALTY);
|
||||
giftIndicator.showPosition(GiftIndicator.TYPE_LUCKY);
|
||||
giftIndicator.showPosition(GiftIndicator.TYPE_NOBLE);
|
||||
giftIndicator.showPosition(GiftIndicator.TYPE_WEEK);
|
||||
giftIndicator.showPosition(GiftIndicator.TYPE_NORMAL);
|
||||
giftIndicator.showPosition(GiftIndicator.TYPE_PRIVILEGE);
|
||||
giftIndicator.showPosition(GiftIndicator.TYPE_INTEREST);
|
||||
if (AvRoomDataManager.get().isSingleRoom()) {
|
||||
giftIndicator.showPosition(GiftIndicator.TYPE_SING_ROOM);
|
||||
} else {
|
||||
@@ -1539,18 +1621,18 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
|
||||
giftIndicator.showPosition(GiftIndicator.TYPE_DRAW_GIFT);
|
||||
giftIndicator.showPosition(GiftIndicator.TYPE_PENALTY);
|
||||
giftIndicator.hidePosition(GiftIndicator.TYPE_LUCKY);
|
||||
giftIndicator.hidePosition(GiftIndicator.TYPE_NOBLE);
|
||||
giftIndicator.hidePosition(GiftIndicator.TYPE_WEEK);
|
||||
giftIndicator.hidePosition(GiftIndicator.TYPE_NORMAL);
|
||||
giftIndicator.hidePosition(GiftIndicator.TYPE_SING_ROOM);
|
||||
giftIndicator.hidePosition(GiftIndicator.TYPE_PRIVILEGE);
|
||||
giftIndicator.hidePosition(GiftIndicator.TYPE_INTEREST);
|
||||
|
||||
giftIndicator.setPosition(GiftIndicator.TYPE_DRAW_GIFT);
|
||||
updateGiftView(giftIndicator.getCurrrentType());
|
||||
}
|
||||
|
||||
private void onSendGiftSuccess(GiftInfo giftInfo) {
|
||||
private void onSendGiftSuccess(GiftInfo giftInfo, int giftNumber, List<MicMemberInfo> receiveUsers) {
|
||||
if (sendGiftButton == null) return;
|
||||
sendGiftButton.setText("赠送");
|
||||
sendGiftButton.setEnabled(true);
|
||||
@@ -1558,6 +1640,65 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
SingleToastUtil.showToast("发送涂鸦礼物:" + giftInfo.getGiftName() + "成功");
|
||||
clearDrawGift();
|
||||
dismiss();
|
||||
} else if (giftInfo.getGiftType() == GiftType.GIFT_TYPE_UNLOCK) {
|
||||
int totalNumber = 0;
|
||||
if (receiveUsers != null) {
|
||||
totalNumber = receiveUsers.size() * giftNumber;
|
||||
}
|
||||
updateUnlockStateSendSuccess(giftInfo, totalNumber);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新本地解锁礼物的数据状态(解锁状态、送出的数量)
|
||||
private void updateUnlockStateSendSuccess(GiftInfo giftInfo, int totalNumber) {
|
||||
if (giftInfo.getGiftType() != GiftType.GIFT_TYPE_UNLOCK) {
|
||||
return;
|
||||
}
|
||||
GiftInfo baseGift = giftInfo.getBaseGift();
|
||||
if (baseGift == null || baseGift.getGiftId() != giftInfo.getGiftId()) {
|
||||
// 不是基础礼物
|
||||
return;
|
||||
}
|
||||
// 先更新数据
|
||||
updateUnlockGiftDataState(giftInfo.getGiftId(), totalNumber);
|
||||
// 后更新UI
|
||||
updateUnlockGiftUiState(giftInfo.getGiftId());
|
||||
// 更新提示面板UI
|
||||
unLockPanel.refreshState();
|
||||
}
|
||||
|
||||
// 更新解锁礼物数据状态
|
||||
private void updateUnlockGiftDataState(int giftId, int number) {
|
||||
List<GiftInfo> panelGiftList = GiftModel.get().getGiftInfoList(GiftType.GIFT_TYPE_UNLOCK);
|
||||
if (panelGiftList == null) {
|
||||
return;
|
||||
}
|
||||
for (GiftInfo item : panelGiftList) {
|
||||
if (item.getGiftType() != GiftType.GIFT_TYPE_UNLOCK) {
|
||||
continue;
|
||||
}
|
||||
if (item.getBaseGift() == null || item.getBaseGift().getGiftId() != giftId) {
|
||||
continue;
|
||||
}
|
||||
item.updateUnlockProgress(number);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新解锁礼物Ui状态
|
||||
private void updateUnlockGiftUiState(int giftId) {
|
||||
if (giftIndicator.getCurrrentType() != GiftIndicator.TYPE_INTEREST) {
|
||||
return;
|
||||
}
|
||||
if (ListUtils.isListEmpty(pagerList)) {
|
||||
return;
|
||||
}
|
||||
for (List<GiftInfoVm> page : pagerList) {
|
||||
for (GiftInfoVm item : page) {
|
||||
GiftInfo itemBaseGift = item.data.getBaseGift();
|
||||
if (itemBaseGift != null && itemBaseGift.getGiftId() == giftId) {
|
||||
item.refreshUnlockState();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1566,9 +1707,9 @@ public class GiftDialog extends BottomSheetDialog implements View.OnClickListene
|
||||
int currentType = giftIndicator.getCurrrentType();
|
||||
switch (currentType) {
|
||||
case GiftIndicator.TYPE_NORMAL:
|
||||
case GiftIndicator.TYPE_LUCKY:
|
||||
case GiftIndicator.TYPE_NOBLE:
|
||||
case GiftIndicator.TYPE_WEEK:
|
||||
case GiftIndicator.TYPE_INTEREST:
|
||||
String roomUid = null;
|
||||
if (isInRoom) {
|
||||
if (AvRoomDataManager.get().getRoomUid() > 0) {
|
||||
|
@@ -0,0 +1,120 @@
|
||||
package com.nnbc123.app.ui.widget
|
||||
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.ProgressBar
|
||||
import android.widget.TextView
|
||||
import androidx.core.view.isVisible
|
||||
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.chuhai.utils.ktx.getColorById
|
||||
import com.chuhai.utils.spannable.SpannableTextBuilder
|
||||
import com.nnbc123.app.R
|
||||
import com.nnbc123.app.ui.utils.load
|
||||
import com.nnbc123.core.gift.bean.GiftInfo
|
||||
import com.nnbc123.core.gift.bean.UnLockGiftInfo
|
||||
import com.nnbc123.core.gift.bean.UnlockItem
|
||||
|
||||
/**
|
||||
* Created by Max on 2024/1/25 19:41
|
||||
* Desc:
|
||||
**/
|
||||
class GiftUnLockInfoAdapter(list: List<UnlockItem>) :
|
||||
BaseMultiItemQuickAdapter<UnlockItem, BaseViewHolder>(list) {
|
||||
|
||||
var selectItemId: Int = -1
|
||||
|
||||
private var baseGiftName: String? = null
|
||||
|
||||
init {
|
||||
addItemType(UnlockItem.ITEM_TYPE_BASE, R.layout.gift_dialog_lock_item_basics)
|
||||
addItemType(UnlockItem.ITEM_TYPE_CHILD, R.layout.gift_dialog_lock_item_child)
|
||||
}
|
||||
|
||||
override fun convertPayloads(
|
||||
helper: BaseViewHolder,
|
||||
item: UnlockItem?,
|
||||
payloads: MutableList<Any>
|
||||
) {
|
||||
super.convertPayloads(helper, item, payloads)
|
||||
if (item?.itemType == UnlockItem.ITEM_TYPE_CHILD) {
|
||||
convertChildState(helper, item)
|
||||
}
|
||||
}
|
||||
|
||||
override fun convert(helper: BaseViewHolder, item: UnlockItem?) {
|
||||
val giftInfo = item?.getGiftData()
|
||||
when (item?.itemType) {
|
||||
UnlockItem.ITEM_TYPE_BASE -> {
|
||||
if (giftInfo?.giftId == selectItemId) {
|
||||
helper.setBackgroundRes(
|
||||
R.id.layout_root,
|
||||
R.drawable.gift_dialog_bg_lock_item_selected
|
||||
)
|
||||
} else {
|
||||
helper.setBackgroundRes(R.id.layout_root, R.drawable.shape_14ffffff_4dp)
|
||||
}
|
||||
helper.getView<ImageView>(R.id.iv_cover).load(giftInfo?.giftUrl)
|
||||
helper.setText(R.id.tv_name, giftInfo?.giftName ?: "")
|
||||
helper.setText(R.id.tv_amount, giftInfo?.goldPrice?.toString() ?: "")
|
||||
}
|
||||
|
||||
UnlockItem.ITEM_TYPE_CHILD -> {
|
||||
if (giftInfo?.giftId == selectItemId) {
|
||||
helper.setBackgroundRes(
|
||||
R.id.layout_root,
|
||||
R.drawable.gift_dialog_bg_lock_item_selected
|
||||
)
|
||||
} else {
|
||||
helper.setBackgroundRes(R.id.layout_root, R.drawable.shape_14ffffff_4dp)
|
||||
}
|
||||
var unlockItem: UnLockGiftInfo? = null
|
||||
if (item is UnLockGiftInfo) {
|
||||
unlockItem = item
|
||||
}
|
||||
val total = unlockItem?.condition ?: 0
|
||||
helper.getView<ImageView>(R.id.iv_cover).load(giftInfo?.giftUrl)
|
||||
val nameView = helper.getView<TextView>(R.id.tv_name)
|
||||
SpannableTextBuilder(nameView)
|
||||
.appendText("送出")
|
||||
.appendText(
|
||||
" ${total}个 ",
|
||||
textColor = nameView.context.getColorById(R.color.color_FFDA24)
|
||||
)
|
||||
.appendText("${baseGiftName ?: ""}可解锁").apply()
|
||||
convertChildState(helper, item)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun convertChildState(helper: BaseViewHolder, item: UnlockItem?) {
|
||||
var unlockItem: UnLockGiftInfo? = null
|
||||
if (item is UnLockGiftInfo) {
|
||||
unlockItem = item
|
||||
}
|
||||
val total = unlockItem?.condition ?: 0
|
||||
val progress = (unlockItem?.process ?: 0).coerceAtMost(total)
|
||||
val progressBar = helper.getView<ProgressBar>(R.id.progress_bar)
|
||||
progressBar.max = total
|
||||
progressBar.progress = progress
|
||||
helper.setText(R.id.tv_count, "$progress/$total")
|
||||
val lockIconView = helper.getView<View>(R.id.iv_lock)
|
||||
val alpha: Float
|
||||
if (unlockItem?.unlocked == true) {
|
||||
alpha = 1f
|
||||
lockIconView.isVisible = false
|
||||
} else {
|
||||
alpha = 0.5f
|
||||
lockIconView.isVisible = true
|
||||
}
|
||||
helper.setAlpha(R.id.tv_name, alpha)
|
||||
helper.setAlpha(R.id.iv_cover, alpha)
|
||||
helper.setAlpha(R.id.tv_count, alpha)
|
||||
helper.setAlpha(R.id.progress_bar, alpha)
|
||||
}
|
||||
|
||||
fun setNewData(baseGiftInfo: GiftInfo?, data: MutableList<UnlockItem>?) {
|
||||
this.baseGiftName = baseGiftInfo?.giftName
|
||||
super.setNewData(data)
|
||||
}
|
||||
}
|
@@ -80,7 +80,11 @@ public class GiftIndicator extends LinearLayout {
|
||||
*/
|
||||
public static final int TYPE_PRIVILEGE = 8;
|
||||
|
||||
private Map<String, String> map = new HashMap<>();
|
||||
/**
|
||||
* 趣味(福袋礼物、解锁礼物、装扮礼物)
|
||||
*/
|
||||
public static final int TYPE_INTEREST = 9;
|
||||
|
||||
private List<GiftTab> tabList = new ArrayList<>();
|
||||
private int currrentType = TYPE_NORMAL;
|
||||
|
||||
@@ -143,10 +147,17 @@ public class GiftIndicator extends LinearLayout {
|
||||
index.getItemView().setOnClickListener(v -> {
|
||||
setPosition(index.getType());
|
||||
emitter.onNext(index.getType());
|
||||
if (index.isNeedNewTips()) {
|
||||
View view = index.getItemView().findViewById(R.id.tv_new_tag);
|
||||
if (view.getVisibility() == VISIBLE) {
|
||||
view.setVisibility(GONE);
|
||||
DemoCache.saveNewGiftTypeTip(index.getType(), false);
|
||||
}
|
||||
}
|
||||
if (index.getType() == TYPE_PENALTY) {
|
||||
ImageView imageView = index.getItemView().findViewById(R.id.iv_new_tag);
|
||||
if (imageView.getVisibility() == VISIBLE) {
|
||||
imageView.setVisibility(GONE);
|
||||
View view = index.getItemView().findViewById(R.id.tv_new_tag);
|
||||
if (view.getVisibility() == VISIBLE) {
|
||||
view.setVisibility(GONE);
|
||||
DemoCache.saveNewGiftTypeTip(false);
|
||||
}
|
||||
} else if (index.getType() == TYPE_KNAP) {
|
||||
@@ -186,10 +197,16 @@ public class GiftIndicator extends LinearLayout {
|
||||
for (GiftTab tab : tabList) {
|
||||
if (tab.getType() == type) {
|
||||
tab.getItemView().setVisibility(VISIBLE);
|
||||
if (tab.isNeedNewTips()) {
|
||||
if (DemoCache.readNewGiftTypeTip(tab.getType())) {
|
||||
View view = tab.getItemView().findViewById(R.id.tv_new_tag);
|
||||
view.setVisibility(VISIBLE);
|
||||
}
|
||||
}
|
||||
if (type == TYPE_PENALTY) {
|
||||
if (DemoCache.readNewGiftTypeTip()) {
|
||||
ImageView imageView = tab.getItemView().findViewById(R.id.iv_new_tag);
|
||||
imageView.setVisibility(VISIBLE);
|
||||
View view = tab.getItemView().findViewById(R.id.tv_new_tag);
|
||||
view.setVisibility(VISIBLE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@@ -112,7 +112,7 @@ public class LinePagerIndicator extends View implements IPagerIndicator {
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
onPageScrolled(position,0,0);
|
||||
// onPageScrolled(position,0,0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Before Width: | Height: | Size: 280 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 360 B |
BIN
app/src/main/res/drawable-xxhdpi/gift_dialog_bg_item.9.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
app/src/main/res/drawable-xxhdpi/gift_dialog_ic_diamond.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
app/src/main/res/drawable-xxhdpi/gift_dialog_ic_diamond_14.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
app/src/main/res/drawable-xxhdpi/gift_wall_bg_level_0.webp
Normal file
After Width: | Height: | Size: 380 B |
BIN
app/src/main/res/drawable-xxhdpi/gift_wall_bg_level_1.webp
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
app/src/main/res/drawable-xxhdpi/gift_wall_bg_level_2.webp
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
app/src/main/res/drawable-xxhdpi/gift_wall_bg_level_3.webp
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
app/src/main/res/drawable-xxhdpi/gift_wall_bg_level_4.webp
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
app/src/main/res/drawable-xxhdpi/gift_wall_bg_level_5.webp
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
app/src/main/res/drawable-xxhdpi/gift_wall_bg_level_6.webp
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
app/src/main/res/drawable-xxhdpi/gift_wall_bg_level_7.webp
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
app/src/main/res/drawable-xxhdpi/gift_wall_ic_diamond.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
@@ -4,8 +4,8 @@
|
||||
|
||||
<gradient
|
||||
android:angle="180"
|
||||
android:endColor="@color/color_218eff"
|
||||
android:startColor="@color/color_7727e4"
|
||||
android:endColor="#FFDA24"
|
||||
android:startColor="#FFDA24"
|
||||
android:type="linear"
|
||||
android:useLevel="true" />
|
||||
<corners android:radius="100dp" />
|
||||
|
@@ -2,7 +2,7 @@
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_enabled="true">
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="#FFE710" />
|
||||
<solid android:color="#FFDA24" />
|
||||
<corners android:bottomLeftRadius="0dp" android:bottomRightRadius="100dp" android:topLeftRadius="0dp" android:topRightRadius="100dp" />
|
||||
</shape>
|
||||
</item>
|
||||
|
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<solid android:color="#14FFFFFF" />
|
||||
|
||||
<corners android:radius="4dp" />
|
||||
|
||||
<stroke
|
||||
android:width="0.5dp"
|
||||
android:color="#FFDA24" />
|
||||
</shape>
|
@@ -0,0 +1,12 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="8dp"
|
||||
android:height="8dp"
|
||||
android:viewportWidth="8"
|
||||
android:viewportHeight="8">
|
||||
<path
|
||||
android:pathData="M6.512,4.3904L2.8123,7.3501C2.5967,7.5226 2.2821,7.4877 2.1096,7.272C2.0386,7.1834 2,7.0732 2,6.9597L2,1.0403C2,0.7642 2.2239,0.5403 2.5,0.5403C2.6135,0.5403 2.7237,0.579 2.8123,0.6499L6.512,3.6096C6.7276,3.7821 6.7625,4.0967 6.59,4.3123C6.567,4.3412 6.5408,4.3674 6.512,4.3904Z"
|
||||
android:strokeWidth="1"
|
||||
android:fillColor="#FFFFFF"
|
||||
android:fillType="evenOdd"
|
||||
android:strokeColor="#00000000"/>
|
||||
</vector>
|
12
app/src/main/res/drawable/gift_dialog_ic_arrow_white_up.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="10dp"
|
||||
android:height="10dp"
|
||||
android:viewportWidth="10"
|
||||
android:viewportHeight="10">
|
||||
<path
|
||||
android:pathData="M5.384,2.461L9.317,7.18C9.493,7.392 9.465,7.707 9.253,7.884C9.163,7.959 9.049,8 8.932,8L1.068,8C0.791,8 0.568,7.776 0.568,7.5C0.568,7.383 0.609,7.27 0.683,7.18L4.616,2.461C4.793,2.249 5.108,2.22 5.32,2.397C5.343,2.416 5.365,2.438 5.384,2.461Z"
|
||||
android:strokeWidth="1"
|
||||
android:fillColor="#FFFFFF"
|
||||
android:fillType="evenOdd"
|
||||
android:strokeColor="#00000000"/>
|
||||
</vector>
|
12
app/src/main/res/drawable/gift_dialog_ic_lock.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="9dp"
|
||||
android:height="9dp"
|
||||
android:viewportWidth="9"
|
||||
android:viewportHeight="9">
|
||||
<path
|
||||
android:pathData="M6.4687,2.7063L2.5313,2.7063C1.531,2.7063 0.72,3.5172 0.72,4.5176L0.72,7.0987C0.72,8.099 1.531,8.91 2.5313,8.91L6.4687,8.91C7.469,8.91 8.28,8.099 8.28,7.0987L8.28,4.5176C8.28,3.5172 7.469,2.7063 6.4687,2.7063ZM4.9529,5.8622L4.9529,7.0909C4.9529,7.348 4.7503,7.5566 4.5,7.5566C4.2498,7.5566 4.0471,7.348 4.0471,7.0909L4.0471,5.8622C3.7766,5.7012 3.5942,5.4009 3.5942,5.0563C3.5942,4.5419 3.9997,4.125 4.5,4.125C5.0003,4.125 5.4059,4.5419 5.4059,5.0563C5.4059,5.4009 5.2236,5.7012 4.9529,5.8622ZM4.5076,0.09C3.106,0.09 1.9696,1.242 1.9696,2.7555L1.9696,4.1615L7.0458,4.1615L7.0458,2.7555C7.0458,1.242 5.9094,0.09 4.5076,0.09ZM2.9572,3.507L2.9572,2.5441C2.9572,1.6578 3.6561,0.9391 4.5182,0.9391C5.3804,0.9391 6.0792,1.6578 6.0792,2.5441L6.0792,3.5296L2.9572,3.507Z"
|
||||
android:strokeWidth="1"
|
||||
android:fillColor="#FFFFFF"
|
||||
android:fillType="nonZero"
|
||||
android:strokeColor="#00000000"/>
|
||||
</vector>
|
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- 定义轨道的背景 -->
|
||||
<item android:id="@android:id/background">
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="#696D7A" />
|
||||
<corners android:radius="3dp" />
|
||||
</shape>
|
||||
</item>
|
||||
<!-- 定义轨道上已完成部分的样式 -->
|
||||
<item android:id="@android:id/progress">
|
||||
<scale android:scaleWidth="100%">
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="#FFDA24" />
|
||||
<corners android:radius="3dp" />
|
||||
</shape>
|
||||
</scale>
|
||||
</item>
|
||||
</layer-list>
|
6
app/src/main/res/drawable/shape_14ffffff_4dp.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<corners android:radius="4dp" />
|
||||
<solid android:color="#14FFFFFF" />
|
||||
</shape>
|
6
app/src/main/res/drawable/shape_ff425b_6dp.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<corners android:radius="6dp"/>
|
||||
<solid android:color="#FFFF425B"/>
|
||||
</shape>
|
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<solid android:color="@color/white_tran_10" />
|
||||
|
||||
<stroke
|
||||
android:width="1px"
|
||||
android:color="@color/white_transparent_40" />
|
||||
|
||||
<corners android:radius="12dp" />
|
||||
|
||||
</shape>
|
@@ -2,12 +2,12 @@
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<stroke
|
||||
android:width="1dp"
|
||||
android:color="#FFE710"
|
||||
android:color="#FFDA24"
|
||||
/>
|
||||
<solid
|
||||
android:color="@color/transparent"
|
||||
/>
|
||||
<corners
|
||||
android:radius="50dp"
|
||||
android:radius="16dp"
|
||||
/>
|
||||
</shape>
|
18
app/src/main/res/drawable/user_info_ic_help.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="12dp"
|
||||
android:height="12dp"
|
||||
android:viewportWidth="12"
|
||||
android:viewportHeight="12">
|
||||
<path
|
||||
android:pathData="M6,6m-5.5,0a5.5,5.5 0,1 1,11 0a5.5,5.5 0,1 1,-11 0"
|
||||
android:strokeWidth="1"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#A2A7B8"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M6.11,2.52C5.37,2.52 4.79,2.73 4.36,3.15C3.92,3.57 3.71,4.15 3.71,4.89L4.85,4.89C4.85,4.47 4.93,4.14 5.1,3.91C5.29,3.63 5.6,3.5 6.04,3.5C6.38,3.5 6.65,3.59 6.84,3.78C7.02,3.97 7.12,4.23 7.12,4.56C7.12,4.81 7.03,5.05 6.85,5.27L6.73,5.41C6.08,5.99 5.69,6.41 5.56,6.68C5.42,6.95 5.36,7.28 5.36,7.66L5.36,7.8L6.51,7.8L6.51,7.66C6.51,7.42 6.56,7.21 6.66,7.01C6.75,6.83 6.88,6.66 7.06,6.51C7.54,6.09 7.83,5.82 7.92,5.72C8.16,5.4 8.29,4.99 8.29,4.49C8.29,3.88 8.09,3.4 7.69,3.05C7.29,2.69 6.76,2.52 6.11,2.52ZM5.93,8.29C5.71,8.29 5.53,8.36 5.38,8.5C5.23,8.64 5.16,8.82 5.16,9.04C5.16,9.26 5.23,9.44 5.38,9.58C5.53,9.72 5.71,9.8 5.93,9.8C6.15,9.8 6.33,9.73 6.48,9.59C6.63,9.45 6.71,9.26 6.71,9.04C6.71,8.82 6.63,8.64 6.49,8.5C6.34,8.36 6.15,8.29 5.93,8.29Z"
|
||||
android:strokeWidth="1"
|
||||
android:fillColor="#A2A7B8"
|
||||
android:fillType="nonZero"
|
||||
android:strokeColor="#00000000"/>
|
||||
</vector>
|
@@ -4,15 +4,20 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/bg_normal_1c1b22"
|
||||
android:background="#F8F8FB"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.nnbc123.app.base.TitleBar
|
||||
android:id="@+id/title_bar"
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_30" />
|
||||
android:background="@color/color_white">
|
||||
|
||||
<com.nnbc123.app.base.TitleBar
|
||||
android:id="@+id/title_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_30" />
|
||||
</FrameLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/fl_roll_view"
|
||||
android:layout_width="match_parent"
|
||||
@@ -35,8 +40,7 @@
|
||||
<com.nnbc123.app.ui.widget.magicindicator.MagicIndicator
|
||||
android:id="@+id/view_indicator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginTop="@dimen/dp_10" />
|
||||
android:layout_height="46dp" />
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/viewpager"
|
||||
@@ -47,19 +51,19 @@
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:baselineAligned="true"
|
||||
android:background="@color/white"
|
||||
android:baselineAligned="true"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="15dp"
|
||||
android:drawableStart="@drawable/ic_charge_diamond"
|
||||
android:drawablePadding="3dp"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="false"
|
||||
android:text="我的钻石"
|
||||
android:layout_marginStart="15dp"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="12sp" />
|
||||
|
||||
@@ -67,9 +71,9 @@
|
||||
android:id="@+id/tv_diamond_num"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="0"
|
||||
android:includeFontPadding="false"
|
||||
android:layout_marginStart="4dp"
|
||||
android:includeFontPadding="false"
|
||||
android:text="0"
|
||||
android:textColor="#ffffbc51"
|
||||
android:textSize="16sp" />
|
||||
|
||||
@@ -82,10 +86,10 @@
|
||||
android:id="@+id/tv_charge"
|
||||
android:layout_width="72dp"
|
||||
android:layout_height="24dp"
|
||||
android:text="充值"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:background="@drawable/bg_common_confirm"
|
||||
android:gravity="center"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:text="充值"
|
||||
android:textColor="@color/text_normal_282828"
|
||||
android:textSize="12sp" />
|
||||
|
||||
|
@@ -10,19 +10,28 @@
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/bg_normal_1c1b22">
|
||||
android:background="#F8F8FB">
|
||||
|
||||
<com.nnbc123.app.base.TitleBar
|
||||
android:id="@+id/title_bar"
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/layout_title_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_30" />
|
||||
android:background="@color/color_white">
|
||||
|
||||
<com.nnbc123.app.base.TitleBar
|
||||
android:id="@+id/title_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_30" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/fl_roll_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/title_bar"
|
||||
android:layout_below="@+id/layout_title_bar"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<com.nnbc123.app.ui.widget.rollviewpager.RollPagerView
|
||||
@@ -37,13 +46,11 @@
|
||||
tools:visibility="visible" />
|
||||
</FrameLayout>
|
||||
|
||||
|
||||
<com.nnbc123.app.ui.widget.magicindicator.MagicIndicator
|
||||
android:id="@+id/view_indicator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="30dp"
|
||||
android:layout_below="@+id/fl_roll_view"
|
||||
android:layout_marginTop="@dimen/dp_10" />
|
||||
android:layout_height="46dp"
|
||||
android:layout_below="@+id/fl_roll_view" />
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/viewpager"
|
||||
|
@@ -545,7 +545,6 @@
|
||||
android:id="@+id/view_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginBottom="@dimen/dp_60"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
@@ -6,6 +6,36 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_dress_up_banner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginHorizontal="6dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:scaleType="centerCrop"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@id/ll_dialog_bottom_gift"
|
||||
app:layout_constraintDimensionRatio="363:44"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<com.nnbc123.app.ui.widget.GIftDialogUnlockPanel
|
||||
android:id="@+id/panel_unlock"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="44dp"
|
||||
android:layout_marginHorizontal="6dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:visibility="gone"
|
||||
app:cardBackgroundColor="@color/transparent"
|
||||
app:cardCornerRadius="10dp"
|
||||
app:cardElevation="0px"
|
||||
app:cardMaxElevation="0px"
|
||||
app:layout_constraintBottom_toTopOf="@id/ll_dialog_bottom_gift"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
tools:visibility="visible"/>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/fl_lucky_desc"
|
||||
android:layout_width="0dp"
|
||||
@@ -381,9 +411,8 @@
|
||||
<com.nnbc123.app.ui.widget.magicindicator.GiftIndicator
|
||||
android:id="@+id/gift_indicator"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="34dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
@@ -394,7 +423,7 @@
|
||||
<RelativeLayout
|
||||
android:id="@+id/rl_gifts"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="261dp"
|
||||
android:layout_height="222dp"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
@@ -534,7 +563,7 @@
|
||||
<RelativeLayout
|
||||
android:id="@+id/layout_recharge"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_50"
|
||||
android:layout_height="40dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/et_gift_message">
|
||||
@@ -542,9 +571,9 @@
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_gold"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="32dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginStart="13dp"
|
||||
android:background="@drawable/shape_black_solid_round"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingStart="9dp"
|
||||
@@ -554,8 +583,8 @@
|
||||
android:id="@+id/tv_text_gold"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableStart="@drawable/ic_gift_diamond"
|
||||
android:drawablePadding="3dp"
|
||||
android:drawableStart="@drawable/gift_dialog_ic_diamond_14"
|
||||
android:drawablePadding="2dp"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="false"
|
||||
android:text="0"
|
||||
@@ -564,22 +593,21 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/tv_recharge"
|
||||
android:layout_width="15dp"
|
||||
android:layout_height="15dp"
|
||||
android:layout_marginStart="7dp"
|
||||
android:drawablePadding="@dimen/dp_5"
|
||||
android:layout_width="8dp"
|
||||
android:layout_height="8dp"
|
||||
android:layout_marginStart="5dp"
|
||||
android:gravity="center"
|
||||
android:src="@drawable/ic_arrow_recharge_white" />
|
||||
android:src="@drawable/gift_dialog_ic_arrow_white_right" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/send_container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_30"
|
||||
android:layout_height="30dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginRight="15dp"
|
||||
android:layout_marginRight="13dp"
|
||||
android:background="@drawable/shape_room_bg_send"
|
||||
android:orientation="horizontal">
|
||||
|
||||
@@ -605,7 +633,7 @@
|
||||
android:layout_width="@dimen/dp_10"
|
||||
android:layout_height="@dimen/dp_10"
|
||||
android:layout_marginStart="10dp"
|
||||
android:src="@drawable/icon_room_send_arrow_white" />
|
||||
android:src="@drawable/gift_dialog_ic_arrow_white_up" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -616,7 +644,7 @@
|
||||
android:background="@drawable/bg_magic_dialog_button_send"
|
||||
android:text="赠送"
|
||||
android:textColor="@color/text_normal_282828"
|
||||
android:textSize="@dimen/sp_15" />
|
||||
android:textSize="13dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -625,7 +653,7 @@
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/cs_privilege"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:layout_height="40dp"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
@@ -325,6 +325,7 @@
|
||||
android:layout_width="@dimen/dp_10"
|
||||
android:layout_height="@dimen/dp_10"
|
||||
android:layout_marginStart="10dp"
|
||||
android:rotation="180"
|
||||
android:src="@drawable/icon_room_send_arrow" />
|
||||
|
||||
</LinearLayout>
|
||||
|
@@ -15,7 +15,7 @@
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:paddingStart="14dp"
|
||||
android:paddingTop="15dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingEnd="14dp" />
|
||||
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
|
@@ -11,11 +11,10 @@
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_gift"
|
||||
android:layout_marginTop="6dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp" />
|
||||
android:layout_marginTop="11.5dp"
|
||||
android:paddingHorizontal="9.5dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@@ -2,6 +2,7 @@
|
||||
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/layout_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
@@ -17,10 +18,10 @@
|
||||
android:layout_marginTop="12dp"
|
||||
android:background="@color/white"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="@dimen/dp_15"
|
||||
android:paddingTop="@dimen/dp_12"
|
||||
android:paddingRight="@dimen/dp_15"
|
||||
android:paddingBottom="@dimen/dp_12"
|
||||
android:paddingLeft="@dimen/dp_13"
|
||||
android:paddingTop="@dimen/dp_8"
|
||||
android:paddingRight="@dimen/dp_13"
|
||||
android:paddingBottom="@dimen/dp_16"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
@@ -28,19 +29,20 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:includeFontPadding="false"
|
||||
android:text="技能卡"
|
||||
android:textColor="@color/text_normal_282828"
|
||||
android:textSize="@dimen/sp_16" />
|
||||
android:textColor="#2B2D33"
|
||||
android:textSize="@dimen/sp_15"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_skill"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_8"
|
||||
android:layout_marginBottom="8dp" />
|
||||
android:layout_marginTop="@dimen/dp_8" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layout_gift"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
@@ -50,41 +52,61 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/ll_skill"
|
||||
app:layout_constraintVertical_bias="0">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_gift_detail"
|
||||
android:layout_width="wrap_content"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:includeFontPadding="false"
|
||||
android:text="礼物墙"
|
||||
android:textColor="@color/text_normal_282828"
|
||||
android:textSize="@dimen/sp_16" />
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="13dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingEnd="13dp"
|
||||
android:paddingBottom="16dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_gift_detail"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:includeFontPadding="false"
|
||||
android:text="礼物墙"
|
||||
android:textColor="#2B2D33"
|
||||
android:textSize="@dimen/sp_15"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_gift_level"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableStart="@drawable/user_info_ic_help"
|
||||
android:drawablePadding="4dp"
|
||||
android:gravity="center_vertical"
|
||||
android:includeFontPadding="false"
|
||||
android:paddingVertical="5dp"
|
||||
android:text="礼物等级说明"
|
||||
android:textColor="#A2A7B8"
|
||||
android:textSize="@dimen/sp_11"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tv_gift_detail"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_gift_detail" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<com.nnbc123.app.ui.widget.magicindicator.MagicIndicator
|
||||
android:id="@+id/magic_indicator_gift"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="25dp"
|
||||
android:layout_height="34dp"
|
||||
android:layout_gravity="center_horizontal" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_more_gift"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_gravity="end"
|
||||
android:layout_marginTop="-25dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/ic_userinfo_arrow_right" />
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/view_pager_gift"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="350dp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/view_pager_gift"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="500dp"
|
||||
android:background="@color/white"
|
||||
app:layout_constraintTop_toBottomOf="@id/layout_gift" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
63
app/src/main/res/layout/gift_dialog_lock_item_basics.xml
Normal file
@@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/layout_root"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginHorizontal="2dp"
|
||||
android:background="@drawable/shape_14ffffff_4dp"
|
||||
android:paddingStart="3dp"
|
||||
android:paddingEnd="8dp"
|
||||
tools:background="@color/black">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_cover"
|
||||
android:layout_width="28dp"
|
||||
android:layout_height="28dp"
|
||||
android:scaleType="centerCrop"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:src="@drawable/default_cover" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="2dp"
|
||||
android:includeFontPadding="false"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="10dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/tv_amount"
|
||||
app:layout_constraintStart_toEndOf="@id/iv_cover"
|
||||
app:layout_constraintTop_toTopOf="@id/iv_cover"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
tools:text="Name" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_amount"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="2dp"
|
||||
android:ellipsize="end"
|
||||
android:includeFontPadding="false"
|
||||
android:maxLines="1"
|
||||
android:textColor="#CED1DB"
|
||||
android:textSize="9dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/iv_cover"
|
||||
app:layout_constraintStart_toEndOf="@id/iv_unit"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_name"
|
||||
tools:text="100" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_unit"
|
||||
android:layout_width="8dp"
|
||||
android:layout_height="8dp"
|
||||
android:src="@drawable/gift_dialog_ic_diamond"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tv_amount"
|
||||
app:layout_constraintStart_toStartOf="@id/tv_name"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_amount" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
79
app/src/main/res/layout/gift_dialog_lock_item_child.xml
Normal file
@@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/layout_root"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginHorizontal="2dp"
|
||||
android:background="@drawable/shape_14ffffff_4dp"
|
||||
android:paddingStart="3dp"
|
||||
android:paddingEnd="8dp"
|
||||
tools:background="@color/black">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_cover"
|
||||
android:layout_width="28dp"
|
||||
android:layout_height="28dp"
|
||||
android:scaleType="centerCrop"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:src="@drawable/default_cover" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_lock"
|
||||
android:layout_width="8dp"
|
||||
android:layout_height="8dp"
|
||||
android:layout_marginStart="1dp"
|
||||
android:layout_marginTop="2dp"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/gift_dialog_ic_lock"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:src="@drawable/default_cover"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="2dp"
|
||||
android:includeFontPadding="false"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="10dp"
|
||||
app:layout_constraintBottom_toTopOf="@id/tv_count"
|
||||
app:layout_constraintStart_toEndOf="@id/iv_cover"
|
||||
app:layout_constraintTop_toTopOf="@id/iv_cover"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
tools:text="Name" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="2dp"
|
||||
android:ellipsize="end"
|
||||
android:includeFontPadding="false"
|
||||
android:maxLines="1"
|
||||
android:textColor="#CED1DB"
|
||||
android:textSize="9dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/iv_cover"
|
||||
app:layout_constraintStart_toEndOf="@id/progress_bar"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_name"
|
||||
tools:text="1/5" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progress_bar"
|
||||
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||
android:layout_width="88dp"
|
||||
android:layout_height="6dp"
|
||||
android:max="100"
|
||||
android:progressDrawable="@drawable/gift_dialog_lock_progress_drawable"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tv_count"
|
||||
app:layout_constraintStart_toStartOf="@id/tv_name"
|
||||
app:layout_constraintTop_toTopOf="@id/tv_count"
|
||||
tools:progress="20" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
18
app/src/main/res/layout/gift_dialog_unlock_panel.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:parentTag="androidx.cardview.widget.CardView">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="32dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginHorizontal="4dp"
|
||||
android:orientation="horizontal"
|
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
|
||||
|
||||
</merge>
|
@@ -1,8 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<data>
|
||||
|
||||
<variable
|
||||
name="carInfo"
|
||||
type="com.nnbc123.core.decoration.car.bean.CarInfo" />
|
||||
@@ -11,18 +12,17 @@
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="120dp"
|
||||
tools:background="@color/bg_normal_1c1b22"
|
||||
>
|
||||
tools:background="@color/bg_normal_1c1b22">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/ll_car_cover"
|
||||
android:layout_width="112dp"
|
||||
android:orientation="vertical"
|
||||
android:layout_height="80dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="10dp"
|
||||
android:padding="5dp"
|
||||
android:background="@drawable/bg_secondary_radius_15"
|
||||
android:layout_height="80dp" >
|
||||
android:orientation="vertical"
|
||||
android:padding="5dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_car_cover"
|
||||
@@ -33,65 +33,67 @@
|
||||
android:id="@+id/iv_tag"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
tools:src="@drawable/ic_mark_limit"/>
|
||||
tools:src="@drawable/ic_mark_limit" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_toStartOf="@id/tv_used"
|
||||
android:layout_toEndOf="@id/ll_car_cover"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_car_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="left"
|
||||
android:layout_toEndOf="@+id/ll_car_cover"
|
||||
android:layout_marginTop="@dimen/dp_25"
|
||||
android:layout_marginStart="10dp"
|
||||
android:textColor="@color/text_title_282828"
|
||||
android:singleLine="true"
|
||||
android:drawableStart="@{carInfo.isGive ? @drawable/ic_send_tag : null}"
|
||||
android:drawablePadding="5dp"
|
||||
android:textSize="15sp"
|
||||
android:gravity="left"
|
||||
android:singleLine="true"
|
||||
android:text="@{carInfo.name}"
|
||||
android:textColor="@color/text_title_282828"
|
||||
android:textSize="15sp"
|
||||
tools:text="神豪座驾" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_used"
|
||||
android:layout_width="85dp"
|
||||
android:layout_height="33dp"
|
||||
android:id="@+id/tv_counters"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:textSize="14sp"
|
||||
android:visibility="gone"
|
||||
android:textColor="@color/text_title_282828"
|
||||
tools:visibility="visible"
|
||||
android:layout_marginEnd="@dimen/dp_15"
|
||||
android:layout_alignTop="@id/tv_car_name"
|
||||
android:layout_alignParentEnd="true"
|
||||
tools:text="@string/label_can_use"
|
||||
tools:background="@drawable/bg_common_confirm"/>
|
||||
|
||||
|
||||
android:maxLines="1"
|
||||
android:textColor="#696D7A"
|
||||
android:textSize="11sp"
|
||||
tools:text="- 1567天 -" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_counters"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignBottom="@id/ll_car_cover"
|
||||
android:layout_toEndOf="@id/ll_car_cover"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:id="@+id/tv_used"
|
||||
android:layout_width="78dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="@dimen/dp_13"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/text_normal_282828"
|
||||
android:textSize="12sp"
|
||||
tools:text="- 1567天 -" />
|
||||
android:textColor="#2B2D33"
|
||||
android:textSize="13sp"
|
||||
android:visibility="gone"
|
||||
tools:background="@drawable/bg_common_confirm"
|
||||
tools:text="@string/label_can_use"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1px"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:layout_marginStart="15dp"
|
||||
android:background="@color/line_353548"/>
|
||||
android:layout_marginEnd="15dp"
|
||||
android:background="@color/line_353548" />
|
||||
</RelativeLayout>
|
||||
</layout>
|
@@ -102,7 +102,7 @@
|
||||
android:drawablePadding="1dp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textColor="#696D7A"
|
||||
android:textSize="10sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
@@ -39,59 +39,64 @@
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_car_name"
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="22dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_toEndOf="@+id/ll_head_img"
|
||||
android:drawableStart="@{headWearInfo.comeFrom==1?null:@drawable/ic_send_tag}"
|
||||
android:drawablePadding="@dimen/dp_5"
|
||||
android:text="@{headWearInfo.headwearName}"
|
||||
android:textColor="@color/text_title_282828"
|
||||
android:textSize="15sp"
|
||||
tools:text="神豪座驾" />
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="13dp"
|
||||
android:layout_toStartOf="@id/tv_used"
|
||||
android:layout_toEndOf="@id/ll_head_img"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_car_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableStart="@{headWearInfo.comeFrom==1?null:@drawable/ic_send_tag}"
|
||||
android:drawablePadding="@dimen/dp_5"
|
||||
android:text="@{headWearInfo.headwearName}"
|
||||
android:textColor="@color/text_title_282828"
|
||||
android:textSize="15sp"
|
||||
tools:text="神豪座驾" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_counters"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:drawablePadding="1dp"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:textColor="#696D7A"
|
||||
android:textSize="11sp"
|
||||
tools:text="剩余666天剩余666天剩余666天剩余666天剩余666天" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_used"
|
||||
android:layout_width="85dp"
|
||||
android:layout_height="33dp"
|
||||
android:layout_alignTop="@id/tv_car_name"
|
||||
android:layout_width="78dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginEnd="@dimen/dp_15"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="@dimen/dp_13"
|
||||
android:background="@{headWearInfo.used ? @drawable/bg_common_cancel : @drawable/bg_common_confirm}"
|
||||
android:gravity="center"
|
||||
android:text="@{headWearInfo.used ? @string/label_used : @string/label_can_use}"
|
||||
android:textColor="@color/text_title_282828"
|
||||
android:textSize="14sp"
|
||||
android:textColor="#2B2D33"
|
||||
android:textSize="13sp"
|
||||
android:visibility="gone"
|
||||
tools:background="@drawable/bg_common_confirm"
|
||||
tools:text="@string/label_can_use"
|
||||
tools:visibility="visible" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_counters"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignBottom="@id/ll_head_img"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_toEndOf="@+id/ll_head_img"
|
||||
android:drawablePadding="1dp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/text_normal_282828"
|
||||
android:textSize="12sp"
|
||||
tools:text="剩余666天" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1px"
|
||||
android:layout_alignEnd="@id/tv_used"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:layout_toRightOf="@id/ll_head_img"
|
||||
android:background="@color/line_353548" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
@@ -92,7 +92,7 @@
|
||||
android:drawablePadding="1dp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textColor="#696D7A"
|
||||
android:textSize="10sp"
|
||||
app:layout_constraintBaseline_toBaselineOf="@id/tv_name"
|
||||
app:layout_constraintStart_toEndOf="@id/tv_name"
|
||||
|
@@ -5,8 +5,8 @@
|
||||
android:layout_height="26dp"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:paddingLeft="@dimen/dp_7"
|
||||
android:paddingRight="@dimen/dp_7">
|
||||
android:paddingLeft="@dimen/dp_8"
|
||||
android:paddingRight="@dimen/dp_8">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
@@ -17,12 +17,18 @@
|
||||
tools:ignore="SpUsage"
|
||||
tools:text="全部礼物" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_new_tag"
|
||||
<TextView
|
||||
android:id="@+id/tv_new_tag"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="11dp"
|
||||
android:layout_gravity="top"
|
||||
android:src="@drawable/ic_gift_dialog_new"
|
||||
android:layout_marginStart="-15dp"
|
||||
android:background="@drawable/shape_ff425b_6dp"
|
||||
android:gravity="center"
|
||||
android:paddingHorizontal="3dp"
|
||||
android:text="New"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="8dp"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
|
@@ -15,38 +15,51 @@
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/gift_layout"
|
||||
android:layout_width="86dp"
|
||||
android:layout_height="98dp"
|
||||
android:layout_marginTop="6dp"
|
||||
android:layout_marginBottom="6dp"
|
||||
android:gravity="center">
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="96dp"
|
||||
android:layout_marginTop="3dp"
|
||||
android:layout_marginBottom="3dp"
|
||||
android:gravity="center"
|
||||
tools:layout_width="88dp">
|
||||
|
||||
<View
|
||||
android:id="@+id/view_room_gift_select"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@{item.isPrivateChat?@drawable/shape_gift_item_select : @drawable/shape_gift_item_select_room}"
|
||||
android:background="@{item.isPrivateChat?@drawable/shape_gift_item_select : @drawable/gift_dialog_bg_item}"
|
||||
android:visibility="@{item.isSelect ? View.VISIBLE : View.INVISIBLE}"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/gift_image"
|
||||
nomalUrl="@{item.data().giftUrl}"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_width="52dp"
|
||||
android:layout_height="52dp"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="@dimen/dp_3"
|
||||
android:layout_marginTop="7dp"
|
||||
android:alpha="@{item.isLocked?0.5f:1f}" />
|
||||
|
||||
<ImageView
|
||||
nomalUrl="@{item.data().giftTag}"
|
||||
android:alpha="@{item.isLocked?0.5f:1f}"
|
||||
android:visibility="@{TextUtils.isEmpty(item.data().giftTag) ? View.GONE : View.VISIBLE}"
|
||||
android:id="@+id/iv_tag"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="12dp"
|
||||
android:layout_alignStart="@id/gift_image"
|
||||
android:layout_alignBottom="@id/gift_image"
|
||||
android:adjustViewBounds="true" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/gift_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/gift_image"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:alpha="@{item.isLocked?0.5f:1f}"
|
||||
android:text="@{item.data().giftName}"
|
||||
android:textColor="@{item.isPrivateChat? @color/text_normal_282828 : @color/white}"
|
||||
android:textSize="@dimen/dp_10"
|
||||
android:textSize="@dimen/dp_12"
|
||||
tools:ignore="SpUsage"
|
||||
tools:text="123"
|
||||
tools:textColor="@color/text_secondary_878b9c" />
|
||||
@@ -57,30 +70,33 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/gift_name"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:alpha="@{item.isLocked?0.5f:1f}"
|
||||
android:drawableStart="@{item.isSelect?item.radishDrawableSelected:item.radishDrawable}"
|
||||
android:drawablePadding="2dp"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="false"
|
||||
android:text="@{item.goldText}"
|
||||
android:textColor="@{item.isPrivateChat? @color/text_secondary_878b9c : @color/white_transparent_60}"
|
||||
android:textColor="@{item.isPrivateChat? @color/text_secondary_878b9c : @color/color_CED1DB}"
|
||||
android:textSize="@dimen/dp_10"
|
||||
tools:ignore="SpUsage"
|
||||
tools:text="123"
|
||||
tools:textColor="@color/white_transparent_60"/>
|
||||
tools:textColor="@color/white_transparent_60" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_marginTop="4dp"
|
||||
android:alpha="@{item.isLocked?0.5f:1f}"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal">
|
||||
android:orientation="horizontal"
|
||||
android:paddingEnd="2dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon_gift_exclusive"
|
||||
android:layout_width="@dimen/dp_14"
|
||||
android:layout_height="@dimen/dp_14"
|
||||
android:layout_marginEnd="@dimen/dp_3"
|
||||
android:layout_marginEnd="@dimen/dp_2"
|
||||
android:src="@drawable/icon_gift_exclusive"
|
||||
android:visibility="@{item.isExclusive ? View.VISIBLE : View.GONE}"
|
||||
tools:visibility="visible" />
|
||||
@@ -89,7 +105,7 @@
|
||||
android:id="@+id/icon_gift_new"
|
||||
android:layout_width="@dimen/dp_14"
|
||||
android:layout_height="@dimen/dp_14"
|
||||
android:layout_marginEnd="@dimen/dp_3"
|
||||
android:layout_marginEnd="@dimen/dp_2"
|
||||
android:src="@drawable/icon_gift_new"
|
||||
android:visibility="@{item.isShowNew ? View.VISIBLE : View.GONE}"
|
||||
tools:visibility="visible" />
|
||||
@@ -98,7 +114,7 @@
|
||||
android:id="@+id/icon_gift_limit_time"
|
||||
android:layout_width="@dimen/dp_14"
|
||||
android:layout_height="@dimen/dp_14"
|
||||
android:layout_marginEnd="@dimen/dp_3"
|
||||
android:layout_marginEnd="@dimen/dp_2"
|
||||
android:src="@drawable/icon_gift_limit_time"
|
||||
android:visibility="@{item.isShowLimit ? View.VISIBLE : View.GONE}"
|
||||
tools:visibility="visible" />
|
||||
@@ -107,7 +123,7 @@
|
||||
android:id="@+id/icon_gift_effect"
|
||||
android:layout_width="@dimen/dp_14"
|
||||
android:layout_height="@dimen/dp_14"
|
||||
android:layout_marginEnd="@dimen/dp_4"
|
||||
android:layout_marginEnd="@dimen/dp_2"
|
||||
android:src="@drawable/icon_gift_effect"
|
||||
android:visibility="@{item.isShowEffect ? View.VISIBLE : View.GONE}"
|
||||
tools:visibility="visible" />
|
||||
@@ -117,7 +133,7 @@
|
||||
nomalUrl="@{item.vipIcon}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="16dp"
|
||||
android:layout_marginEnd="@dimen/dp_3"
|
||||
android:layout_marginEnd="@dimen/dp_2"
|
||||
android:adjustViewBounds="true"
|
||||
android:visibility="@{TextUtils.isEmpty(item.vipIcon) ? View.GONE : View.VISIBLE}"
|
||||
tools:src="@drawable/icon_gift_effect" />
|
||||
@@ -135,18 +151,17 @@
|
||||
android:text="@{item.countText}"
|
||||
android:textColor="@{item.isPrivateChat? @color/text_secondary_878b9c : @color/white}"
|
||||
android:textSize="@dimen/sp_9"
|
||||
android:visibility="@{item.isKnap ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
android:visibility="@{item.isKnap ? View.VISIBLE : View.GONE}"
|
||||
tools:text="x100"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_vip_locked"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_marginEnd="2dp"
|
||||
android:layout_marginBottom="2dp"
|
||||
android:src="@drawable/ic_vip_locked"
|
||||
android:layout_width="9dp"
|
||||
android:layout_height="9dp"
|
||||
android:layout_alignStart="@id/gift_image"
|
||||
android:layout_alignTop="@id/gift_image"
|
||||
android:src="@drawable/gift_dialog_ic_lock"
|
||||
android:visibility="@{item.isLocked ? View.VISIBLE : View.GONE}" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
@@ -1,58 +1,82 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="7dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginBottom="7dp"
|
||||
android:background="@drawable/shape_f3f5fa_corner_8dp"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="5dp">
|
||||
android:layout_marginHorizontal="2.5dp"
|
||||
android:layout_marginVertical="4dp"
|
||||
tools:layout_width="84dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_bg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:src="@drawable/gift_wall_bg_level_0"
|
||||
app:layout_constraintDimensionRatio="84:122"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/line_icon_top"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintGuide_percent="0.0655" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/gift_img"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginTop="10dp" />
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/line_icon_top"
|
||||
app:layout_constraintWidth_percent="0.654"
|
||||
tools:src="@drawable/default_cover" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/gift_num"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="1dp"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="false"
|
||||
android:paddingStart="8dp"
|
||||
android:paddingEnd="@dimen/dp_8"
|
||||
android:textColor="#6D6B89"
|
||||
android:textSize="12dp"
|
||||
android:textColor="#7F8494"
|
||||
android:textSize="10dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/gift_img"
|
||||
tools:text="x120" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/gift_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginTop="1dp"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_horizontal"
|
||||
android:lines="1"
|
||||
android:textColor="@color/text_normal_282828"
|
||||
android:paddingHorizontal="3dp"
|
||||
android:textColor="#696D7A"
|
||||
android:textSize="12dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/gift_num"
|
||||
tools:text="天使" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/gift_price"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="3dp"
|
||||
android:drawableStart="@drawable/ic_gift_diamond"
|
||||
android:drawableStart="@drawable/gift_wall_ic_diamond"
|
||||
android:drawablePadding="1dp"
|
||||
android:gravity="center_vertical"
|
||||
android:textColor="@color/text_secondary_878b9c"
|
||||
android:textSize="11dp"
|
||||
android:textColor="#7F8494"
|
||||
android:textSize="9dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/gift_name"
|
||||
tools:text="10" />
|
||||
|
||||
</LinearLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
@@ -629,5 +629,6 @@
|
||||
<color name="color_FFD46C">#FFD46C</color>
|
||||
<color name="color_695CEB">#695CEB</color>
|
||||
<color name="color_FFF265">#FFFFF265</color>
|
||||
|
||||
<color name="color_5CEFFF">#FF5CEFFF</color>
|
||||
<color name="color_7F8494">#7F8494</color>
|
||||
</resources>
|
||||
|
@@ -50,15 +50,15 @@
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_used"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_width="78dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="@dimen/dp_20"
|
||||
android:layout_marginEnd="@dimen/dp_13"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="false"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="11sp"
|
||||
android:textColor="#2B2D33"
|
||||
android:textSize="13sp"
|
||||
android:visibility="gone"
|
||||
tools:background="@drawable/bg_my_head_buy"
|
||||
tools:text="@string/label_can_use"
|
||||
@@ -74,8 +74,8 @@
|
||||
android:layout_toEndOf="@id/ll_nameplate_cover"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:textColor="@color/color_666666"
|
||||
android:textSize="12sp"
|
||||
android:textColor="#696D7A"
|
||||
android:textSize="11sp"
|
||||
tools:text="- 1567天 -" />
|
||||
|
||||
</RelativeLayout>
|
@@ -528,4 +528,10 @@ public class UriProvider {
|
||||
return WEB_URL.concat("/yinmeng/modules/rule/privilegeCardRule.html");
|
||||
}
|
||||
|
||||
/**
|
||||
* 礼物等级
|
||||
*/
|
||||
public static String getGiftLevelRuleUrl() {
|
||||
return WEB_URL.concat("/yinmeng/modules/rule/giftWallRule.html");
|
||||
}
|
||||
}
|
||||
|
@@ -1443,6 +1443,14 @@ public final class IMNetEaseManager {
|
||||
.setEvent(RoomEvent.ROOM_HOUR_RANK));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case CUSTOM_MSG_GIFT:
|
||||
if (customAttachment.getSecond() == CUSTOM_MSG_GIFT_UNLOCK) {
|
||||
addMessages(msg);
|
||||
} else if (customAttachment.getSecond() == CUSTOM_MSG_GIFT_DRESS) {
|
||||
addMessages(msg);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@@ -381,6 +381,14 @@ public class DemoCache {
|
||||
return SettingsPref.instance().getBoolean(KEY_NEW_GIFT_TYPE_TIP, true);
|
||||
}
|
||||
|
||||
public static void saveNewGiftTypeTip(int type,boolean value) {
|
||||
SettingsPref.instance().putBoolean(KEY_NEW_GIFT_TYPE_TIP + "_" + type, value);
|
||||
}
|
||||
|
||||
public static boolean readNewGiftTypeTip(int type) {
|
||||
return SettingsPref.instance().getBoolean(KEY_NEW_GIFT_TYPE_TIP + "_" + type, true);
|
||||
}
|
||||
|
||||
public static void saveNewGiftTypeTipIndicator(boolean value) {
|
||||
SettingsPref.instance().putBoolean(KEY_NEW_GIFT_TYPE_TIP_INDICATOR, value);
|
||||
}
|
||||
|
@@ -35,6 +35,8 @@ public class CarInfo extends BaseDecoration implements Serializable {
|
||||
//public static final String EFFECT = "effect";
|
||||
public static final String CAR_NAME = "carName";
|
||||
public int expireDays;
|
||||
private int expireHour;
|
||||
private int expireMinute;
|
||||
public int limitType;
|
||||
/**
|
||||
* 该状态状态
|
||||
@@ -105,6 +107,10 @@ public class CarInfo extends BaseDecoration implements Serializable {
|
||||
return valueMap;
|
||||
}
|
||||
|
||||
public String getExpireText() {
|
||||
return expireDays + "天" + expireHour + "小时" + expireMinute + "分钟";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRealPrice() {
|
||||
if (getRemainingDay() > 0 && getStatus() == CarInfo.STATUS_USER_CAN_USE) {
|
||||
|
@@ -4,6 +4,8 @@ public class ChatBubbleInfo {
|
||||
private String bubbleId;
|
||||
private int comeFrom;
|
||||
private int expireDays;
|
||||
private int expireHour;
|
||||
private int expireMinute;
|
||||
private String expireTime;
|
||||
private boolean hasExpired;
|
||||
private String name;
|
||||
@@ -11,6 +13,10 @@ public class ChatBubbleInfo {
|
||||
private boolean hasUsed;
|
||||
private int labelType;
|
||||
|
||||
public String getExpireText() {
|
||||
return expireDays + "天" + expireHour + "小时" + expireMinute + "分钟";
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public ChatBubbleInfo() {
|
||||
}
|
||||
|
@@ -41,6 +41,8 @@ public class HeadWearInfo extends BaseDecoration implements Serializable {
|
||||
private int seq;
|
||||
private int days;
|
||||
private int expireDays;
|
||||
private int expireHour;
|
||||
private int expireMinute;
|
||||
private int status;
|
||||
private int comeFrom;
|
||||
private boolean enable;
|
||||
@@ -60,6 +62,10 @@ public class HeadWearInfo extends BaseDecoration implements Serializable {
|
||||
return map;
|
||||
}
|
||||
|
||||
public String getExpireText() {
|
||||
return expireDays + "天" + expireHour + "小时" + expireMinute + "分钟";
|
||||
}
|
||||
|
||||
/**
|
||||
* 实际购买价格
|
||||
*/
|
||||
@@ -96,6 +102,22 @@ public class HeadWearInfo extends BaseDecoration implements Serializable {
|
||||
return status == HeadWearInfo.STATUS_IN_USED;
|
||||
}
|
||||
|
||||
public int getExpireHour() {
|
||||
return expireHour;
|
||||
}
|
||||
|
||||
public void setExpireHour(int expireHour) {
|
||||
this.expireHour = expireHour;
|
||||
}
|
||||
|
||||
public int getExpireMinute() {
|
||||
return expireMinute;
|
||||
}
|
||||
|
||||
public void setExpireMinute(int expireMinute) {
|
||||
this.expireMinute = expireMinute;
|
||||
}
|
||||
|
||||
//<editor-fold defaultstate="collapsed" desc="delombok">
|
||||
/**
|
||||
* headwearId : 1
|
||||
|
@@ -4,6 +4,8 @@ public class UserCardWearInfo {
|
||||
private String cardId;
|
||||
private int comeFrom;
|
||||
private int expireDays;
|
||||
private int expireHour;
|
||||
private int expireMinute;
|
||||
private String expireTime;
|
||||
private boolean hasExpired;
|
||||
private String name;
|
||||
@@ -11,6 +13,9 @@ public class UserCardWearInfo {
|
||||
private boolean used;
|
||||
private int labelType;
|
||||
|
||||
public String getExpireText() {
|
||||
return expireDays + "天" + expireHour + "小时" + expireMinute + "分钟";
|
||||
}
|
||||
@SuppressWarnings("all")
|
||||
public UserCardWearInfo() {
|
||||
}
|
||||
|
@@ -57,8 +57,29 @@ public class NamePlateInfo {
|
||||
private String nameplateImage;
|
||||
private boolean isExpired;
|
||||
private int expireDays;
|
||||
private int expireHour;
|
||||
private int expireMinute;
|
||||
private boolean isUsing;
|
||||
private String word;
|
||||
public String getExpireText() {
|
||||
return expireDays + "天" + expireHour + "小时" + expireMinute + "分钟";
|
||||
}
|
||||
|
||||
public int getExpireHour() {
|
||||
return expireHour;
|
||||
}
|
||||
|
||||
public void setExpireHour(int expireHour) {
|
||||
this.expireHour = expireHour;
|
||||
}
|
||||
|
||||
public int getExpireMinute() {
|
||||
return expireMinute;
|
||||
}
|
||||
|
||||
public void setExpireMinute(int expireMinute) {
|
||||
this.expireMinute = expireMinute;
|
||||
}
|
||||
|
||||
public String getWord() {
|
||||
return word;
|
||||
|
@@ -236,6 +236,10 @@ public class GiftModel extends BaseModel implements IGiftModel {
|
||||
case GiftType.GIFT_TYPE_PENALTY:
|
||||
giftInfos = allGiftListInfo.getPenaltyGift();
|
||||
break;
|
||||
case GiftType.GIFT_TYPE_INTEREST:
|
||||
case GiftType.GIFT_TYPE_UNLOCK:
|
||||
giftInfos = allGiftListInfo.getInterestGift();
|
||||
break;
|
||||
}
|
||||
return giftInfos == null ? new ArrayList<>() : giftInfos;
|
||||
}
|
||||
@@ -616,6 +620,9 @@ public class GiftModel extends BaseModel implements IGiftModel {
|
||||
if (giftInfo == null) {
|
||||
giftInfo = findGiftInfoById(allGiftListInfo.getPenaltyGift(), giftId);
|
||||
}
|
||||
if (giftInfo == null) {
|
||||
giftInfo = findGiftInfoById(allGiftListInfo.getInterestGift(), giftId);
|
||||
}
|
||||
}
|
||||
return giftInfo;
|
||||
}
|
||||
@@ -686,7 +693,7 @@ public class GiftModel extends BaseModel implements IGiftModel {
|
||||
*
|
||||
* @return -
|
||||
*/
|
||||
@GET("/gift/listV4")
|
||||
@GET("/gift/listV5")
|
||||
Single<ServiceResult<GiftListInfo>> requestGiftInfos(@Query("roomUid") String roomUid);
|
||||
|
||||
/**
|
||||
|
@@ -2,6 +2,7 @@ package com.nnbc123.core.gift.bean;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by
|
||||
@@ -73,6 +74,84 @@ public class GiftInfo implements Serializable {
|
||||
private SimpleUserInfo firstLevelRankUser;
|
||||
private SimpleUserInfo firstCharmRankUser;
|
||||
private boolean drawGift;
|
||||
private boolean unlocked;
|
||||
private GiftInfo baseGift;
|
||||
private List<UnLockGiftInfo> unlockGiftList;
|
||||
private String giftTag;
|
||||
private String bannerUrl;
|
||||
private String bannerSkipUrl;
|
||||
|
||||
public String getBannerUrl() {
|
||||
return bannerUrl;
|
||||
}
|
||||
|
||||
public void setBannerUrl(String bannerUrl) {
|
||||
this.bannerUrl = bannerUrl;
|
||||
}
|
||||
|
||||
public GiftInfo getBaseGift() {
|
||||
return baseGift;
|
||||
}
|
||||
|
||||
public void setBaseGift(GiftInfo baseGift) {
|
||||
this.baseGift = baseGift;
|
||||
}
|
||||
|
||||
public List<UnLockGiftInfo> getUnlockGiftList() {
|
||||
return unlockGiftList;
|
||||
}
|
||||
|
||||
public void setUnlockGiftList(List<UnLockGiftInfo> unlockGiftList) {
|
||||
this.unlockGiftList = unlockGiftList;
|
||||
}
|
||||
|
||||
public String getGiftTag() {
|
||||
return giftTag;
|
||||
}
|
||||
|
||||
public void setGiftTag(String giftTag) {
|
||||
this.giftTag = giftTag;
|
||||
}
|
||||
|
||||
public boolean isUnlocked() {
|
||||
return unlocked;
|
||||
}
|
||||
|
||||
public void setUnlocked(boolean unlocked) {
|
||||
this.unlocked = unlocked;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新解锁进度
|
||||
*/
|
||||
public void updateUnlockProgress(int addNumber) {
|
||||
List<UnLockGiftInfo> childGiftList = getUnlockGiftList();
|
||||
if (childGiftList == null) {
|
||||
return;
|
||||
}
|
||||
for (int j = 0; j < childGiftList.size(); j++) {
|
||||
UnLockGiftInfo childItem = childGiftList.get(j);
|
||||
if (childItem == null) {
|
||||
continue;
|
||||
}
|
||||
childItem.addProgress(addNumber);
|
||||
GiftInfo childGiftInfo = childItem.getTargetGift();
|
||||
if (childGiftInfo != null && childGiftInfo.getGiftId() == getGiftId()) {
|
||||
Boolean unlocked = childItem.getUnlocked();
|
||||
if (unlocked != null) {
|
||||
this.setUnlocked(unlocked);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getBannerSkipUrl() {
|
||||
return bannerSkipUrl;
|
||||
}
|
||||
|
||||
public void setBannerSkipUrl(String bannerSkipUrl) {
|
||||
this.bannerSkipUrl = bannerSkipUrl;
|
||||
}
|
||||
|
||||
//<editor-fold defaultstate="collapsed" desc="delombok">
|
||||
@SuppressWarnings("all")
|
||||
@@ -463,6 +542,7 @@ public class GiftInfo implements Serializable {
|
||||
if (this.isRoomExclude() != other.isRoomExclude()) return false;
|
||||
if (this.getOtherViewType() != other.getOtherViewType()) return false;
|
||||
if (this.isDrawGift() != other.isDrawGift()) return false;
|
||||
if (this.isUnlocked() != other.isUnlocked()) return false;
|
||||
final Object this$giftName = this.getGiftName();
|
||||
final Object other$giftName = other.getGiftName();
|
||||
if (this$giftName == null ? other$giftName != null : !this$giftName.equals(other$giftName)) return false;
|
||||
@@ -499,6 +579,21 @@ public class GiftInfo implements Serializable {
|
||||
final Object this$firstCharmRankUser = this.getFirstCharmRankUser();
|
||||
final Object other$firstCharmRankUser = other.getFirstCharmRankUser();
|
||||
if (this$firstCharmRankUser == null ? other$firstCharmRankUser != null : !this$firstCharmRankUser.equals(other$firstCharmRankUser)) return false;
|
||||
final Object this$baseGift = this.getBaseGift();
|
||||
final Object other$baseGift = other.getBaseGift();
|
||||
if (this$baseGift == null ? other$baseGift != null : !this$baseGift.equals(other$baseGift)) return false;
|
||||
final Object this$unlockGiftList = this.getUnlockGiftList();
|
||||
final Object other$unlockGiftList = other.getUnlockGiftList();
|
||||
if (this$unlockGiftList == null ? other$unlockGiftList != null : !this$unlockGiftList.equals(other$unlockGiftList)) return false;
|
||||
final Object this$giftTag = this.getGiftTag();
|
||||
final Object other$giftTag = other.getGiftTag();
|
||||
if (this$giftTag == null ? other$giftTag != null : !this$giftTag.equals(other$giftTag)) return false;
|
||||
final Object this$bannerUrl = this.getBannerUrl();
|
||||
final Object other$bannerUrl = other.getBannerUrl();
|
||||
if (this$bannerUrl == null ? other$bannerUrl != null : !this$bannerUrl.equals(other$bannerUrl)) return false;
|
||||
final Object this$bannerSkipUrl = this.getBannerSkipUrl();
|
||||
final Object other$bannerSkipUrl = other.getBannerSkipUrl();
|
||||
if (this$bannerSkipUrl == null ? other$bannerSkipUrl != null : !this$bannerSkipUrl.equals(other$bannerSkipUrl)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -531,6 +626,7 @@ public class GiftInfo implements Serializable {
|
||||
result = result * PRIME + (this.isRoomExclude() ? 79 : 97);
|
||||
result = result * PRIME + this.getOtherViewType();
|
||||
result = result * PRIME + (this.isDrawGift() ? 79 : 97);
|
||||
result = result * PRIME + (this.isUnlocked() ? 79 : 97);
|
||||
final Object $giftName = this.getGiftName();
|
||||
result = result * PRIME + ($giftName == null ? 43 : $giftName.hashCode());
|
||||
final Object $giftUrl = this.getGiftUrl();
|
||||
@@ -555,6 +651,16 @@ public class GiftInfo implements Serializable {
|
||||
result = result * PRIME + ($firstLevelRankUser == null ? 43 : $firstLevelRankUser.hashCode());
|
||||
final Object $firstCharmRankUser = this.getFirstCharmRankUser();
|
||||
result = result * PRIME + ($firstCharmRankUser == null ? 43 : $firstCharmRankUser.hashCode());
|
||||
final Object $baseGift = this.getBaseGift();
|
||||
result = result * PRIME + ($baseGift == null ? 43 : $baseGift.hashCode());
|
||||
final Object $unlockGiftList = this.getUnlockGiftList();
|
||||
result = result * PRIME + ($unlockGiftList == null ? 43 : $unlockGiftList.hashCode());
|
||||
final Object $giftTag = this.getGiftTag();
|
||||
result = result * PRIME + ($giftTag == null ? 43 : $giftTag.hashCode());
|
||||
final Object $bannerUrl = this.getBannerUrl();
|
||||
result = result * PRIME + ($bannerUrl == null ? 43 : $bannerUrl.hashCode());
|
||||
final Object $bannerSkipUrl = this.getBannerSkipUrl();
|
||||
result = result * PRIME + ($bannerSkipUrl == null ? 43 : $bannerSkipUrl.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@@ -16,6 +16,7 @@ public class GiftListInfo implements Serializable {
|
||||
private List<GiftInfo> drawGift;
|
||||
private List<GiftInfo> singlePopularGift;
|
||||
private List<GiftInfo> penaltyGift;
|
||||
private List<GiftInfo> interestGift;
|
||||
private String giftVersion;
|
||||
|
||||
//<editor-fold defaultstate="collapsed" desc="delombok">
|
||||
@@ -113,6 +114,14 @@ public class GiftListInfo implements Serializable {
|
||||
this.giftVersion = giftVersion;
|
||||
}
|
||||
|
||||
public List<GiftInfo> getInterestGift() {
|
||||
return interestGift;
|
||||
}
|
||||
|
||||
public void setInterestGift(List<GiftInfo> interestGift) {
|
||||
this.interestGift = interestGift;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public boolean equals(final Object o) {
|
||||
@@ -144,6 +153,9 @@ public class GiftListInfo implements Serializable {
|
||||
final Object this$penaltyGift = this.getPenaltyGift();
|
||||
final Object other$penaltyGift = other.getPenaltyGift();
|
||||
if (this$penaltyGift == null ? other$penaltyGift != null : !this$penaltyGift.equals(other$penaltyGift)) return false;
|
||||
final Object this$interestGift = this.getInterestGift();
|
||||
final Object other$interestGift = other.getInterestGift();
|
||||
if (this$interestGift == null ? other$interestGift != null : !this$interestGift.equals(other$interestGift)) return false;
|
||||
final Object this$giftVersion = this.getGiftVersion();
|
||||
final Object other$giftVersion = other.getGiftVersion();
|
||||
if (this$giftVersion == null ? other$giftVersion != null : !this$giftVersion.equals(other$giftVersion)) return false;
|
||||
@@ -176,6 +188,8 @@ public class GiftListInfo implements Serializable {
|
||||
result = result * PRIME + ($singlePopularGift == null ? 43 : $singlePopularGift.hashCode());
|
||||
final Object $penaltyGift = this.getPenaltyGift();
|
||||
result = result * PRIME + ($penaltyGift == null ? 43 : $penaltyGift.hashCode());
|
||||
final Object $interestGift = this.getInterestGift();
|
||||
result = result * PRIME + ($interestGift == null ? 43 : $interestGift.hashCode());
|
||||
final Object $giftVersion = this.getGiftVersion();
|
||||
result = result * PRIME + ($giftVersion == null ? 43 : $giftVersion.hashCode());
|
||||
return result;
|
||||
|
@@ -13,10 +13,19 @@ public class GiftTab {
|
||||
this.selectedTitle = selectedTitle;
|
||||
}
|
||||
|
||||
public GiftTab(int type, String unSelectedTitle, String selectedTitle, boolean needNewTips) {
|
||||
this.type = type;
|
||||
this.unSelectedTitle = unSelectedTitle;
|
||||
this.selectedTitle = selectedTitle;
|
||||
this.needNewTips = needNewTips;
|
||||
}
|
||||
|
||||
private int type;
|
||||
private String selectedTitle;
|
||||
private String unSelectedTitle;
|
||||
private View itemView;
|
||||
// 是否需要提示:“new”
|
||||
private boolean needNewTips;
|
||||
|
||||
//<editor-fold defaultstate="collapsed" desc="delombok">
|
||||
@SuppressWarnings("all")
|
||||
@@ -59,6 +68,14 @@ public class GiftTab {
|
||||
this.itemView = itemView;
|
||||
}
|
||||
|
||||
public boolean isNeedNewTips() {
|
||||
return needNewTips;
|
||||
}
|
||||
|
||||
public void setNeedNewTips(boolean needNewTips) {
|
||||
this.needNewTips = needNewTips;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public boolean equals(final Object o) {
|
||||
|
@@ -42,4 +42,18 @@ public class GiftType {
|
||||
public static final int GIFT_TYPE_SINGLE_ROOM = 11;
|
||||
|
||||
public static final int GIFT_TYPE_PENALTY = 12;
|
||||
|
||||
/**
|
||||
* 礼物类型 -- 解锁礼物
|
||||
*/
|
||||
public static final int GIFT_TYPE_UNLOCK = 16;
|
||||
|
||||
/**
|
||||
* 礼物类型 -- 装扮礼物
|
||||
*/
|
||||
public static final int GIFT_TYPE_DRESS_UP = 17;
|
||||
|
||||
// 趣味礼物(本地自定义维护的)
|
||||
@Deprecated()
|
||||
public static final int GIFT_TYPE_INTEREST = 1000;
|
||||
}
|
||||
|
@@ -0,0 +1,15 @@
|
||||
package com.nnbc123.core.gift.bean
|
||||
|
||||
/**
|
||||
* Created by Max on 2024/1/26 17:09
|
||||
* Desc:
|
||||
**/
|
||||
data class UnLockBaseGiftInfo(val giftInfo: GiftInfo) : UnlockItem {
|
||||
override fun getGiftData(): GiftInfo? {
|
||||
return giftInfo
|
||||
}
|
||||
|
||||
override fun getItemType(): Int {
|
||||
return UnlockItem.ITEM_TYPE_BASE
|
||||
}
|
||||
}
|
@@ -0,0 +1,31 @@
|
||||
package com.nnbc123.core.gift.bean
|
||||
|
||||
|
||||
/**
|
||||
* Created by Max on 2024/1/26 15:36
|
||||
* Desc:可解锁礼物
|
||||
**/
|
||||
data class UnLockGiftInfo(
|
||||
val targetGift: GiftInfo? = null,
|
||||
val condition: Int? = null,
|
||||
var process: Int? = null,
|
||||
var unlocked: Boolean? = null
|
||||
) : UnlockItem {
|
||||
override fun getGiftData(): GiftInfo? {
|
||||
return targetGift
|
||||
}
|
||||
|
||||
override fun getItemType(): Int {
|
||||
return UnlockItem.ITEM_TYPE_CHILD
|
||||
}
|
||||
|
||||
// 加进度(发送基础礼物成功后:数量累加)
|
||||
fun addProgress(count: Int) {
|
||||
val p = process ?: 0
|
||||
process = p + count
|
||||
if ((process ?: 0) >= (condition ?: 0)) {
|
||||
unlocked = true
|
||||
}
|
||||
}
|
||||
|
||||
}
|
16
core/src/main/java/com/nnbc123/core/gift/bean/UnlockItem.kt
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.nnbc123.core.gift.bean
|
||||
|
||||
import com.chad.library.adapter.base.entity.MultiItemEntity
|
||||
|
||||
/**
|
||||
* Created by Max on 2024/1/26 17:06
|
||||
* Desc:
|
||||
**/
|
||||
interface UnlockItem : MultiItemEntity {
|
||||
companion object {
|
||||
const val ITEM_TYPE_BASE = 0
|
||||
const val ITEM_TYPE_CHILD = 1
|
||||
}
|
||||
|
||||
fun getGiftData(): GiftInfo?
|
||||
}
|
@@ -19,6 +19,7 @@ import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_EXPER_
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_EXPER_LEVEL_UP_NOTICE;
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_GAME_INVITE;
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_GAME_INVITE_SECOND;
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_GIFT;
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_GROUP_CHAT_MEMBER_COUNT;
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_GROUP_CHAT_ROOM_NOTIFY;
|
||||
import static com.nnbc123.core.im.custom.bean.CustomAttachment.CUSTOM_MSG_GROUP_CHAT_TOPIC;
|
||||
@@ -622,6 +623,13 @@ public class CustomAttachParser implements MsgAttachmentParser {
|
||||
attachment = new GameInviteAttachment(first, second);
|
||||
}
|
||||
break;
|
||||
case CUSTOM_MSG_GIFT:
|
||||
if (second == CustomAttachment.CUSTOM_MSG_GIFT_UNLOCK) {
|
||||
attachment = new UnLockGiftAttachment(first, second);
|
||||
} else if (second == CustomAttachment.CUSTOM_MSG_GIFT_DRESS) {
|
||||
attachment = new DressUpGiftAttachment(first, second);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LogUtils.e("未定义的first,请现在CustomAttachParser中解析first=" + first + " second=" + second);
|
||||
break;
|
||||
|
@@ -437,6 +437,10 @@ public class CustomAttachment implements MsgAttachment {
|
||||
public static final int CUSTOM_MSG_HOUR_RANK = 97; // 小时榜
|
||||
public static final int CUSTOM_MSG_HOUR_RANK_UPDATE = 971; // 小时榜更新
|
||||
|
||||
public static final int CUSTOM_MSG_GIFT = 98; // 礼物相关
|
||||
public static final int CUSTOM_MSG_GIFT_UNLOCK = 981; // 解锁了礼物
|
||||
public static final int CUSTOM_MSG_GIFT_DRESS = 982; // 获得装扮礼物
|
||||
|
||||
public static final int CUSTOM_MSG_PRIVILEGE = 102; //特权卡
|
||||
public static final int CUSTOM_MSG_PRIVILEGE_SECOND = 1020;//特权卡(图片、gif)
|
||||
public static final int CUSTOM_MSG_PRIVILEGE_SECOND_VIDEO = 1021;//特权卡(视频类型)
|
||||
|
@@ -0,0 +1,49 @@
|
||||
package com.nnbc123.core.im.custom.bean
|
||||
|
||||
import com.alibaba.fastjson.JSONObject
|
||||
|
||||
/**
|
||||
* Created by Max on 2024/1/29 15:54
|
||||
* Desc:
|
||||
**/
|
||||
class DressUpGiftAttachment : CustomAttachment {
|
||||
|
||||
var uid: Long? = null
|
||||
var nick: String? = null
|
||||
var dressId: Long? = null
|
||||
var dressName: String? = null
|
||||
var dressUrl: String? = null
|
||||
|
||||
constructor() : super()
|
||||
constructor(first: Int, second: Int) : super(first, second)
|
||||
|
||||
fun getDressNameNotNull(): String {
|
||||
return dressName ?: ""
|
||||
}
|
||||
|
||||
fun getDressUrlNotNull(): String {
|
||||
return dressName ?: ""
|
||||
}
|
||||
|
||||
override fun parseData(data: JSONObject?) {
|
||||
super.parseData(data)
|
||||
if (data == null) {
|
||||
return
|
||||
}
|
||||
if (data.containsKey("uid")) {
|
||||
this.uid = data.getLong("uid")
|
||||
}
|
||||
if (data.containsKey("nick")) {
|
||||
this.nick = data.getString("nick")
|
||||
}
|
||||
if (data.containsKey("dressId")) {
|
||||
this.dressId = data.getLong("dressId")
|
||||
}
|
||||
if (data.containsKey("dressName")) {
|
||||
this.dressName = data.getString("dressName")
|
||||
}
|
||||
if (data.containsKey("dressUrl")) {
|
||||
this.dressUrl = data.getString("dressUrl")
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,50 @@
|
||||
package com.nnbc123.core.im.custom.bean
|
||||
|
||||
import com.alibaba.fastjson.JSONObject
|
||||
|
||||
/**
|
||||
* Created by Max on 2024/1/29 15:54
|
||||
* Desc:
|
||||
**/
|
||||
class UnLockGiftAttachment : CustomAttachment{
|
||||
|
||||
var uid: Long? = null
|
||||
var nick: String? = null
|
||||
var giftId: Long? = null
|
||||
var giftName: String? = null
|
||||
var giftUrl: String? = null
|
||||
|
||||
constructor() : super()
|
||||
constructor(first: Int, second: Int) : super(first, second)
|
||||
|
||||
|
||||
fun getGiftNameNotNull(): String {
|
||||
return giftName ?: ""
|
||||
}
|
||||
|
||||
fun getGiftUrlNotNull(): String {
|
||||
return giftUrl ?: ""
|
||||
}
|
||||
|
||||
override fun parseData(data: JSONObject?) {
|
||||
super.parseData(data)
|
||||
if (data == null) {
|
||||
return
|
||||
}
|
||||
if (data.containsKey("uid")) {
|
||||
this.uid = data.getLong("uid")
|
||||
}
|
||||
if (data.containsKey("nick")) {
|
||||
this.nick = data.getString("nick")
|
||||
}
|
||||
if (data.containsKey("giftId")) {
|
||||
this.giftId = data.getLong("giftId")
|
||||
}
|
||||
if (data.containsKey("giftName")) {
|
||||
this.giftName = data.getString("giftName")
|
||||
}
|
||||
if (data.containsKey("giftUrl")) {
|
||||
this.giftUrl = data.getString("giftUrl")
|
||||
}
|
||||
}
|
||||
}
|
@@ -13,6 +13,15 @@ public class GiftWallInfo implements Serializable {
|
||||
private String giftName;
|
||||
private String picUrl;
|
||||
private int giftPrice;
|
||||
private int giftLevel;
|
||||
|
||||
public int getGiftLevel() {
|
||||
return giftLevel;
|
||||
}
|
||||
|
||||
public void setGiftLevel(int giftLevel) {
|
||||
this.giftLevel = giftLevel;
|
||||
}
|
||||
|
||||
public long getUid() {
|
||||
return uid;
|
||||
|
@@ -2,7 +2,9 @@ package com.nnbc123.library.utils;
|
||||
|
||||
import android.app.Application;
|
||||
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
|
||||
public class ResUtil {
|
||||
@@ -15,4 +17,9 @@ public class ResUtil {
|
||||
public static String getString(@StringRes int resId) {
|
||||
return context.getString(resId);
|
||||
}
|
||||
|
||||
public static int getColor(@ColorRes int resId) {
|
||||
return ContextCompat.getColor(context, resId);
|
||||
}
|
||||
|
||||
}
|
||||
|