盲盒礼物具体业务逻辑的构建,IM消息的构建

This commit is contained in:
18401019693
2023-05-25 13:40:49 +08:00
parent 1f7aef91a8
commit b4dc035a1b
17 changed files with 941 additions and 158 deletions

View File

@@ -31,6 +31,7 @@ import com.yunbao.common.bean.NobleRankHideUserListModel;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.event.CoinChangeEvent;
import com.yunbao.common.event.FollowEvent;
import com.yunbao.common.event.SendBlindGiftEvent;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.KeyBoardHeightChangeListener;
@@ -40,7 +41,6 @@ import com.yunbao.common.utils.L;
import com.yunbao.common.utils.ProcessImageUtil;
import com.yunbao.common.utils.SVGAViewUtils;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.utils.formatBigNum;
import com.yunbao.live.R;
import com.yunbao.live.bean.GuardUserBean;
@@ -317,25 +317,27 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
* 收到礼物消息
*/
@Override
public void onSendGift(LiveReceiveGiftBean bean) {
//购买守护
if (bean.ismTypeBuyGuard()) {
if (mLiveRoomViewHolder != null) {
if (!mIsAnchor) {
mLiveRoomViewHolder.showGuardGifMessage(bean);
public void onSendGift(LiveReceiveGiftBean bean, SendBlindGiftEvent event) {
if (event == null) {
//购买守护
if (bean.ismTypeBuyGuard()) {
if (mLiveRoomViewHolder != null) {
if (!mIsAnchor) {
mLiveRoomViewHolder.showGuardGifMessage(bean);
}
}
}
} else {
if (mLiveRoomViewHolder != null) {
if (bean.getmLiveUId().equals(bean.getRoomnum())) {
mLiveRoomViewHolder.insertChat(bean.getLiveChatBean(), 1);
}
mLiveRoomViewHolder.showGiftMessage(bean, mIsAnchor);
} else {
if (mLiveRoomViewHolder != null) {
if (bean.getmLiveUId().equals(bean.getRoomnum())) {
mLiveRoomViewHolder.insertChat(bean.getLiveChatBean(), 1);
}
mLiveRoomViewHolder.showGiftMessage(bean, mIsAnchor);
}
}
}
}
@@ -1362,6 +1364,7 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
fragment.setArguments(bundle);
fragment.show(getSupportFragmentManager(), "LiveGuardBuyDialogFragment");
}
/**
* 打开购买守护的弹窗
*/

View File

@@ -51,6 +51,7 @@ import com.yunbao.common.bean.MicUserBean;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.dialog.NotCancelableDialog;
import com.yunbao.common.event.LoginInvalidEvent;
import com.yunbao.common.event.SendBlindGiftEvent;
import com.yunbao.common.http.CommonHttpConsts;
import com.yunbao.common.http.CommonHttpUtil;
import com.yunbao.common.http.HttpCallback;
@@ -73,6 +74,7 @@ import com.yunbao.common.views.LiveNewWishListPopup;
import com.yunbao.common.views.LiveRobotSettingCustomPopup;
import com.yunbao.faceunity.FaceManager;
import com.yunbao.live.R;
import com.yunbao.live.bean.LiveChatBean;
import com.yunbao.live.bean.LiveGuardInfo;
import com.yunbao.live.bean.LiveKsyConfigBean;
import com.yunbao.live.bean.LiveReceiveGiftBean;
@@ -1464,14 +1466,13 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl
}
@Override
public void onSendGift(LiveReceiveGiftBean bean) {
//购买守护
if (bean.ismTypeBuyGuard()) {
if (mLiveRoomViewHolder != null) {
mLiveRoomViewHolder.showGuardGifMessage(bean);
}
} else {
public void onSendGift(LiveReceiveGiftBean bean, SendBlindGiftEvent event) {
if (event!=null){
//插入盲盒礼物消息
bean.getLiveChatBean().setType(LiveChatBean.BLIND_BOX);
bean.getLiveChatBean().setContent(event.getGiftMsg());
bean.getLiveChatBean().setGiftName(event.getGiftname());
bean.getLiveChatBean().setUserNiceName(event.getUserNiceName());
if (mLiveRoomViewHolder != null) {
if (bean.getmLiveUId().equals(bean.getRoomnum())) {
mLiveRoomViewHolder.insertChat(bean.getLiveChatBean(), 1);
@@ -1479,8 +1480,25 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl
mLiveRoomViewHolder.showGiftMessage(bean, false);
mLiveRoomViewHolder.updataWishList(bean.getGiftId(), bean.getGiftCount());
}
}else {
//购买守护
if (bean.ismTypeBuyGuard()) {
if (mLiveRoomViewHolder != null) {
mLiveRoomViewHolder.showGuardGifMessage(bean);
}
} else {
if (mLiveRoomViewHolder != null) {
if (bean.getmLiveUId().equals(bean.getRoomnum())) {
mLiveRoomViewHolder.insertChat(bean.getLiveChatBean(), 1);
}
mLiveRoomViewHolder.showGiftMessage(bean, false);
mLiveRoomViewHolder.updataWishList(bean.getGiftId(), bean.getGiftCount());
}
}
}
}
private void printLog(String content) {

View File

@@ -27,11 +27,9 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.GridLayoutManager;
@@ -49,7 +47,6 @@ import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.SpUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.weight.ClipPathCircleImage;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveAudienceActivity;
@@ -360,6 +357,10 @@ public class LiveChatAdapter extends RecyclerView.Adapter {
mTextView.setText(builder);
} else if (bean.getType() == -10) {
mBg.setBackground(null);
} else if (bean.getType() == LiveChatBean.BLIND_BOX) {
Log.e("BLIND_BOX", bean.toString());
new LoadDian9TuUtil().loadDian9TuAssets(mContext, mBg, 1);
new LiveTextRender().blindBox(mContext, mTextView, bean);
} else if (bean.getType() == LiveChatBean.SYSTEM) {
boolean isContains = false;
for (LiveChatBean model : mList) {

View File

@@ -26,7 +26,7 @@ public class LiveChatBean {
public static final int SYSTEM3_COLOR = 108;//带颜色的系统消息,格式 XXXX<font color='#FF8E43'>YYY</font>
public static final int XYD_COMPLETE = 207;//心愿单完成通知
public static final int WISH_LIST_PROGRESS = 307;//心愿单进度通知
public static final int BLIND_BOX = 409;//盲盒礼物消息
private String id;
@@ -52,6 +52,17 @@ public class LiveChatBean {
private String prankIcon;
private String hot_card;
private MsgModel msgModel = new MsgModel();//自定义消息体
private String giftName;
public String getGiftName() {
return giftName;
}
public LiveChatBean setGiftName(String giftName) {
this.giftName = giftName;
return this;
}
private AiAutomaticSpeechModel aiAutomaticSpeechModel = new AiAutomaticSpeechModel();//机器人消息体
public AiAutomaticSpeechModel getAiAutomaticSpeechModel() {
@@ -369,4 +380,45 @@ public class LiveChatBean {
public void setMedalLevelImageUrl(String medalLevelImageUrl) {
this.medalLevelImageUrl = medalLevelImageUrl;
}
@Override
public String toString() {
return "LiveChatBean{" +
"NORMAL=" + NORMAL +
", id='" + id + '\'' +
", userNiceName='" + userNiceName + '\'' +
", level=" + level +
", content='" + content + '\'' +
", heart=" + heart +
", type=" + type +
", liangName='" + liangName + '\'' +
", vipType=" + vipType +
", guardType=" + guardType +
", anchor=" + anchor +
", manager=" + manager +
", medalNmae='" + medalNmae + '\'' +
", medalLevelImageUrl='" + medalLevelImageUrl + '\'' +
", bubble='" + bubble + '\'' +
", medal='" + medal + '\'' +
", medal_new='" + medal_new + '\'' +
", medal_honor='" + medal_honor + '\'' +
", hot_num='" + hot_num + '\'' +
", good_nub='" + good_nub + '\'' +
", anchorName='" + anchorName + '\'' +
", prankIcon='" + prankIcon + '\'' +
", hot_card='" + hot_card + '\'' +
", msgModel=" + msgModel +
", giftName='" + giftName + '\'' +
", aiAutomaticSpeechModel=" + aiAutomaticSpeechModel +
", nobleId='" + nobleId + '\'' +
", nobleIcon='" + nobleIcon + '\'' +
", bubbleSrc='" + bubbleSrc + '\'' +
", startColor='" + startColor + '\'' +
", endColor='" + endColor + '\'' +
", contentColor='" + contentColor + '\'' +
", atUserName='" + atUserName + '\'' +
", atUserID='" + atUserID + '\'' +
", isAttention=" + isAttention +
'}';
}
}

View File

@@ -40,6 +40,10 @@ import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.opensource.svgaplayer.SVGADrawable;
import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.BlindBoxInfoModel;
@@ -47,6 +51,7 @@ import com.yunbao.common.bean.LiveGiftBean;
import com.yunbao.common.bean.LiveGiftBean2;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.dialog.AbsDialogFragment;
import com.yunbao.common.event.SendBlindGiftEvent;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.HttpClient;
import com.yunbao.common.http.live.LiveNetManager;
@@ -58,6 +63,7 @@ import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.GiftCacheUtil;
import com.yunbao.common.utils.NobleUtil;
import com.yunbao.common.utils.SVGAViewUtils;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.live.R;
@@ -141,7 +147,7 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
private int isContactGift = 0;
DialogInterface.OnDismissListener onDismissListener;
DialogInterface.OnShowListener onShowListener;
private SVGAImageView blindSvga;
@Override
protected int getLayoutId() {
@@ -176,6 +182,7 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
Bus.getOff(this);
if (onDismissListener != null) {
onDismissListener.onDismiss(dialog);
}
@@ -196,6 +203,7 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Bus.getOn(this);
mCoin = (TextView) mRootView.findViewById(R.id.coin);
mTvGoldCoin = (TextView) mRootView.findViewById(R.id.goldCoin);
mTvGoCharge = (TextView) mRootView.findViewById(R.id.go_charge);
@@ -207,6 +215,7 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
progressBlind1 = mRootView.findViewById(R.id.progress_blind2);
progressBlind2 = mRootView.findViewById(R.id.progress_blind3);
mArrow = mRootView.findViewById(R.id.arrow);
blindSvga = mRootView.findViewById(R.id.blind_svga);
mBtnSend = mRootView.findViewById(R.id.btn_send);
mBtnSendGroup = mRootView.findViewById(R.id.btn_send_group);
mBtnSendLian = mRootView.findViewById(R.id.btn_send_lian);
@@ -409,7 +418,6 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
upData();
mCoin.setText(obj.getString("coin"));
mTvGoldCoin.setText(obj.getString("gold"));
Bus.getOn(LiveGiftDialogFragment.this);
}
}
@@ -701,6 +709,7 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
mBtnChooseCount.setVisibility(View.VISIBLE);
mArrow.setVisibility(View.VISIBLE);
mBtnSend.setBackground(mDrawable1);
mBtnChooseCount.setEnabled(true);
}
if (bean.getType() == 5) {
@@ -722,8 +731,10 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
* @param blindBoxType
*/
private StringBuffer blindGiftNamesBuffer = null;
private int blindBoxType;
private void showBlindProgress(int blindBoxType) {
this.blindBoxType = blindBoxType;
blindGiftNamesBuffer = new StringBuffer();
BlindBoxInfoModel model = null;
for (BlindBoxInfoModel boxInfoModel : blindBoxInfoModels) {
@@ -732,6 +743,22 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
}
}
if (model == null) return;
new SVGAParser(mContext).decodeFromAssets("hdsn.svga", new SVGAParser.ParseCompletion() {
@Override
public void onComplete(SVGAVideoEntity videoItem) {
SVGADrawable drawable = new SVGADrawable(videoItem);
blindSvga.setImageDrawable(drawable);
SVGAViewUtils.playEndClear(blindSvga, false);
}
@Override
public void onError() {
Log.e("errqs", "errl");
}
}, null);
mArrow.setVisibility(View.GONE);
mBtnChooseCount.setEnabled(false);
mVipGold.setVisibility(View.GONE);
blindBox.setVisibility(View.VISIBLE);
WindowManager.LayoutParams params = getDialog().getWindow().getAttributes();
@@ -1016,4 +1043,73 @@ public class LiveGiftDialogFragment extends AbsDialogFragment implements View.On
}
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSendBlindGiftEvent(SendBlindGiftEvent event) {
BlindBoxInfoModel model = null;
for (int i = 0; i < blindBoxInfoModels.size(); i++) {
if (TextUtils.equals(blindBoxInfoModels.get(i).getBlindBoxType(), event.getBoxType())) {
blindBoxInfoModels.get(i).setDressThresholdValue(event.getDressThresholdValue());
model = blindBoxInfoModels.get(i);
}
}
long userID = IMLoginManager.get(mContext).getUserInfo().getId();
String boxBlindName;
//判断送礼用户更新送礼用户进度
if (TextUtils.equals(String.valueOf(userID), event.getUid()) && blindBoxType == Integer.parseInt(event.getBoxType())) {
switch (blindBoxType) {
case 1:
boxBlindName = mContext.getString(R.string.mini_blind_box);
progressBlind.setMax(Integer.parseInt(model.getThresholdValue()));
progressBlind.setProgress(Integer.parseInt(model.getDressThresholdValue()));
break;
case 2:
boxBlindName = mContext.getString(R.string.collection_blind_box);
progressBlind1.setMax(Integer.parseInt(model.getThresholdValue()));
progressBlind1.setProgress(Integer.parseInt(model.getDressThresholdValue()));
break;
default:
boxBlindName = mContext.getString(R.string.pd_blind_box);
progressBlind2.setMax(Integer.parseInt(model.getThresholdValue()));
progressBlind2.setProgress(Integer.parseInt(model.getDressThresholdValue()));
break;
}
//进度下方提示语
if (TextUtils.equals(model.getThresholdValue(), model.getDressThresholdValue())) {
String individualDressing = mContext.getString(R.string.individual_dressing);
String msg = mContext.getString(R.string.have_already_win);
msg = String.format(msg, model.getThresholdDressName());
int dressNameIndexOf = msg.indexOf(model.getThresholdDressName());
int individualDressingIndexOf = msg.indexOf(String.valueOf(individualDressing));
int dressNameSize = model.getThresholdDressName().length();
int individualDressingSize = String.valueOf(individualDressing).length();
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(msg);
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#FFF682")), dressNameIndexOf, dressNameIndexOf + dressNameSize, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#FFF682")), individualDressingIndexOf, individualDressingIndexOf + individualDressingSize, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
blindNumber.setText(builder);
} else {
int progress = Integer.parseInt(model.getThresholdValue()) - Integer.parseInt(model.getDressThresholdValue());
String msg = mContext.getString(R.string.resend_win);
msg = String.format(msg, String.valueOf(progress), boxBlindName, model.getThresholdDressName());
int dressNameIndexOf = msg.indexOf(model.getThresholdDressName());
int progressIndexOf = msg.indexOf(String.valueOf(progress));
int dressNameSize = model.getThresholdDressName().length();
int progressSize = String.valueOf(progress).length();
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(msg);
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#FFF682")), dressNameIndexOf, dressNameIndexOf + dressNameSize, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#FFF682")), progressIndexOf, progressIndexOf + progressSize, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
blindNumber.setText(builder);
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(model.getDressThresholdValue())
.append("/")
.append(model.getThresholdValue());
textBlindProgress.setText(stringBuffer.toString());
}
}
}
}

View File

@@ -334,7 +334,7 @@ public class SocketClient {
receiveGiftBean.setUid(uid);
receiveGiftBean.setGuardType(map.getString("guard_type"));
receiveGiftBean.setSendtype(map.getIntValue("action"));
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean,null);
}
} else {
LiveReceiveGiftBean receiveGiftBean = new LiveReceiveGiftBean();
@@ -346,7 +346,7 @@ public class SocketClient {
receiveGiftBean.setUid(map.getString("uid"));
receiveGiftBean.setGuardType(map.getString("guard_type"));
receiveGiftBean.setSendtype(map.getIntValue("action"));
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean,null);
}
}
@@ -557,13 +557,13 @@ public class SocketClient {
LivePKUserListBean livePKUserListBean = JSON.parseObject(receiveGiftBean.getPkTopUsers(), LivePKUserListBean.class);
if (mLiveUid.equals(map.getString("roomnum"))) {
if (!mLiveUid.equals(map.getString("roomnum"))) {
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean,null);
}
//同一个直播间时才刷新pk
mListener.onSendGiftPk(map.getLongValue("pktotal1"), map.getLongValue("pktotal2"), livePKUserListBean);
} else {
if (!mLiveUid.equals(map.getString("roomnum"))) {
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean,null);
}
//同一个直播间时才刷新pk
if (mLiveUid.equals(map.getString("pkuid1")) ||
@@ -574,7 +574,7 @@ public class SocketClient {
}
} else {
if (!mLiveUid.equals(map.getString("roomnum"))) {
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean,null);
}
}
}
@@ -628,7 +628,7 @@ public class SocketClient {
try {
if (!TextUtils.isEmpty(mLiveUid)) {
if (mLiveUid.equals(map.getString("roomnum"))) {
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean,null);
mListener.onSendGiftPk(map.getLongValue("pktotal1"), map.getLongValue("pktotal2"), livePKUserListBean);
} else {
mListener.onSendGiftPk(map.getLongValue("pktotal2"), map.getLongValue("pktotal1"), livePKUserListBean);
@@ -640,7 +640,7 @@ public class SocketClient {
} else {
Log.i("tvvs", receiveGiftBean.getLiveChatBean().getContent());
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean,null);
}
if (map.getIntValue("drpk_status") == 1) {
LiveRoomViewHolder.UpPkBar(map.getJSONArray("userlist"), mLiveUid, 0);

View File

@@ -2,6 +2,7 @@ package com.yunbao.live.socket;
import com.alibaba.fastjson.JSONObject;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.event.SendBlindGiftEvent;
import com.yunbao.live.bean.LiveBuyGuardMsgBean;
import com.yunbao.live.bean.LiveChatBean;
import com.yunbao.live.bean.LiveDanMuBean;
@@ -57,7 +58,7 @@ public interface SocketMessageListener {
*
* @param bean 礼物信息
*/
void onSendGift(LiveReceiveGiftBean bean);
void onSendGift(LiveReceiveGiftBean bean, SendBlindGiftEvent event);
void onBuyZuoji(LiveReceiveGiftBean bean);

View File

@@ -33,6 +33,7 @@ import com.yunbao.common.bean.UserBean;
import com.yunbao.common.bean.WishModel;
import com.yunbao.common.bean.XydCompleteModel;
import com.yunbao.common.event.CustomFullServiceNotifyEvent;
import com.yunbao.common.event.SendBlindGiftEvent;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.HttpClient;
import com.yunbao.common.manager.IMRTCManager;
@@ -680,7 +681,7 @@ public class SocketRyClient {
receiveGiftBean.setUid(uid);
receiveGiftBean.setGuardType(map.getString("guard_type"));
receiveGiftBean.setSendtype(map.getIntValue("action"));
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean, null);
}
} else {
LiveReceiveGiftBean receiveGiftBean = new LiveReceiveGiftBean();
@@ -692,7 +693,7 @@ public class SocketRyClient {
receiveGiftBean.setUid(map.getString("uid"));
receiveGiftBean.setGuardType(map.getString("guard_type"));
receiveGiftBean.setSendtype(map.getIntValue("action"));
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean, null);
}
}
@@ -907,13 +908,13 @@ public class SocketRyClient {
LivePKUserListBean livePKUserListBean = JSON.parseObject(receiveGiftBean.getPkTopUsers(), LivePKUserListBean.class);
if (mLiveUid.equals(map.getString("roomnum"))) {
if (!mLiveUid.equals(map.getString("roomnum"))) {
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean, null);
}
//同一个直播间时才刷新pk
mListener.onSendGiftPk(map.getLongValue("pktotal1"), map.getLongValue("pktotal2"), livePKUserListBean);
} else {
if (!mLiveUid.equals(map.getString("roomnum"))) {
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean, null);
}
//同一个直播间时才刷新pk
if (mLiveUid.equals(map.getString("pkuid1")) ||
@@ -924,7 +925,7 @@ public class SocketRyClient {
}
} else {
if (!mLiveUid.equals(map.getString("roomnum"))) {
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean, null);
}
}
}
@@ -963,12 +964,15 @@ public class SocketRyClient {
chatBean.setContent(mContext.getString(R.string.live_send_gift_1) + " " + +receiveGiftBean.getGiftCount() + " " + mContext.getString(R.string.live_send_gift_2) + receiveGiftBean.getGiftnameen());
}
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean, null);
}
// 玩家自己送礼物
private void sendGiftInSameRoom(JSONObject map) {
String ctJson = map.getString("ct");
SendBlindGiftEvent sendBlindGiftEvent = GsonUtils.fromJson(ctJson, SendBlindGiftEvent.class);
LiveReceiveGiftBean receiveGiftBean = JSON.parseObject(map.getString("ct"), LiveReceiveGiftBean.class);
sendBlindGiftEvent.setUserNiceName(map.getString("uname"));
receiveGiftBean.setAvatar(map.getString("uhead") + "");
receiveGiftBean.setUserNiceName(map.getString("uname"));
receiveGiftBean.setRoomnum(map.getString("roomnum"));
@@ -997,11 +1001,11 @@ public class SocketRyClient {
if (map.get("guard_type") != null && !"".equals(map.get("guard_type")) && !"null".equals(map.get("guard_type"))) {
chatBean.setGuardType(map.getInteger("guard_type"));
}
if (CommonAppContext.lang.equals("chinese")) {
chatBean.setContent(mContext.getString(R.string.live_send_gift_1) + receiveGiftBean.getGiftCount() + mContext.getString(R.string.live_send_gift_2) + receiveGiftBean.getGiftName());
} else {
chatBean.setContent(mContext.getString(R.string.live_send_gift_1) + " " + +receiveGiftBean.getGiftCount() + " " + mContext.getString(R.string.live_send_gift_2) + receiveGiftBean.getGiftnameen());
}
//增加粉丝徽章信息
chatBean.setMedalNmae(map.getString("medal_name"));
@@ -1010,12 +1014,12 @@ public class SocketRyClient {
chatBean.setMedalLevelImageUrl(fansMedalBean.getThumb());
receiveGiftBean.setLiveChatBean(chatBean);
Log.e("tag", "ifpk" + map.getIntValue("ifpk") + "");
if (map.getIntValue("ifpk") == 1) {
try {
if (!TextUtils.isEmpty(mLiveUid)) {
if (mLiveUid.equals(map.getString("roomnum"))) {
mListener.onSendGift(receiveGiftBean);
mListener.onSendGift(receiveGiftBean, null);
mListener.onSendGiftPk(map.getLongValue("pktotal1"), map.getLongValue("pktotal2"), livePKUserListBean);
} else {
mListener.onSendGiftPk(map.getLongValue("pktotal2"), map.getLongValue("pktotal1"), livePKUserListBean);
@@ -1027,7 +1031,12 @@ public class SocketRyClient {
} else {
Log.i("tvvs", receiveGiftBean.getLiveChatBean().getContent());
mListener.onSendGift(receiveGiftBean);
if (!TextUtils.isEmpty(sendBlindGiftEvent.getAction()) && TextUtils.equals("blind_box", sendBlindGiftEvent.getAction())) {
mListener.onSendGift(receiveGiftBean, sendBlindGiftEvent);
} else {
mListener.onSendGift(receiveGiftBean, null);
}
}
if (map.getIntValue("drpk_status") == 1) {
Bus.get().post(new LiveAudienceEvent()

View File

@@ -86,6 +86,19 @@ public class LiveTextRender {
sFontSizeSpan3 = new AbsoluteSizeSpan(14, true);
}
public void blindBox(Context context, TextView textView, LiveChatBean bean) {
String chatMsg = bean.getContent();
int userNiceNameIndex = chatMsg.indexOf(bean.getUserNiceName());
int userNiceNameSize = bean.getUserNiceName().length();
int giftNameIndex = chatMsg.indexOf(bean.getGiftName());
int giftNameSize = bean.getGiftName().length();
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(chatMsg);
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#78FEFF")), userNiceNameIndex, userNiceNameIndex + userNiceNameSize, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#FFF86C")), giftNameIndex, giftNameIndex + giftNameSize, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(builder);
}
/**
* 直播间推荐卡
*

View File

@@ -45,6 +45,7 @@ import com.yunbao.common.bean.XydCompleteModel;
import com.yunbao.common.custom.MyViewPager;
import com.yunbao.common.event.FollowEvent;
import com.yunbao.common.event.LiveFloatEvent;
import com.yunbao.common.event.SendBlindGiftEvent;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.CommonHttpConsts;
import com.yunbao.common.http.CommonHttpUtil;
@@ -269,105 +270,105 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
@Override
public void run() {
try{
try {
Log.e("ImgLoader1", data.getAvatar());
if (mLiveRyLinkMicPkPresenter != null) {
mLiveRyLinkMicPkPresenter.clearData();
mLiveRyLinkMicPkPresenter.release();
mLiveRyLinkMicPkPresenter = null;
}
Log.e("ImgLoader1", data.getAvatar());
if (mLiveRyLinkMicPkPresenter != null) {
mLiveRyLinkMicPkPresenter.clearData();
mLiveRyLinkMicPkPresenter.release();
mLiveRyLinkMicPkPresenter = null;
}
mLiveBean = data;
mLiveSDK = liveSdk;
mLiveType = liveType;
mLiveTypeVal = liveTypeVal;
liveID = data.getUid();
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.OPEN_PARAMETERS)
.setParametersModel(openParametersModel
.setmLiveType(mLiveType)
.setmLiveTypeVal(mLiveTypeVal)));
loading.setVisibility(View.VISIBLE);
ImgLoader.displayBlurLive(mContext, mLiveBean.getAvatar(), ivBg);
AnimationDrawable frameAnimation = (AnimationDrawable) ivLoading.getBackground();
frameAnimation.start();
liveHandler.removeCallbacks(loadRunnableGone);
if (mLivePlayViewHolder == null) {
mLivePlayViewHolder = new LivePlayRyViewHolder(mContext, playContainer, 1);
mLiveRoomViewHolder = new LiveRoomViewHolder(false, 1, mContext, mContainer, mSecondPage.findViewById(R.id.gift_gif), mSecondPage.findViewById(R.id.gift_svga), mContainerWrap, mContext.getWindowManager());
mLiveAudienceViewHolder = new LiveAudienceViewHolder(mContext, mContainer);
mLiveLinkMicPresenter = new LiveLinkMicPresenter(mContext, mLivePlayViewHolder, false, mLiveSDK, mLiveAudienceViewHolder.getContentView());
mLiveLinkMicAnchorPresenter = new LiveLinkMicAnchorPresenter(mContext, mLivePlayViewHolder, false, mLiveSDK, null);
mLiveRyLinkMicPkPresenter = new LiveRyLinkMicPkPresenter(mContext, mLivePlayViewHolder, false, null);
mLivePlayViewHolder.addToParent();
mLivePlayViewHolder.subscribeActivityLifeCycle();
mLivePlayViewHolder.setLoadViewListener(new LiveRoomPlayViewHolder.LoadingListener() {
mLiveBean = data;
mLiveSDK = liveSdk;
mLiveType = liveType;
mLiveTypeVal = liveTypeVal;
liveID = data.getUid();
Bus.get().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.OPEN_PARAMETERS)
.setParametersModel(openParametersModel
.setmLiveType(mLiveType)
.setmLiveTypeVal(mLiveTypeVal)));
loading.setVisibility(View.VISIBLE);
ImgLoader.displayBlurLive(mContext, mLiveBean.getAvatar(), ivBg);
AnimationDrawable frameAnimation = (AnimationDrawable) ivLoading.getBackground();
frameAnimation.start();
liveHandler.removeCallbacks(loadRunnableGone);
if (mLivePlayViewHolder == null) {
mLivePlayViewHolder = new LivePlayRyViewHolder(mContext, playContainer, 1);
mLiveRoomViewHolder = new LiveRoomViewHolder(false, 1, mContext, mContainer, mSecondPage.findViewById(R.id.gift_gif), mSecondPage.findViewById(R.id.gift_svga), mContainerWrap, mContext.getWindowManager());
mLiveAudienceViewHolder = new LiveAudienceViewHolder(mContext, mContainer);
mLiveLinkMicPresenter = new LiveLinkMicPresenter(mContext, mLivePlayViewHolder, false, mLiveSDK, mLiveAudienceViewHolder.getContentView());
mLiveLinkMicAnchorPresenter = new LiveLinkMicAnchorPresenter(mContext, mLivePlayViewHolder, false, mLiveSDK, null);
mLiveRyLinkMicPkPresenter = new LiveRyLinkMicPkPresenter(mContext, mLivePlayViewHolder, false, null);
mLivePlayViewHolder.addToParent();
mLivePlayViewHolder.subscribeActivityLifeCycle();
mLivePlayViewHolder.setLoadViewListener(new LiveRoomPlayViewHolder.LoadingListener() {
@Override
public void onPlayer() {
liveHandler.postDelayed(loadRunnableGone, 350);
}
});
mLiveRoomViewHolder.subscribeActivityLifeCycle();
mLiveAudienceViewHolder.addToParent();
mLiveRoomViewHolder.addToParent();
mLiveAudienceViewHolder.subscribeActivityLifeCycle();
} else {
mLivePlayViewHolder.setLiveBeanLandscape(1);
mLiveLinkMicPresenter.setLiveSdk(mLiveSDK);
mLiveLinkMicAnchorPresenter.setLiveSdk(mLiveSDK);
}
if (mLiveRyLinkMicPkPresenter == null) {
mLiveRyLinkMicPkPresenter = new LiveRyLinkMicPkPresenter(mContext, mLivePlayViewHolder, false, null);
}
//去除主播离开画面
if (LivePlayKsyViewHolder.leave != null) {
LivePlayKsyViewHolder.leave.setVisibility(View.GONE);
}
if (LivePlayRyViewHolder.leave != null) {
LivePlayRyViewHolder.leave.setVisibility(View.GONE);
}
//直播间背景
ImgLoader.displayBlurLive(mContext, mLiveBean.getAvatar(), liveBack, 400, 600);
mask.setVisibility(View.VISIBLE);
mLivePlayViewHolder.clearFrame();
mLivePlayViewHolder.setLiveBean(mLiveBean);
mLivePlayViewHolder.removeDetailView();
mLivePlayViewHolder.setCover(mLiveBean.getAvatar());
mLivePlayViewHolder.setLiveBeanLandscape(mLiveBean.getLandscape());
mLiveRoomViewHolder.changeMessageLandscape(mLiveBean.getLandscape());
//mLivePlayViewHolder.play(mLiveBean.getPull(), LiveRoomPlayViewHolder.PLAY_MODEL_DEF);
mLivePlayViewHolder.setOnMicCallback(new LiveRoomPlayViewHolder.OnMicCallback() {
@Override
public void onPlayer() {
liveHandler.postDelayed(loadRunnableGone, 350);
public void onMikUpdate() {
if (mContext instanceof LiveActivity) {
((LiveActivity) mContext).showMicList(mLiveBean.getUid(), mLiveRoomViewHolder);
}
}
});
mLiveRoomViewHolder.subscribeActivityLifeCycle();
mLiveAudienceViewHolder.addToParent();
mLiveRoomViewHolder.addToParent();
mLiveAudienceViewHolder.subscribeActivityLifeCycle();
} else {
mLivePlayViewHolder.setLiveBeanLandscape(1);
mLiveLinkMicPresenter.setLiveSdk(mLiveSDK);
mLiveLinkMicAnchorPresenter.setLiveSdk(mLiveSDK);
}
if (mLiveRyLinkMicPkPresenter == null) {
mLiveRyLinkMicPkPresenter = new LiveRyLinkMicPkPresenter(mContext, mLivePlayViewHolder, false, null);
}
//去除主播离开画面
if (LivePlayKsyViewHolder.leave != null) {
LivePlayKsyViewHolder.leave.setVisibility(View.GONE);
}
if (LivePlayRyViewHolder.leave != null) {
LivePlayRyViewHolder.leave.setVisibility(View.GONE);
}
//直播间背景
ImgLoader.displayBlurLive(mContext, mLiveBean.getAvatar(), liveBack, 400, 600);
mask.setVisibility(View.VISIBLE);
mLivePlayViewHolder.clearFrame();
mLivePlayViewHolder.setLiveBean(mLiveBean);
mLivePlayViewHolder.removeDetailView();
mLivePlayViewHolder.setCover(mLiveBean.getAvatar());
mLivePlayViewHolder.setLiveBeanLandscape(mLiveBean.getLandscape());
mLiveRoomViewHolder.changeMessageLandscape(mLiveBean.getLandscape());
//mLivePlayViewHolder.play(mLiveBean.getPull(), LiveRoomPlayViewHolder.PLAY_MODEL_DEF);
mLivePlayViewHolder.setOnMicCallback(new LiveRoomPlayViewHolder.OnMicCallback() {
@Override
public void onMikUpdate() {
if (mContext instanceof LiveActivity) {
((LiveActivity) mContext).showMicList(mLiveBean.getUid(), mLiveRoomViewHolder);
}
mLiveRoomViewHolder.resetView();
enterRoomModel.clear();
enterRoomLeaveHandler.removeCallbacks(enterRoomLeaveRunnable);
mLiveRoomViewHolder.setAvatar(data.getAvatar());
mLiveRoomViewHolder.setAnchorLevel(data.getLevelAnchor());
mLiveRoomViewHolder.setName(data.getUserNiceName());
mLiveRoomViewHolder.setRoomNum(data.getLiangNameTip());
mLiveRoomViewHolder.setTitle(data.getTitle());
mLiveRoomViewHolder.setAnchorGoodNumber(data.getGoodNum());
mLiveRoomViewHolder.clearGuardIcon();
mLiveRoomViewHolder.clearChat();
mLiveRoomViewHolder.releaseGift();
mLiveRyLinkMicPkPresenter.setLiveUid(data.getUid(), "");
mSocketRyClient = new SocketRyClient(mLiveBean.getUid(), PortraitLiveManager.this, mContext);
if (mLiveLinkMicPresenter != null) {
mLiveLinkMicPresenter.setSocketClient(mSocketClient);
}
});
mLiveRoomViewHolder.resetView();
enterRoomModel.clear();
enterRoomLeaveHandler.removeCallbacks(enterRoomLeaveRunnable);
mLiveRoomViewHolder.setAvatar(data.getAvatar());
mLiveRoomViewHolder.setAnchorLevel(data.getLevelAnchor());
mLiveRoomViewHolder.setName(data.getUserNiceName());
mLiveRoomViewHolder.setRoomNum(data.getLiangNameTip());
mLiveRoomViewHolder.setTitle(data.getTitle());
mLiveRoomViewHolder.setAnchorGoodNumber(data.getGoodNum());
mLiveRoomViewHolder.clearGuardIcon();
mLiveRoomViewHolder.clearChat();
mLiveRoomViewHolder.releaseGift();
mLiveRyLinkMicPkPresenter.setLiveUid(data.getUid(), "");
mSocketRyClient = new SocketRyClient(mLiveBean.getUid(), PortraitLiveManager.this, mContext);
if (mLiveLinkMicPresenter != null) {
mLiveLinkMicPresenter.setSocketClient(mSocketClient);
}
enterRoomNew();
enterRoomNew();
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}
}
@@ -1119,21 +1120,50 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
}
@Override
public void onSendGift(LiveReceiveGiftBean bean) {
//购买守护
if (bean.ismTypeBuyGuard()) {
if (mLiveRoomViewHolder != null) {
mLiveRoomViewHolder.showGuardGifMessage(bean);
public void onSendGift(LiveReceiveGiftBean bean, SendBlindGiftEvent event) {
if (event != null) {
LiveChatBean liveChatBean = null;
if (!TextUtils.isEmpty(event.getDressName()) && !TextUtils.isEmpty(event.getDressMsg())) {
liveChatBean = new LiveChatBean();
liveChatBean.setUserNiceName(event.getUserNiceName());
liveChatBean.setType(LiveChatBean.BLIND_BOX);
liveChatBean.setGiftName(event.getDressName());
liveChatBean.setContent(event.getDressMsg());
}
} else {
//插入盲盒礼物消息
bean.getLiveChatBean().setType(LiveChatBean.BLIND_BOX);
bean.getLiveChatBean().setContent(event.getGiftMsg());
bean.getLiveChatBean().setGiftName(event.getGiftname());
bean.getLiveChatBean().setUserNiceName(event.getUserNiceName());
if (mLiveRoomViewHolder != null) {
if (bean.getmLiveUId().equals(bean.getRoomnum())) {
if (liveChatBean != null) {
mLiveRoomViewHolder.insertChat(liveChatBean, 1);
}
mLiveRoomViewHolder.insertChat(bean.getLiveChatBean(), 1);
}
mLiveRoomViewHolder.showGiftMessage(bean, false);
mLiveRoomViewHolder.updataWishList(bean.getGiftId(), bean.getGiftCount());
}
Bus.get().post(event);
} else {
//购买守护
if (bean.ismTypeBuyGuard()) {
if (mLiveRoomViewHolder != null) {
mLiveRoomViewHolder.showGuardGifMessage(bean);
}
} else {
if (mLiveRoomViewHolder != null) {
if (bean.getmLiveUId().equals(bean.getRoomnum())) {
mLiveRoomViewHolder.insertChat(bean.getLiveChatBean(), 1);
}
mLiveRoomViewHolder.showGiftMessage(bean, false);
mLiveRoomViewHolder.updataWishList(bean.getGiftId(), bean.getGiftCount());
}
}
}
}