This commit is contained in:
18401019693
2024-01-23 09:50:34 +08:00
parent 1eb43fb8cf
commit 64f9cee3af
14 changed files with 154 additions and 78 deletions

View File

@@ -6,6 +6,17 @@ public class SudGameChatImModel extends BaseModel {
//文字消息
private String textMessage;
private boolean welcomMessage;
public boolean isWelcomMessage() {
return welcomMessage;
}
public SudGameChatImModel setWelcomMessage(boolean welcomMessage) {
this.welcomMessage = welcomMessage;
return this;
}
public String getNickname() {
return nickname;
}

View File

@@ -1,5 +1,7 @@
package com.yunbao.common.bean;
import android.text.TextUtils;
import com.google.gson.annotations.SerializedName;
public class SudGameUserModel extends BaseModel {
@@ -14,6 +16,21 @@ public class SudGameUserModel extends BaseModel {
private int id;
@SerializedName("mic_status")
private int micStatus; //麦克风状态 2.打开麦克风 3.关闭麦克风
@SerializedName("game_status")
private String gameStatus;// 游戏状态 1.未在游戏状态 2.游戏中;
public String getGameStatus() {
return gameStatus;
}
public boolean isGameIng() {
return TextUtils.equals(getGameStatus(), "2") ;
}
public SudGameUserModel setGameStatus(String gameStatus) {
this.gameStatus = gameStatus;
return this;
}
private boolean mute = false;

View File

@@ -392,6 +392,7 @@ public class GameMicManager {
@Override
public void onSuccess() {
Log.i("tx", "加入成功");
enterRoom();
}
@@ -440,7 +441,18 @@ public class GameMicManager {
SudGameSocketImEvent.MsgDTO msgDTO = msgDTOS.get(0);
//正常文字消息
if (TextUtils.equals(msgDTO.getMethod(), "SendMsg")) {
getView().insertItem(new SudGameChatImModel().setNickname(msgDTO.getUname()).setTextMessage(msgDTO.getCt()));
getView().insertItem(new SudGameChatImModel().setWelcomMessage(false).setNickname(msgDTO.getUname()).setTextMessage(msgDTO.getCt()));
} else if (TextUtils.equals(msgDTO.getMethod(), "welcomMessage")) {
// 欢迎(用户名)进入房间 Welcome (username) to the room
StringBuffer stringBuffer = new StringBuffer();
if (WordUtil.isNewZh()) {
stringBuffer.append("歡迎 ").append(msgDTO.getUname()).append(" 進入房間");
} else {
stringBuffer.append("Welcome ").append(msgDTO.getUname()).append(" to enter the room");
}
getView().insertItem(new SudGameChatImModel().setWelcomMessage(true).setNickname(msgDTO.getUname()).setTextMessage(stringBuffer.toString()));
} else if (TextUtils.equals(msgDTO.getMethod(), "sudGameRoomVoiceList")) {
List<SudGameUserModel> personList = new Gson().fromJson(msgDTO.getCt(), new TypeToken<List<SudGameUserModel>>() {
}.getType());
@@ -451,12 +463,7 @@ public class GameMicManager {
}
}
/**
* 发送聊天信息
*
* @param textMessage
*/
public void sendMessage(String textMessage) {
private void sendChatMessage(String textMessage, String method) {
IMLoginModel loginModel = IMLoginManager.get(CommonAppContext.sInstance.getApplicationContext()).getUserInfo();
SudGameSocketImEvent sudGameSocketImEvent = new SudGameSocketImEvent();
sudGameSocketImEvent.setRetcode("000000");
@@ -467,7 +474,7 @@ public class GameMicManager {
.setCt(textMessage)
.setEquipment("app")
.setUid(String.valueOf(loginModel.getId()))
.setMethod("SendMsg")
.setMethod(method)
.setUname(loginModel.getUserNicename())
.setRoomnum(mRoomID);
@@ -494,11 +501,28 @@ public class GameMicManager {
@Override
public void onError(Message message, RongIMClient.ErrorCode errorCode) {
Log.i("tx", "发送成功"+errorCode.toString());
Log.i("tx", "发送成功" + errorCode.toString());
}
});
}
/**
* 发送聊天信息
*
* @param textMessage
*/
public void sendMessage(String textMessage) {
sendChatMessage(textMessage, "SendMsg");
}
/**
* 进房间
*/
public void enterRoom() {
IMLoginModel loginModel = IMLoginManager.get(CommonAppContext.sInstance.getApplicationContext()).getUserInfo();
sendChatMessage(loginModel.getUserNicename(), "welcomMessage");
}
/**
* activity相关回调
*/

View File

@@ -32,18 +32,29 @@ public class SudGameChatViewHolder extends RecyclerView.ViewHolder {
public void sudGameChat(SudGameChatImModel msgModel) {
new LoadDian9TuUtilSud().loadDian9TuAssets(itemView.getContext(), mBg, 1);
StringBuffer buffer = new StringBuffer();
String userName = msgModel.getNickname() + ":";
buffer.append(userName)
.append(" ")
.append(msgModel.getTextMessage());
String msg = buffer.toString();
int unameIndexOf = msg.indexOf(userName);
int unameSize = userName.length();
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(msg);
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#FFBD0D")), unameIndexOf, unameIndexOf + unameSize, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
if (msgModel.isWelcomMessage()) {
String userName = msgModel.getNickname();
buffer.append(msgModel.getTextMessage());
String msg = buffer.toString();
int unameIndexOf = msg.indexOf(userName);
int unameSize = userName.length();
builder.append(msg);
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#FFBD0D")), unameIndexOf, unameIndexOf + unameSize, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
} else {
String userName = msgModel.getNickname() + ":";
buffer.append(userName)
.append(" ")
.append(msgModel.getTextMessage());
String msg = buffer.toString();
int unameIndexOf = msg.indexOf(userName);
int unameSize = userName.length();
builder.append(msg);
builder.setSpan(new ForegroundColorSpan(Color.parseColor("#FFBD0D")), unameIndexOf, unameIndexOf + unameSize, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
chatMessage.setText(builder);
}
}

View File

@@ -1,8 +1,6 @@
package com.yunbao.common.views;
import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -19,11 +17,11 @@ import com.yunbao.common.bean.SudGameUserModel;
import com.yunbao.common.dialog.SudGameSmallPopupPindow;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.DeviceUtils;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
public class SudGameUserListViewHolder extends RecyclerView.ViewHolder {
private ImageView vacancy_sud_game, mic_status;
private ImageView vacancy_sud_game, mic_status, game_status;
private FrameLayout user_layout;
private RoundedImageView sud_game_user;
private LinearLayout layout;
@@ -35,6 +33,7 @@ public class SudGameUserListViewHolder extends RecyclerView.ViewHolder {
user_layout = itemView.findViewById(R.id.user_layout);
mic_status = itemView.findViewById(R.id.mic_status);
layout = itemView.findViewById(R.id.layout);
game_status = itemView.findViewById(R.id.game_status);
}
public void upData(SudGameUserModel sudGameUserModel, SudGameUserListAdapter.SudGameSmallCallBack sudGameSmallCallBack, int position) {
@@ -67,13 +66,19 @@ public class SudGameUserListViewHolder extends RecyclerView.ViewHolder {
if (sudGameUserModel.isMute()) {
ImgLoader.display2(itemView.getContext(), R.mipmap.icon_game_close_wheat_mute, mic_status);
}
if (sudGameUserModel.isGameIng()) {
game_status.setVisibility(View.VISIBLE);
} else {
game_status.setVisibility(View.GONE);
}
ViewClicksAntiShake.clicksAntiShake(user_layout, new ViewClicksAntiShake.ViewClicksCallBack() {
@Override
public void onViewClicks() {
XPopup.Builder builder = new XPopup.Builder(itemView.getContext()).atView(user_layout);
XPopup.Builder builder = new XPopup.Builder(itemView.getContext()).atView(sud_game_user);
builder.hasShadowBg(false)
.isDestroyOnDismiss(true)
.isLightStatusBar(false)
.maxHeight(DpUtil.dp2px(70))
.popupPosition(PopupPosition.Bottom)
.asCustom(new SudGameSmallPopupPindow(itemView.getContext(),
sudGameUserModel,