This commit is contained in:
Martin
2024-07-26 18:38:53 +08:00
parent 5d0f29db42
commit d167ae82b4
48 changed files with 1506 additions and 340 deletions

View File

@@ -21,6 +21,10 @@ import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.GsonUtils;
import com.yunbao.common.event.LiveMsgWindowsCloseEvent;
import com.yunbao.common.event.MessageIMEvent;
import com.yunbao.common.event.MessageIMLiveEvent;
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
@@ -232,6 +236,9 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
}
}
}
if(fragment!=null){
fragment.dismiss();
}
}
@@ -990,14 +997,29 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
new LiveUserAnchorMailBoxPopDialog(mContext).showDialog();
}
LiveUserAnchorMsgPopDialog fragment;
/**
* 用户端打开聊天列表页面
*/
public void openLiveMsgWindow() {
LiveUserAnchorMsgPopDialog fragment = new LiveUserAnchorMsgPopDialog();
fragment = new LiveUserAnchorMsgPopDialog();
fragment.show(((LiveActivity) mContext).getSupportFragmentManager(), "LiveUserAnchorMsgPopDialog");
}
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void onMessageIMEvent(LiveMsgWindowsCloseEvent event) {
if(fragment!=null){
fragment.dismiss();
}
}
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void onMessageIMEvent(MessageIMLiveEvent event) {
if(fragment!=null){
fragment.refreshMsgCount(event.getNumber());
}
}
/**
* 发 弹幕 消息
*/

View File

