From 4f104f96859b2db4fcb4cb2a5bb40bbb8aada2b7 Mon Sep 17 00:00:00 2001 From: huangjian Date: Tue, 7 Jun 2022 16:26:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=89=8C=E7=85=A7=E6=88=BF?= =?UTF-8?q?=E5=B0=8F=E6=97=B6=E6=A6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fragment/HomePartyRoomFragment.java | 39 +++++++----- .../erban/avroom/widget/MessageView.java | 2 +- .../erban/avroom/widget/RoomEffectView.java | 22 +++++++ .../res/layout/layout_room_rank_notify.xml | 59 +++++++++++++++++++ .../res/layout/fragment_av_room_game.xml | 26 +++++++- .../res/layout/layout_music_player_view.xml | 3 +- .../xchat_android_core/UriProvider.java | 8 +++ .../manager/IMNetEaseManager.java | 5 ++ .../im/custom/bean/CustomAttachParser.java | 3 + .../im/custom/bean/CustomAttachment.java | 5 ++ .../im/custom/bean/RoomRankAttachment.java | 31 ++++++++++ .../im/custom/bean/RoomRankMsgBean.java | 11 ++++ .../xchat_android_core/manager/RoomEvent.java | 2 + 13 files changed, 198 insertions(+), 18 deletions(-) create mode 100644 app/src/main/res/layout/layout_room_rank_notify.xml create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/RoomRankAttachment.java create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/RoomRankMsgBean.java diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java index 1526bb051..2cca7f31b 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyRoomFragment.java @@ -28,6 +28,7 @@ import com.yizhuan.erban.avroom.firstcharge.FirstChargeDialog; import com.yizhuan.erban.avroom.firstcharge.FirstChargePrizeDialog; import com.yizhuan.erban.avroom.giftvalue.GiftValueDialogUiHelper; import com.yizhuan.erban.avroom.ktv.KtvSongListActivity; +import com.yizhuan.erban.ui.webview.DialogWebViewActivity; import com.yizhuan.xchat_android_core.helper.AtProxy; import com.yizhuan.erban.avroom.presenter.HomePartyPresenter; import com.yizhuan.erban.avroom.view.IHomePartyView; @@ -266,8 +267,8 @@ public class HomePartyRoomFragment extends BaseRoomFragment() { @Override public void onSubscribe(Disposable d) { @@ -447,11 +448,9 @@ public class HomePartyRoomFragment extends BaseRoomFragment() { @Override public void onSubscribe(Disposable d) { @@ -771,6 +776,12 @@ public class HomePartyRoomFragment extends BaseRoomFragment { if (hide != null && !hide) { @@ -896,7 +907,7 @@ public class HomePartyRoomFragment extends BaseRoomFragment { if (isMicQueueDialogShowing()) { @@ -972,9 +983,9 @@ public class HomePartyRoomFragment extends BaseRoomFragment() { @Override public void onSubscribe(Disposable d) { @@ -1009,8 +1020,8 @@ public class HomePartyRoomFragment extends BaseRoomFragment() { @Override public void onSubscribe(Disposable d) { diff --git a/app/src/main/java/com/yizhuan/erban/avroom/widget/MessageView.java b/app/src/main/java/com/yizhuan/erban/avroom/widget/MessageView.java index 9c33d865c..4871f2983 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/widget/MessageView.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/widget/MessageView.java @@ -2407,7 +2407,7 @@ public class MessageView extends FrameLayout { if (fromType == AVRoomActivity.FROM_TYPE_RECOMMEND) { enterText = " 根据首页推荐进入了房间"; } - if (fromType == AVRoomActivity.FROM_TYPE_USER) { + if (fromType == AVRoomActivity.FROM_TYPE_USER || fromType == AVRoomActivity.FROM_TYPE_HELLO) { String finalFromUid = fromUid; text.append(" 跟随 ", new ForegroundColorSpan(whiteColor)) .append(fromNick, new ForegroundColorSpan(roomTipColor), diff --git a/app/src/main/java/com/yizhuan/erban/avroom/widget/RoomEffectView.java b/app/src/main/java/com/yizhuan/erban/avroom/widget/RoomEffectView.java index e9aa2e92e..788af43af 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/widget/RoomEffectView.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/widget/RoomEffectView.java @@ -50,6 +50,8 @@ import com.yizhuan.xchat_android_core.im.custom.bean.LevelUpNoticeAttachment; import com.yizhuan.xchat_android_core.im.custom.bean.RoomBoxPrizeAttachment; import com.yizhuan.xchat_android_core.im.custom.bean.RoomPKAttachment; import com.yizhuan.xchat_android_core.im.custom.bean.RoomPkBean; +import com.yizhuan.xchat_android_core.im.custom.bean.RoomRankAttachment; +import com.yizhuan.xchat_android_core.im.custom.bean.RoomRankMsgBean; import com.yizhuan.xchat_android_core.im.custom.bean.RoomReceivedLuckyGiftAttachment; import com.yizhuan.xchat_android_core.im.custom.bean.SingleRoomRankAttachment; import com.yizhuan.xchat_android_core.im.custom.bean.SingleRoomRankMsgBean; @@ -186,6 +188,9 @@ public class RoomEffectView extends FrameLayout { case RoomEvent.SINGLE_ROOM_RANK_TOP_NOTIFY: showSingleRoomRankNotify(roomEvent.getChatRoomMessage()); break; + case RoomEvent.ROOM_RANK_TOP_NOTIFY: + showRoomRankNotify(roomEvent.getChatRoomMessage()); + break; default: break; } @@ -914,6 +919,23 @@ public class RoomEffectView extends FrameLayout { binding.flSingleRoomRankNotify.postDelayed(() -> binding.flSingleRoomRankNotify.removeView(rootView), SHOW_TIME); } + private void showRoomRankNotify(ChatRoomMessage chatRoomMessage) { + if (binding.clNotify.getVisibility() == View.GONE) { + binding.clNotify.setVisibility(View.VISIBLE); + } + RoomRankMsgBean msgBean = ((RoomRankAttachment) chatRoomMessage.getAttachment()).getMsgBean(); + View rootView = LayoutInflater.from(mContext).inflate(R.layout.layout_room_rank_notify, null); + ((TextView) rootView.findViewById(R.id.tv_nick)).setText(StringExtensionKt.subAndReplaceDot(msgBean.getTitle(), 6)); + ((TextView) rootView.findViewById(R.id.tv_desc)).setText(msgBean.getDesc()); + ImageLoadUtils.loadImage(getContext(), msgBean.getAvatar(), rootView.findViewById(R.id.iv_avatar)); + rootView.setOnClickListener(v -> AVRoomActivity.start(getContext(), msgBean.getUid())); + binding.flSingleRoomRankNotify.addView(rootView); + animationLuckyGift = AnimationUtils.loadAnimation(mContext, R.anim.anim_box_notify); + rootView.startAnimation(animationLuckyGift); + binding.flSingleRoomRankNotify.postDelayed(() -> binding.flSingleRoomRankNotify.removeView(rootView), SHOW_TIME); + } + + @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); diff --git a/app/src/main/res/layout/layout_room_rank_notify.xml b/app/src/main/res/layout/layout_room_rank_notify.xml new file mode 100644 index 000000000..4c93aaa46 --- /dev/null +++ b/app/src/main/res/layout/layout_room_rank_notify.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/module_mini_world/res/layout/fragment_av_room_game.xml b/app/src/module_mini_world/res/layout/fragment_av_room_game.xml index 80ab47b97..772b8a595 100644 --- a/app/src/module_mini_world/res/layout/fragment_av_room_game.xml +++ b/app/src/module_mini_world/res/layout/fragment_av_room_game.xml @@ -24,13 +24,14 @@ + android:layout_height="wrap_content" + android:layout_marginTop="5dp" /> + + + @@ -16,6 +16,7 @@ android:id="@+id/music_flag" android:layout_width="22dp" android:layout_height="22dp" + android:layout_marginStart="1dp" android:layout_gravity="start|center_vertical" android:layout_marginEnd="2dp" android:src="@drawable/icon_music_flag" /> diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/UriProvider.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/UriProvider.java index 985962071..568c8f319 100644 --- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/UriProvider.java +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/UriProvider.java @@ -457,6 +457,14 @@ public class UriProvider { return JAVA_WEB_URL.concat("/yinyou/modules/room_rank/hourRank.html?roomUid=" + roomUid); } + /** + * 牌照房小时榜 + */ + public static String getRoomHourRankUrl(long roomUid) { + return JAVA_WEB_URL.concat("/yinyou/modules/room_rank/index_license.html?roomUid=" + roomUid); + } + + /** * 周星榜 */ diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java index 91d89a7ba..be79dfab9 100644 --- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/manager/IMNetEaseManager.java @@ -1315,6 +1315,11 @@ public final class IMNetEaseManager { noticeRoomEvent(msg, RoomEvent.SINGLE_ROOM_RANK_TOP_NOTIFY); } break; + case CUSTOM_MSG_ROOM_RANK: + if (second == CUSTOM_MSG_SUB_ROOM_RANK_TOP) { + noticeRoomEvent(msg, RoomEvent.ROOM_RANK_TOP_NOTIFY); + } + break; default: break; } diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachParser.java b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachParser.java index e67dcb85b..96eae1c3a 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachParser.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachParser.java @@ -580,6 +580,9 @@ public class CustomAttachParser implements MsgAttachmentParser { case CustomAttachment.CUSTOM_MSG_SINGLE_ROOM_RANK: attachment = new SingleRoomRankAttachment(second); break; + case CustomAttachment.CUSTOM_MSG_ROOM_RANK: + attachment = new RoomRankAttachment(second); + break; default: LogUtils.e("未定义的first,请现在CustomAttachParser中解析first=" + first + " second=" + second); break; diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachment.java b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachment.java index 012bd5bf9..6a9b048a4 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachment.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/CustomAttachment.java @@ -370,13 +370,18 @@ public class CustomAttachment implements MsgAttachment { public static final int SKILL_MSG_AUDIO = 87; public static final int CP_INVITE_MESSAGE = 88; public static final int CP_INVITE_MESSAGE_TOP_NOTICE = 881; + public static final int CUSTOM_MSG_SINGLE_ROOM_RANK = 89; public static final int CUSTOM_MSG_SUB_SINGLE_ROOM_RANK_TOP = 891; + public static final int CUSTOM_MSG_FANS_TEAM = 90; public static final int CUSTOM_MSG_SUB_FANS_TEAM_OPEN = 901; //开通粉丝团 public static final int CUSTOM_MSG_SUB_FANS_TEAM_OPEN_FAILED = 902; // 开通粉丝团失败 public static final int CUSTOM_MSG_SUB_FANS_TEAM_JOIN = 903; // 加入粉丝团 public static final int CUSTOM_MSG_SUB_FANS_TEAM_EXIT = 904; // 退出粉丝团 + + public static final int CUSTOM_MSG_ROOM_RANK = 91; + public static final int CUSTOM_MSG_SUB_ROOM_RANK_TOP = 911; /** * 自定义消息附件的类型,根据该字段区分不同的自定义消息 */ diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/RoomRankAttachment.java b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/RoomRankAttachment.java new file mode 100644 index 000000000..550424ba7 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/RoomRankAttachment.java @@ -0,0 +1,31 @@ +package com.yizhuan.xchat_android_core.im.custom.bean; + +import com.alibaba.fastjson.JSONObject; +import com.google.gson.Gson; + +public class RoomRankAttachment extends CustomAttachment { + + private RoomRankMsgBean msgBean; + + public RoomRankAttachment(int second) { + super(CUSTOM_MSG_ROOM_RANK, second); + } + + public RoomRankMsgBean getMsgBean() { + return msgBean; + } + + public void setMsgBean(RoomRankMsgBean msgBean) { + this.msgBean = msgBean; + } + + @Override + protected void parseData(JSONObject data) { + msgBean = new Gson().fromJson(data.toJSONString(), RoomRankMsgBean.class); + } + + @Override + protected JSONObject packData() { + return null; + } +} diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/RoomRankMsgBean.java b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/RoomRankMsgBean.java new file mode 100644 index 000000000..5b538dd76 --- /dev/null +++ b/core/src/main/java/com/yizhuan/xchat_android_core/im/custom/bean/RoomRankMsgBean.java @@ -0,0 +1,11 @@ +package com.yizhuan.xchat_android_core.im.custom.bean; + +import lombok.Data; + +@Data +public class RoomRankMsgBean { + private long uid; + private String title; + private String avatar; + private String desc; +} diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/manager/RoomEvent.java b/core/src/main/java/com/yizhuan/xchat_android_core/manager/RoomEvent.java index 3e3c15b04..28fa59ccb 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/manager/RoomEvent.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/manager/RoomEvent.java @@ -231,6 +231,8 @@ public class RoomEvent { public static final int ROOM_CLEAN_SCREEN = 90; + public static final int ROOM_RANK_TOP_NOTIFY = 91; + private int event = NONE; private int micPosition = Integer.MIN_VALUE; private int posState = -1;