diff --git a/common/src/main/java/com/yunbao/common/bean/LiveGiftBean.java b/common/src/main/java/com/yunbao/common/bean/LiveGiftBean.java index c0777d57e..33409755b 100644 --- a/common/src/main/java/com/yunbao/common/bean/LiveGiftBean.java +++ b/common/src/main/java/com/yunbao/common/bean/LiveGiftBean.java @@ -37,6 +37,16 @@ public class LiveGiftBean { @JSONField(name = "blind_box_type") private int blind_box_type = 0; + private int fansGiftLevel=0;//粉丝团礼物等级要求 + + public int getFansGiftLevel() { + return fansGiftLevel; + } + + public void setFansGiftLevel(int fansGiftLevel) { + this.fansGiftLevel = fansGiftLevel; + } + public int getBlind_box_type() { return blind_box_type; } diff --git a/common/src/main/java/com/yunbao/common/bean/UserBean.java b/common/src/main/java/com/yunbao/common/bean/UserBean.java index 29d3101d0..ca4c91489 100644 --- a/common/src/main/java/com/yunbao/common/bean/UserBean.java +++ b/common/src/main/java/com/yunbao/common/bean/UserBean.java @@ -70,6 +70,8 @@ public class UserBean implements Parcelable { private int user_info_complete; //粉丝团等级 private int fansLevel; + //粉丝团进场皮肤 + private String fansEnterRoomUrl; public int getUserInfoComplete() { return user_info_complete; @@ -88,6 +90,14 @@ public class UserBean implements Parcelable { this.fansLevel = fansLevel; } + public String getFansEnterRoomUrl() { + return fansEnterRoomUrl; + } + + public void setFansEnterRoomUrl(String fansEnterRoomUrl) { + this.fansEnterRoomUrl = fansEnterRoomUrl; + } + public boolean isRandomPk() { return randomPk; } diff --git a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java index 46d2c5d6f..e94e1cb0e 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java @@ -947,7 +947,7 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL onCoinChanged(coin); } String[] data = new String[]{obj.getString("barragetoken")}; - SocketRyChatUtil.sendDanmuMessage(mLiveUid, contents,22); + SocketRyChatUtil.sendDanmuMessage(mLiveUid, contents,obj.getIntValue("level_fans")); } else { ToastUtil.show(msg); } diff --git a/live/src/main/java/com/yunbao/live/interfaces/IDanmuActionListener.java b/live/src/main/java/com/yunbao/live/interfaces/IDanmuActionListener.java new file mode 100644 index 000000000..a9c314d3a --- /dev/null +++ b/live/src/main/java/com/yunbao/live/interfaces/IDanmuActionListener.java @@ -0,0 +1,9 @@ +package com.yunbao.live.interfaces; + +import com.yunbao.common.views.AbsViewHolder; + +public interface IDanmuActionListener { + void onCanNext(int lineNum); + + void onAnimEnd(AbsViewHolder vh); +} diff --git a/live/src/main/java/com/yunbao/live/presenter/LiveDanmuPresenter.java b/live/src/main/java/com/yunbao/live/presenter/LiveDanmuPresenter.java index 6ae366da7..8f16c3d30 100644 --- a/live/src/main/java/com/yunbao/live/presenter/LiveDanmuPresenter.java +++ b/live/src/main/java/com/yunbao/live/presenter/LiveDanmuPresenter.java @@ -4,7 +4,9 @@ import android.content.Context; import android.util.Log; import android.view.ViewGroup; +import com.yunbao.common.views.AbsViewHolder; import com.yunbao.live.bean.LiveDanMuBean; +import com.yunbao.live.interfaces.IDanmuActionListener; import com.yunbao.live.views.DanmuViewHolder; import com.yunbao.live.views.FansDanmuViewHolder; @@ -17,7 +19,7 @@ import java.util.concurrent.ConcurrentLinkedQueue; * 弹幕 */ -public class LiveDanmuPresenter implements DanmuViewHolder.ActionListener { +public class LiveDanmuPresenter implements IDanmuActionListener { private Context mContext; private ViewGroup mDanmuContainer; @@ -59,7 +61,7 @@ public class LiveDanmuPresenter implements DanmuViewHolder.ActionListener { } } if (danmuHolder == null) { - if (bean.getContent().startsWith("#")) { + if (bean.getFensLevel() >= 16) { danmuHolder = new FansDanmuViewHolder(mContext, mDanmuContainer); } else { danmuHolder = new DanmuViewHolder(mContext, mDanmuContainer); @@ -107,7 +109,7 @@ public class LiveDanmuPresenter implements DanmuViewHolder.ActionListener { } @Override - public void onAnimEnd(DanmuViewHolder vh) { + public void onAnimEnd(AbsViewHolder vh) { if (mQueue.size() == 0) { if (vh != null) { vh.release(); diff --git a/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java b/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java index ec79c1033..58d3bf568 100644 --- a/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java +++ b/live/src/main/java/com/yunbao/live/socket/SocketRyClient.java @@ -913,6 +913,8 @@ public class SocketRyClient { chatBean.setMedalNmae(obj.getString("medal_name")); chatBean.setUserNiceName(obj.getString("user_nicename"));//名字 FansMedalBean fansMedalBean = CommonAppConfig.getInstance().getAnchorFansMedal(obj.getIntValue("medal_level")); + u.setFansLevel(obj.getIntValue("medal_level")); + u.setFansEnterRoomUrl(obj.getString("medal_backgroup_thumb")); if (fansMedalBean != null) chatBean.setMedalLevelImageUrl(fansMedalBean.getThumb()); mListener.onEnterRoom(new LiveEnterRoomBean(u, chatBean)); diff --git a/live/src/main/java/com/yunbao/live/views/DanmuViewHolder.java b/live/src/main/java/com/yunbao/live/views/DanmuViewHolder.java index b76b16a71..c4606d746 100644 --- a/live/src/main/java/com/yunbao/live/views/DanmuViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/DanmuViewHolder.java @@ -18,6 +18,7 @@ import com.yunbao.common.utils.ScreenDimenUtil; import com.yunbao.common.views.AbsViewHolder; import com.yunbao.live.R; import com.yunbao.live.bean.LiveDanMuBean; +import com.yunbao.live.interfaces.IDanmuActionListener; /** * Created by cxf on 2017/8/25. @@ -40,7 +41,7 @@ public class DanmuViewHolder extends AbsViewHolder { private Animator.AnimatorListener mAnimatorListener; private boolean mCanNext;//是否可以有下一个 private boolean mIdle;//是否空闲 - private ActionListener mActionListener; + private IDanmuActionListener mActionListener; private int mLineNum; public DanmuViewHolder(Context context, ViewGroup parentView) { @@ -115,7 +116,7 @@ public class DanmuViewHolder extends AbsViewHolder { mIdle = idle; } - public void setActionListener(ActionListener actionListener) { + public void setActionListener(IDanmuActionListener actionListener) { mActionListener = actionListener; } @@ -127,9 +128,4 @@ public class DanmuViewHolder extends AbsViewHolder { mActionListener = null; } - public interface ActionListener { - void onCanNext(int lineNum); - - void onAnimEnd(DanmuViewHolder vh); - } } diff --git a/live/src/main/java/com/yunbao/live/views/FansDanmuViewHolder.java b/live/src/main/java/com/yunbao/live/views/FansDanmuViewHolder.java index 0a4615b6d..9b786b1c3 100644 --- a/live/src/main/java/com/yunbao/live/views/FansDanmuViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/FansDanmuViewHolder.java @@ -15,9 +15,9 @@ import com.yunbao.common.bean.LevelBean; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.ScreenDimenUtil; -import com.yunbao.common.views.AbsViewHolder; import com.yunbao.live.R; import com.yunbao.live.bean.LiveDanMuBean; +import com.yunbao.live.interfaces.IDanmuActionListener; /** * Created by cxf on 2017/8/25. @@ -40,7 +40,7 @@ public class FansDanmuViewHolder extends DanmuViewHolder { private Animator.AnimatorListener mAnimatorListener; private boolean mCanNext;//是否可以有下一个 private boolean mIdle;//是否空闲 - private ActionListener mActionListener; + private IDanmuActionListener mActionListener; private int mLineNum; public FansDanmuViewHolder(Context context, ViewGroup parentView) { @@ -116,7 +116,7 @@ public class FansDanmuViewHolder extends DanmuViewHolder { mIdle = idle; } - public void setActionListener(ActionListener actionListener) { + public void setActionListener(IDanmuActionListener actionListener) { mActionListener = actionListener; } @@ -128,10 +128,4 @@ public class FansDanmuViewHolder extends DanmuViewHolder { mActionListener = null; } - - public interface ActionListener { - void onCanNext(int lineNum); - - void onAnimEnd(FansDanmuViewHolder vh); - } } diff --git a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java index 704d65622..fecf4c9e4 100644 --- a/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java +++ b/live/src/main/java/com/yunbao/live/views/LiveRoomViewHolder.java @@ -324,7 +324,8 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis private View btnEvent; private LinearLayout lt_trickery; private TextView tv_trickery_time; - private FrameLayout enterRoomLeave, enterRoomBg, fans_enter_room_leave; + private FrameLayout enterRoomLeave, enterRoomBg; + private ConstraintLayout fans_enter_room_leave; private RecyclerView fastMsgRecyclerView; private LiveRoomFastMessageRecyclerViewAdapter fastMessageRecyclerViewAdapter; @@ -907,7 +908,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis btn_event2 = (LinearLayout) findViewById(R.id.btn_event2); btn_event4 = (LinearLayout) findViewById(R.id.btn_event4); enterRoomLeave = (FrameLayout) findViewById(R.id.enter_room_leave); - fans_enter_room_leave = (FrameLayout) findViewById(R.id.fans_enter_room_leave); + fans_enter_room_leave = (ConstraintLayout) findViewById(R.id.fans_enter_room_leave); enterRoomBg = (FrameLayout) findViewById(R.id.enter_room_bg); enterRoomLeave2 = (LinearLayout) findViewById(R.id.enter_room_leave2); mBanner1 = (Banner) findViewById(R.id.banner1); @@ -4844,9 +4845,8 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis userName.setText(String.format(mContext.getString(R.string.come_hint), model.getUserNiceName())); ImgLoader.display(mContext, model.getAvatar(), imageAvatar); int level = model.getLevel(); - model.setFansLevel(11); - if (model.getFansLevel() > 10) { - showFansGroupEnterRoom(); + if (!StringUtil.isEmpty(model.getFansEnterRoomUrl())) { + showFansGroupEnterRoom(model); return; } if (level < 50) { @@ -4907,13 +4907,17 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis } - private void showFansGroupEnterRoom() { + private void showFansGroupEnterRoom(LiveUserGiftBean model) { + fans_enter_room_leave.post(() -> { TextView userName = fans_enter_room_leave.findViewById(R.id.user_name); - userName.setText(Html.fromHtml(String.format("@%s 粉絲團成員歡迎進房", "测试"))); - new LoadDian9TuUtil().loadDian9Tu(mContext, fans_enter_room_leave, - "https://downs.yaoulive.com/20230322/g5_.9.png" - , 1); + ImageView bg = fans_enter_room_leave.findViewById(R.id.bg); + + userName.setText(Html.fromHtml(String.format("@%s %s", + model.getUserNiceName(), + mContext.getString(R.string.live_fans_group_enter_room) + ))); + ImgLoader.display(mContext, model.getFansEnterRoomUrl(), bg); fans_enter_room_leave.setVisibility(View.VISIBLE); TranslateAnimation animationTranslate = new TranslateAnimation(DeviceUtils.getScreenWidth((Activity) mContext), 0, 0, 0); AnimationSet animationSet1 = new AnimationSet(true); @@ -4928,7 +4932,6 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis @Override public void onAnimationEnd(Animation animation) { - mLiveRoomHandler.postDelayed(() -> hideFansGroupEnter(), 3000); } @Override diff --git a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java index 1be8185f3..f0c1e6878 100644 --- a/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java +++ b/live/src/main/java/com/yunbao/live/views/PortraitLiveManager.java @@ -1096,6 +1096,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe public void run() { if (mLiveRoomViewHolder != null) { mLiveRoomViewHolder.hideHighGrade(); + mLiveRoomViewHolder.hideFansGroupEnter(); } enterRoomLeaveHandler.post(enterRoomLeaveRunnable); } @@ -1120,7 +1121,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe LiveChatBean liveChatBean = bean.getLiveChatBean(); LiveUserGiftBean liveUserGiftBean = bean.getUserBean(); int level = liveUserGiftBean.getLevel(); - if (level >= 30) { + if (level >= 30 || liveUserGiftBean.getFansLevel() >= 10) { //高等级飘屏 liveUserGiftBean.setUserNiceName(liveChatBean.getUserNiceName()); enterRoomModel.add(liveUserGiftBean); diff --git a/live/src/main/res/layout/view_fans_group_enter_room_leave.xml b/live/src/main/res/layout/view_fans_group_enter_room_leave.xml index 38421e1d8..f63163ed1 100644 --- a/live/src/main/res/layout/view_fans_group_enter_room_leave.xml +++ b/live/src/main/res/layout/view_fans_group_enter_room_leave.xml @@ -1,19 +1,37 @@ - + + + android:textSize="12sp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - \ No newline at end of file + \ No newline at end of file diff --git a/live/src/main/res/values-en/strings.xml b/live/src/main/res/values-en/strings.xml index acd4cc037..ffc02c448 100644 --- a/live/src/main/res/values-en/strings.xml +++ b/live/src/main/res/values-en/strings.xml @@ -113,4 +113,6 @@ The Perfect GiftPack Purchase a %s Diamond Specific Gift And Receive ALimited Resource Diamond Purchase + Welcome fan group to enter the room + Fan group level Of Lv%s Can send this gift \ No newline at end of file diff --git a/live/src/main/res/values/strings.xml b/live/src/main/res/values/strings.xml index b3fdc3dd2..ae12ea481 100644 --- a/live/src/main/res/values/strings.xml +++ b/live/src/main/res/values/strings.xml @@ -111,4 +111,6 @@ 的臻愛禮包 購買可獲得%s鑽特定禮物,同時可獲得限定資源 %s鑽購買 + 粉絲團成員歡迎進房 + 粉絲團等級達到 Lv%s 可送出該禮物