@@ -39,6 +39,7 @@ import com.lxj.xpopup.interfaces.XPopupCallback;
import com.lzf.easyfloat.EasyFloat;
import com.lzf.easyfloat.enums.ShowPattern;
import com.yunbao.common.dialog.DebugDialog;
import com.yunbao.common.event.MessageIMEvent;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.CommonAppConfig;
@@ -1860,7 +1861,7 @@ public class LiveAudienceActivity extends LiveActivity {
@SuppressLint("SetTextI18n")
public void showMsgRed(int num) {
if (manager == null || manager.mLiveAudienceViewHolder == null || manager.mLiveAudienceViewHolder.mRedPoint == null) {
/*if (manager == null || manager.mLiveAudienceViewHolder == null || manager.mLiveAudienceViewHolder.mRedPoint == null) {
return;
}
if (num == -1) {
@@ -1869,7 +1870,21 @@ public class LiveAudienceActivity extends LiveActivity {
} else if (num > 0) {
manager.mLiveAudienceViewHolder.mRedPoint.setText(num + "");
}
manager.mLiveAudienceViewHolder.mRedPoint.setVisibility(View.VISIBLE);
manager.mLiveAudienceViewHolder.mRedPoint.setVisibility(View.VISIBLE);*/
}
//消息中心
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void onMessageIMEvent(MessageIMEvent event) {
if (manager == null || manager.mLiveAudienceViewHolder == null || manager.mLiveAudienceViewHolder.mRedPoint == null) {
return;
}
if(event.getNumber()>0){
manager.mLiveAudienceViewHolder.mRedPoint.setVisibility(View.VISIBLE);
}else{
manager.mLiveAudienceViewHolder.mRedPoint.setVisibility(View.GONE);
}
}
public void setShowCrownRed(boolean isShow) {

View File

@@ -1,12 +1,14 @@
package com.yunbao.live.dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -45,6 +47,8 @@ import java.util.List;
public class LiveUserAnchorMsgPopDialog extends AbsDialogFragment {
private ViewPager2 viewPager;
private MagicIndicator mIndicator;
private TextView titleCount;
private List<AbsMainMessageChatListFragment> fragmentList;
@Override
@@ -68,7 +72,7 @@ public class LiveUserAnchorMsgPopDialog extends AbsDialogFragment {
WindowManager.LayoutParams params = window.getAttributes();
window.setWindowAnimations(R.style.bottomToTopAnim);
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = (int) (ScreenDimenUtil.getInstance().getScreenHeight()*0.6);
params.height = (int) (ScreenDimenUtil.getInstance().getScreenHeight() * 0.6);
params.gravity = Gravity.BOTTOM;
window.setAttributes(params);
}
@@ -78,10 +82,10 @@ public class LiveUserAnchorMsgPopDialog extends AbsDialogFragment {
super.onActivityCreated(savedInstanceState);
mIndicator = (MagicIndicator) findViewById(R.id.indicator);
viewPager = (ViewPager2) findViewById(R.id.viewPager);
titleCount= (TextView) findViewById(R.id.titleCount);
fragmentList = new ArrayList<>();
fragmentList.add(new MainMessageChatListFragment(AppManager.getInstance().getLiveActivity()));
viewPager.setAdapter(new FragmentStateAdapter((FragmentActivity) AppManager.getInstance().getLiveActivity()) {
@Override
public int getItemCount() {
return fragmentList.size();
@@ -98,6 +102,18 @@ public class LiveUserAnchorMsgPopDialog extends AbsDialogFragment {
initIndicator();
initData();
}
public void refreshMsgCount(int num){
if(titleCount!=null){
titleCount.setText(getResources().getString(R.string.message_chat_msg_all_an_a)+"("+num+")");
}
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
}
/**
* 初始化数据
*/
@@ -105,6 +121,7 @@ public class LiveUserAnchorMsgPopDialog extends AbsDialogFragment {
IMLoginManager.get(mContext).checkInstructor();
MessageIMManager.get(mContext).getSystemMessages();
}
private void initIndicator() {
final String[] titles = new String[]{
WordUtil.getNewString(R.string.message_chat_msg_all),
@@ -148,6 +165,8 @@ public class LiveUserAnchorMsgPopDialog extends AbsDialogFragment {
return linePagerIndicator;
}
});
LinePagerIndicator linePagerIndicator = new LinePagerIndicator(mContext);
linePagerIndicator.setLineHeight(0);
mIndicator.setNavigator(commonNavigator);
ViewPageIndicatorUtils.bind(mIndicator, viewPager, new ViewPager2.OnPageChangeCallback() {
@Override

View File

@@ -1,5 +1,6 @@
package com.yunbao.live.dialog;
import android.app.Activity;
import android.app.Dialog;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
@@ -22,6 +23,7 @@ import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.yunbao.common.event.MainHomeCommunityToChatEvent;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
@@ -48,6 +50,7 @@ import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.SVGAViewUtils;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveActivity;
@@ -129,6 +132,7 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On
GifImageView btn_live;
SVGAImageView gift_svga;
String userType;
@Override
protected int getLayoutId() {
@@ -347,6 +351,8 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On
isAnchor = obj.getInteger("is_anchor") == 1;
mUserBean = JSON.toJavaObject(obj, UserBean.class);
userType = obj.getString("type");
mToName = obj.getString("user_nicename");
mAvatarUrl = obj.getString("avatar");
mAction = obj.getIntValue("action");
@@ -663,7 +669,7 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On
LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class);
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
@Override
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk,boolean isSw) {
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk, boolean isSw) {
if (liveBean == null) {
return;
}
@@ -738,9 +744,32 @@ public class LiveUserDialogFragment extends AbsDialogFragment implements View.On
} else if (i == R.id.btn_setting) {
if (TextUtils.equals(mLiveUid, "uid")) return;
setting();
} else if (i == R.id.btn_pri_msg) {
//私聊
if (CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("C") && userType.equals("C")) {
showMsgError();
return;
}
if (CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("A") && userType.equals("A")) {
showMsgError();
return;
}
if (CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("A") && userType.equals("B")) {
showMsgError();
return;
}
if (CommonAppConfig.getInstance().getUserBean().getUsers_type().equals("B") && userType.equals("A")) {
showMsgError();
return;
}
EventBus.getDefault().post(new MainHomeCommunityToChatEvent().setTargetId(mToUid));
}
}
public void showMsgError() {
ToastUtil.show(WordUtil.isNewZh()?"無法聊天,待開發":"Unable to chat, awaiting development");
}
/**
* 设置

View File

@@ -11,6 +11,8 @@ import com.yunbao.common.http.LiveHttpUtil;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.AppManager;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.live.R;
import com.yunbao.live.views.LiveRoomViewHolder;
public abstract class AbsLinkMicPkPresenter {
@@ -115,7 +117,22 @@ public abstract class AbsLinkMicPkPresenter {
}
protected void isPKTmp(UserBean u) {
isPK(u);
LiveHttpUtil.livePkCheckLive(IMLoginManager.get(AppManager.getInstance().getMainActivity()).getUserInfo().getId()+"", "", "", new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0 && info.length > 0) {
JSONObject obj = JSON.parseObject(info[0]);
if (obj != null) {
if (obj.getString("ispk").equals("0")) {
isPK(u);
} else {
ToastUtil.show(AppManager.getInstance().getMainActivity().getString(R.string.pking_over));
}
}
}
}
});
}
protected void onDRPkApplyTmp(UserBean u) {

View File

@@ -25,6 +25,7 @@ import android.widget.ViewFlipper;
import androidx.fragment.app.FragmentActivity;
import com.lxj.xpopup.XPopup;
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
@@ -374,6 +375,11 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder {
} else {
findViewById(R.id.total_image_red_point).setVisibility(View.GONE);
}
getMsgCount();
}
private void getMsgCount() {
MessageIMManager.get(mContext).resetImUnReadMessageCount(mContext);
}
public void onGuardRed() {
@@ -768,7 +774,7 @@ public class LiveAudienceViewHolder extends AbsLiveViewHolder {
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void onMessageIMEvent(MessageIMEvent event) {
//判断消息中心红点是否已经展示如果已经展示并且未读消息大于0则不再执行之后的逻辑
int number = event.getMessage();
int number = event.getNumber();
if (v_msg_redpoint.getVisibility() == View.VISIBLE && number > 0 || SpUtil.getInstance().getBooleanValue("private_chat_message_switch"))
return;
if (number > 0) {

View File

@@ -184,6 +184,7 @@ public class LivePlaySwViewHolder extends LiveRoomPlayViewHolder {
}
public void initSwEngine(String liveUid) {
dr_pk_view.setVisibility(View.GONE);
this.liveUid = liveUid;
//初始化声网SDK
swAuManager = SWAuManager.get();

View File

@@ -31,6 +31,7 @@ import com.lzf.easyfloat.EasyFloat;
import com.lzf.easyfloat.enums.ShowPattern;
import com.lzf.easyfloat.permission.PermissionUtils;
import com.lzf.easyfloat.utils.LifecycleUtils;
import com.yunbao.common.event.LiveMsgWindowsCloseEvent;
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
import com.yunbao.common.utils.MobclickAgent;
import com.yunbao.common.CommonAppConfig;
@@ -1556,6 +1557,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
@Override
public void onLiveEnd() {
Bus.get().post(new LiveMsgWindowsCloseEvent());
MicStatusManager.getInstance().clear();
endPlay();
if (!CommonAppConfig.LIVE_ROOM_SCROLL) {

View File

@@ -14,38 +14,6 @@
android:layout_height="50dp"
android:orientation="horizontal">
<FrameLayout
android:id="@+id/btn_pri_msg"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:visibility="gone">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="13dp"
android:layout_height="13dp"
android:src="@mipmap/icon_user_home_msg" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="@string/pri_msg"
android:textColor="@color/textColor"
android:textSize="13sp" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/btn_home_page"
android:layout_width="0dp"
@@ -78,7 +46,32 @@
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/btn_pri_msg"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:visibility="visible">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:text="@string/im_pri_chat"
android:textColor="@color/textColor"
android:textSize="16sp"
android:textStyle="bold"/>
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/btn_follow"
android:layout_width="0dp"

View File

@@ -3,18 +3,30 @@
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:background="@drawable/bg_live_user"
android:layout_height="match_parent">
<net.lucode.hackware.magicindicator.MagicIndicator
android:id="@+id/indicator"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="37dp"
android:visibility="visible" />
android:visibility="gone" />
<TextView
android:id="@+id/titleCount"
android:text="全部聊天(0)"
android:layout_marginTop="20dp"
android:layout_marginStart="20dp"
android:textColor="#000000"
android:textStyle="bold"
android:textSize="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.viewpager2.widget.ViewPager2
android:layout_marginTop="20dp"
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:background="@color/green_81c160"
android:layout_height="match_parent"
android:overScrollMode="never"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />

View File

@@ -117,13 +117,15 @@
<string name="live_fans_group_send_gift_tips">Fan group level Of Lv%s Can send this gift</string>
<string name="live_rad_pack_join_fans_group_tip">Join the fan group can be opened [Join]</string>
<string name="live_rad_pack_join_fans_group_click_tip">Join the fan group to open</string>
<string name="message_chat_msg_all">全部聊天</string>
<string name="message_chat_msg_system">系統匹配</string>
<string name="message_chat_msg_user">對方主動</string>
<string name="message_chat_msg_all">Chat All</string>
<string name="message_chat_msg_all_an_a">Chat All</string>
<string name="message_chat_msg_recommend">Suggest chat</string>
<string name="message_chat_msg_system">System matching</string>
<string name="message_chat_msg_user">User initiated</string>
<string name="message_chat_msg_look_live">看直播%dmin</string>
<string name="message_chat_msg_read_tip">[Read]</string>
<string name="message_chat_msg_unread_tip">[Unread]</string>
<string name="message_interactive_chat">發起聊天</string>
<string name="message_interactive_chat">Initiate a chat</string>
<string name="prank_progress">Progress</string>
<string name="turntable_prank">To do</string>

View File

@@ -116,6 +116,8 @@
<string name="live_rad_pack_join_fans_group_tip">加入粉絲團可開啟【加入】</string>
<string name="live_rad_pack_join_fans_group_click_tip">加入粉絲團可開啟</string>
<string name="message_chat_msg_all">全部聊天</string>
<string name="message_chat_msg_all_an_a">全部聊天</string>
<string name="message_chat_msg_recommend">推荐聊天</string>
<string name="message_chat_msg_system">系統匹配</string>
<string name="message_chat_msg_user">對方主動</string>
<string name="message_chat_msg_look_live">看直播%dmin</string>