第一次提交

This commit is contained in:
xuhuixiang
2025-04-22 14:27:38 +08:00
parent 425bc1475e
commit 0ad9ee980a
1011 changed files with 8929 additions and 8657 deletions

View File

@@ -76,8 +76,8 @@ dependencies {
api("com.squareup.retrofit2:adapter-rxjava2:2.4.0")
api("io.reactivex:rxjava:1.3.0")
//skeleton
implementation("com.github.ethanhua:Skeleton:ff06517d4629e87328c41a1cce614c490ed7fb51")
implementation("io.supercharge:shimmerlayout:2.1.0")
// implementation("com.github.ethanhua:Skeleton:ff06517d4629e87328c41a1cce614c490ed7fb51")
// implementation("io.supercharge:shimmerlayout:2.1.0")
implementation("androidx.room:room-runtime:$room_version")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 617 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 482 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 356 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 472 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 313 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 418 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 460 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 738 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 768 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 543 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 459 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 436 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 378 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 399 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 458 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 445 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 628 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

View File

@@ -42,7 +42,7 @@ public class ChatKitUIConstant {
/**
* 订单详情
*/
public static String ORDERDETAILS_URL = ApiService.URL.equals("https://api.letschat2023.com/") ? "https://shop.letschat2023.com/#/pages/payother/order?" : "http://8.218.226.64:2396/#/pages/payother/order?";
public static String ORDERDETAILS_URL = ApiService.URL.equals("https://api.letschat2023.com/") ? "https://shop.letschat2023.com/#/pages/payother/order?" : "https://shop-test.hnsdl.com/#/pages/payother/order?";
// 合并转发消息数量限制

View File

@@ -476,9 +476,13 @@ public class ChatUtils {
List<ChatMessageBean> limitList = new ArrayList<>();
if (msgBeanList != null && !msgBeanList.isEmpty()) {
for (ChatMessageBean bean : msgBeanList) {
if (bean.getMessageData().getMessage().getMsgType() == MsgTypeEnum.audio
|| bean.getMessageData().getMessage().getMsgType() == MsgTypeEnum.nrtc_netcall
|| bean.getMessageData().getMessage().getStatus() == MsgStatusEnum.fail) {
// if (bean.getMessageData().getMessage().getMsgType() == MsgTypeEnum.audio
// || bean.getMessageData().getMessage().getMsgType() == MsgTypeEnum.nrtc_netcall
// || bean.getMessageData().getMessage().getStatus() == MsgStatusEnum.fail) {
if (bean.getMessageData().getMessage().getMsgType() == MsgTypeEnum.nrtc_netcall
|| bean.getMessageData().getMessage().getStatus() == MsgStatusEnum.fail) {
limitList.add(bean);
}
}

View File

@@ -91,7 +91,7 @@ public class TeamNotificationHelper {
break;
case MuteTeamMember:
case SUPER_TEAM_MUTE_TLIST:
text = buildMuteTeamNotification(tid, (MuteMemberAttachment) attachment);
text = buildMuteTeamNotification(tid, fromUser,(MuteMemberAttachment) attachment);
break;
default:
text = getTeamMemberDisplayName(tid, fromUser) + ": unknown message";
@@ -349,12 +349,21 @@ public class TeamNotificationHelper {
buildMemberListString(tid, a.getTargets(), null));
}
private static String buildMuteTeamNotification(String tid, MuteMemberAttachment a) {
private static String buildMuteTeamNotification(String tid,UserInfo fromUser, MuteMemberAttachment a) {
if(a.getTargets().contains(IMKitClient.account())||fromUser.getAccount().equals(IMKitClient.account())) {
return buildMemberListString(tid, a.getTargets(), null)
+ IMKitClient.getApplicationContext().getString(R.string.chat_team_operate_by_manager)
+ (a.isMute()
? IMKitClient.getApplicationContext().getString(R.string.chat_team_mute)
: IMKitClient.getApplicationContext().getString(R.string.chat_team_un_mute));
}else{
return "";
}
return buildMemberListString(tid, a.getTargets(), null)
+ IMKitClient.getApplicationContext().getString(R.string.chat_team_operate_by_manager)
+ (a.isMute()
? IMKitClient.getApplicationContext().getString(R.string.chat_team_mute)
: IMKitClient.getApplicationContext().getString(R.string.chat_team_un_mute));
// return buildMemberListString(tid, a.getTargets(), null)
// + IMKitClient.getApplicationContext().getString(R.string.chat_team_operate_by_manager)
// + (a.isMute()
// ? IMKitClient.getApplicationContext().getString(R.string.chat_team_mute)
// : IMKitClient.getApplicationContext().getString(R.string.chat_team_un_mute));
}
}

View File

@@ -87,7 +87,7 @@ public class WatchTextMessageDialog extends BaseDialog {
LogUtils.i("XXXXXXXX","XXXXXXXXXXX222GIF");
String filePath = EmojiManager.getDrawablePath(viewBinding.getRoot().getContext(),messageInfo.getMessage().getContent());
if(filePath.contains("tlt_gif_")){
if(filePath!=null&&filePath.contains("tlt_gif_")){
filePath= filePath.replace("tlt_gif_","gtlt_gif_").replace(".png",".gif");
}

View File

@@ -87,7 +87,7 @@ public class HelpPayViewHolder extends FunChatBaseMessageViewHolder {
Intent intent = new Intent();
intent.putExtra("url", ChatKitUIConstant.ORDERDETAILS_URL+"payUid="+IMKitClient.account()+"&orderid="+orderId+"&payHeadImg="+IMKitClient.getUserInfo().getAvatar());
intent.putExtra("isGame", true);
intent.setClassName(context, "com.dskj.rbchat.game.JsBridgeActivity");
intent.setClassName(context, "com.hbl.lewan.game.JsBridgeActivity");
context.startActivity(intent);
}

View File

@@ -72,7 +72,7 @@ public class InviteGroupViewHolder extends FunChatBaseMessageViewHolder {
private void startDetails(String teamId, Context context) {
Intent intent = new Intent();
intent.putExtra("teamId", teamId);
intent.setClassName(context, "com.dskj.rbchat.imkit.team.TeamInvitedJoinActivity");
intent.setClassName(context, "com.hbl.lewan.imkit.team.TeamInvitedJoinActivity");
context.startActivity(intent);
}

View File

@@ -18,6 +18,7 @@ import android.view.View;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.netease.nim.highavailable.LogUtils;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.uinfo.UserService;
import com.netease.nimlib.sdk.uinfo.model.NimUserInfo;
@@ -26,9 +27,7 @@ import com.netease.yunxin.kit.chatkit.ui.common.ChatDataUtils;
import com.netease.yunxin.kit.chatkit.ui.common.GsonUtils;
import com.netease.yunxin.kit.chatkit.ui.common.RxBus;
import com.netease.yunxin.kit.chatkit.ui.databinding.ChatBaseMessageViewHolderBinding;
import com.netease.yunxin.kit.chatkit.ui.databinding.NormalChatMessageTextViewHolderBinding;
import com.netease.yunxin.kit.chatkit.ui.databinding.NormalChatMessageTipViewHolder1Binding;
import com.netease.yunxin.kit.chatkit.ui.databinding.NormalChatMessageTipViewHolderBinding;
import com.netease.yunxin.kit.chatkit.ui.databinding.RedpacketViewheadBinding;
import com.netease.yunxin.kit.chatkit.ui.dialog.RedPacketDialog;
import com.netease.yunxin.kit.chatkit.ui.model.ChatMessageBean;
@@ -54,7 +53,7 @@ public class RedPacketGetViewHolder extends ChatBaseMessageViewHolder {
public void addViewToMessageContainer() {
textBinding =
NormalChatMessageTipViewHolder1Binding.inflate(
LayoutInflater.from(parent.getContext()), getMessageContainer(), true);
LayoutInflater.from(parent.getContext()), getMessageTopGroup(), true);
}
@Override
@@ -84,16 +83,16 @@ public class RedPacketGetViewHolder extends ChatBaseMessageViewHolder {
currentMessage = message;
String name = message.getMessageData().getMessage().getAttachStr();
RedPacketShareBean circleShareBean = GsonUtils.getObjFromJSON(name, RedPacketShareBean.class);
Log.i("名片", "名片获取到的数据-10" + GsonUtils.beanToJSONString(message));
// Log.i("名片", "名片获取到的数据-10" + GsonUtils.beanToJSONString(message));
Log.i("名片", "名片获取到的数据00" + name);
Log.i("名片", "名片获取到的数据20" + GsonUtils.beanToJSONString(circleShareBean));
// Log.i("名片", "名片获取到的数据00" + name);
// Log.i("名片", "名片获取到的数据20" + GsonUtils.beanToJSONString(circleShareBean));
ChatDataUtils.set(textBinding.messageTipText.getContext(), "redpack_" + circleShareBean.data.getId(), Integer.parseInt(circleShareBean.data.getStatus()));
RxBus.getInstance().post(new RxHongBaoBean(circleShareBean.data.getId()));
textBinding.messageTipText.setGravity(Gravity.CENTER);
textBinding.messageTipText.setTextColor(
IMKitClient.getApplicationContext().getResources().getColor(R.color.color_999999));
Log.i("名片", "名片获取到的数据3" + circleShareBean.data.getGroupId());
// Log.i("名片", "名片获取到的数据3" + circleShareBean.data.getGroupId());
if (TextUtils.isEmpty(circleShareBean.data.getGroupId())) {
NimUserInfo user = NIMClient.getService(UserService.class).getUserInfo(circleShareBean.data.getReceiverUid() + "");
@@ -128,11 +127,17 @@ public class RedPacketGetViewHolder extends ChatBaseMessageViewHolder {
}
}
} else {
if((circleShareBean.data.getSenderUid()+"").equals(IMKitClient.account())||(circleShareBean.data.getCheckUserUid()+"").equals(IMKitClient.account())){
if((circleShareBean.data.getSenderUid()+"").equals(IMKitClient.account())
||(circleShareBean.data.getCheckUserUid()+"").equals(IMKitClient.account())){
textBinding.messageTipText.setVisibility(View.VISIBLE);
NimUserInfo user = NIMClient.getService(UserService.class).getUserInfo(circleShareBean.data.getCheckUserUid() + "");
// LogUtils.i("BIKAOVIDEO","BIKAOVIDEO11111");
if(user!=null) {
// LogUtils.i("BIKAOVIDEO","BIKAOVIDEO22222222");
if ((circleShareBean.data.getSenderUid() + "").equals(IMKitClient.account())) {
// LogUtils.i("BIKAOVIDEO","BIKAOVIDEO555555555");
String names = user.getName();
if(IMKitClient.account().equals(circleShareBean.data.getCheckUserUid()+"")){
names = textBinding.messageTipText.getResources().getString(R.string.ni_txt);
@@ -159,6 +164,8 @@ public class RedPacketGetViewHolder extends ChatBaseMessageViewHolder {
textBinding.messageTipText.setText(Html.fromHtml(String.format(nameG, names)));
}
} else {
// LogUtils.i("BIKAOVIDEO","BIKAOVIDEO666666666666");
NimUserInfo user1 = NIMClient.getService(UserService.class).getUserInfo(circleShareBean.data.getSenderUid() + "");
if (!TextUtils.isEmpty(circleShareBean.data.isReceiveEnd())&&circleShareBean.data.getCoinType().equals("0")) {
@@ -181,13 +188,57 @@ public class RedPacketGetViewHolder extends ChatBaseMessageViewHolder {
textBinding.messageTipText.setText(Html.fromHtml(String.format(nameG, user1.getName())));
}
}
}else{
// LogUtils.i("BIKAOVIDEO","BIKAOVIDEO3333333333");
}
}else{
// LogUtils.i("BIKAOVIDEO","BIKAOVIDEO44444444");
baseViewBinding.tvTimeMy.setVisibility(View.GONE);
baseViewBinding.tvTimeOther.setVisibility(View.GONE);
textBinding.messageTipText.setVisibility(View.GONE);
baseViewBinding.baseRoot.setVisibility(View.GONE);
textBinding.messageTipText.setVisibility(View.VISIBLE);
baseViewBinding.baseRoot.setVisibility(View.VISIBLE);
NimUserInfo user = NIMClient.getService(UserService.class).getUserInfo(circleShareBean.data.getCheckUserUid() + "");
if(user!=null) {
// LogUtils.i("BIKAOVIDEO","BIKAOVIDEO4444444422222222");
String names = user.getName();
if (circleShareBean.data.getCoinType().equals("0")) {
String nameG = String.format(textBinding.messageTipText.getResources().getString(R.string.s_font_color_fc605c_font_txt2),names,circleShareBean.data.getSenderNickname());
//
// if (!TextUtils.isEmpty(circleShareBean.data.isReceiveEnd()) && circleShareBean.data.isReceiveEnd().equals("1")) {
// nameG += textBinding.messageTipText.getResources().getString(R.string.hbylw_txt);
// }
textBinding.messageTipText.setText(Html.fromHtml(String.format(nameG)));
} else if (circleShareBean.data.getCoinType().equals("1")) {
// LogUtils.i("BIKAOVIDEO","BIKAOVIDEO44444444444444444");
// String nameG = textBinding.messageTipText.getResources().getString(R.string.s_font_color_629cff_font_txt);
String nameG = String.format(textBinding.messageTipText.getResources().getString(R.string.s_font_color_629cff_font_txt2),names,circleShareBean.data.getSenderNickname());
// if (!TextUtils.isEmpty(circleShareBean.data.isReceiveEnd()) && circleShareBean.data.isReceiveEnd().equals("1")) {
// nameG += textBinding.messageTipText.getResources().getString(R.string.hbylw_txt);
// }
textBinding.messageTipText.setText(Html.fromHtml(String.format(nameG)));
} else {
// String nameG = textBinding.messageTipText.getResources().getString(R.string.s_font_color_gift_font_txt);
String nameG = String.format(textBinding.messageTipText.getResources().getString(R.string.s_font_color_gift_font_txt2),names,circleShareBean.data.getSenderNickname());
// if (!TextUtils.isEmpty(circleShareBean.data.isReceiveEnd()) && circleShareBean.data.isReceiveEnd().equals("1")) {
// nameG += textBinding.messageTipText.getResources().getString(R.string.hbylw_txt);
// }
textBinding.messageTipText.setText(Html.fromHtml(String.format(nameG)));
}
}else{
// LogUtils.i("BIKAOVIDEO","BIKAOVIDEO444444443333333333333");
}
}
}

View File

@@ -148,7 +148,7 @@ public class RedPacketViewHolder extends ChatBaseMessageViewHolder {
@Override
public void toSumbit() {
Intent intent = new Intent();
intent.setClassName(context, "com.dskj.rbchat.main.mine.ChangeAccoutActionActivity");
intent.setClassName(context, "com.hbl.lewan.main.mine.ChangeAccoutActionActivity");
intent.putExtra("type", 1);
context.startActivity(intent);
}
@@ -250,7 +250,7 @@ public class RedPacketViewHolder extends ChatBaseMessageViewHolder {
}
if (groupBean.getStatus() > 0) {
Intent intent = new Intent();
intent.setClassName(binding.bigLy.getContext(), "com.dskj.rbchat.redpack.ReceiveRedPacketActivity");
intent.setClassName(binding.bigLy.getContext(), "com.hbl.lewan.redpack.ReceiveRedPacketActivity");
intent.putExtra("bean", groupBean);
intent.putExtra("isGroup", true);
intent.putExtra("name", groupBean.getSenderNickname() + "");
@@ -264,7 +264,7 @@ public class RedPacketViewHolder extends ChatBaseMessageViewHolder {
if ((groupBean.getGrabbers().get(i).getGrabberUid() + "").equals(IMKitClient.account())) {
isAt = true;
Intent intent = new Intent();
intent.setClassName(binding.bigLy.getContext(), "com.dskj.rbchat.redpack.ReceiveRedPacketActivity");
intent.setClassName(binding.bigLy.getContext(), "com.hbl.lewan.redpack.ReceiveRedPacketActivity");
intent.putExtra("bean", groupBean);
intent.putExtra("isGroup", true);
intent.putExtra("name", groupBean.getSenderNickname() + "");
@@ -294,7 +294,7 @@ public class RedPacketViewHolder extends ChatBaseMessageViewHolder {
}
if (data.getStatus() > 0 || ((data.getSenderUid() + "").equals(IMKitClient.account()))) {
Intent intent = new Intent();
intent.setClassName(binding.bigLy.getContext(), "com.dskj.rbchat.redpack.ReceiveRedPacketActivity");
intent.setClassName(binding.bigLy.getContext(), "com.hbl.lewan.redpack.ReceiveRedPacketActivity");
intent.putExtra("bean", data);
intent.putExtra("isGroup", false);
intent.putExtra("name", message.getMessageData().getMessage().getFromNick());

View File

@@ -139,7 +139,7 @@ public class TransferViewHolder extends ChatBaseMessageViewHolder {
}
}
Intent intent = new Intent();
intent.setClassName(binding.bigLy.getContext(), "com.dskj.rbchat.redpack.TransferInfoActivity");
intent.setClassName(binding.bigLy.getContext(), "com.hbl.lewan.redpack.TransferInfoActivity");
//Long id, Integer status, Integer amount, Integer senderUid, Integer receiverUid, String sendTime, String receiveTime, String remark, Integer coinType
TransferBean transferBean = new TransferBean(Long.parseLong(circleShareBean.data.getId()), Integer.parseInt(circleShareBean.data.getStatus()), Integer.parseInt(circleShareBean.data.getAmount()),
Integer.parseInt(circleShareBean.data.getSenderUid()), Integer.parseInt(circleShareBean.data.getReceiverUid()), circleShareBean.data.getSendTime(), circleShareBean.data.getReceiveTime(), circleShareBean.data.getRemark(),
@@ -252,7 +252,7 @@ public class TransferViewHolder extends ChatBaseMessageViewHolder {
@Override
public void toSumbit() {
Intent intent = new Intent();
intent.setClassName(context, "com.dskj.rbchat.main.mine.ChangeAccoutActionActivity");
intent.setClassName(context, "com.hbl.lewan.main.mine.ChangeAccoutActionActivity");
intent.putExtra("type", 1);
context.startActivity(intent);
}

View File

@@ -84,7 +84,7 @@ public class UserAlbumsViewHolder extends FunChatBaseMessageViewHolder {
private void startDetails(int id, String password, String userId, Context context) {
Intent intent = new Intent();
intent.setClassName(context, "com.dskj.rbchat.main.mine.photo.UserPhotoDetailsActivity");
intent.setClassName(context, "com.hbl.lewan.main.mine.photo.UserPhotoDetailsActivity");
intent.putExtra("albumId", id);
// intent.putExtra("password", password);
intent.putExtra("userId", userId);

View File

@@ -248,7 +248,7 @@ public class RedPacketDialog extends Dialog {
dismiss();
Intent intent = new Intent();
intent.setClassName(getContext(), "com.dskj.rbchat.redpack.ReceiveRedPacketActivity");
intent.setClassName(getContext(), "com.hbl.lewan.redpack.ReceiveRedPacketActivity");
intent.putExtra("bean", tuiMessageBean);
intent.putExtra("isGroup", false);
intent.putExtra("name", message.getMessageData().getMessage().getFromNick());
@@ -262,7 +262,7 @@ public class RedPacketDialog extends Dialog {
// ARouter.getInstance().build("/chat/receive_red_packet").withSerializable("bean", bean).withBoolean("isGroup", tuiMessageBean.isGroup()).withString("groupId", groupId).navigation();
Intent intent = new Intent();
intent.setClassName(getContext(), "com.dskj.rbchat.redpack.ReceiveRedPacketActivity");
intent.setClassName(getContext(), "com.hbl.lewan.redpack.ReceiveRedPacketActivity");
intent.putExtra("bean", redpacketGroupBean);
intent.putExtra("isGroup", true);
intent.putExtra("name", message.getMessageData().getMessage().getFromNick());

View File

@@ -66,7 +66,7 @@ public class ChatPopActionFactory {
boolean isManager = false;
public List<ChatPopMenuAction> getNormalActions(ChatMessageBean message) {
public List<ChatPopMenuAction> getNormalActions(ChatMessageBean message,int isManageNumber,int otherIsManageNumber,boolean isMute) {
List<ChatPopMenuAction> actions = new ArrayList<>();
if (message.getMessageData() == null) {
return actions;
@@ -102,12 +102,25 @@ public class ChatPopActionFactory {
actions.add(getCopyAction(message));
}
actions.add(getReplyAction(message));
if (message.getViewType() == MsgTypeEnum.audio.getValue()||message.getViewType() == MsgTypeEnum.custom.getValue()) {
// if (message.getViewType() == MsgTypeEnum.audio.getValue()||message.getViewType() == MsgTypeEnum.custom.getValue()) {
if (message.getViewType() == MsgTypeEnum.custom.getValue()) {
}else{
actions.add(getTransmitAction(message)); //转发
actions.add(getMultiSelectAction(message));
}
if ((imMessage.getSessionType() == SessionTypeEnum.Team || imMessage.getSessionType() == SessionTypeEnum.SUPER_TEAM)) {
if(isManager&&(isManageNumber==1||(isManageNumber>otherIsManageNumber&&otherIsManageNumber!=1))&&imMessage.getDirect() == MsgDirectionEnum.In) {
if (isMute) {
actions.add(getJieChuJinYanAction(message));
} else {
actions.add(getJinYanAction(message));
}
}
}
// if (message.getViewType() != MsgTypeEnum.location.getValue()) {
// actions.add(getPinAction(message));
// }
@@ -225,6 +238,31 @@ public class ChatPopActionFactory {
});
}
private ChatPopMenuAction getJinYanAction(ChatMessageBean message) {
return new ChatPopMenuAction(
ActionConstants.POP_ACTION_JINYAN_SELECT,
R.string.chat_team_mute,
R.drawable.jinyan_img,
(view, messageInfo) -> {
if (actionListener != null) {
actionListener.get().onJinYan(messageInfo);
}
});
}
private ChatPopMenuAction getJieChuJinYanAction(ChatMessageBean message) {
return new ChatPopMenuAction(
ActionConstants.POP_ACTION_JINYAN_SELECT,
R.string.chat_team_un_mute,
R.drawable.jinyan_img1,
(view, messageInfo) -> {
if (actionListener != null) {
actionListener.get().onJieChuJinYan(messageInfo);
}
});
}
private ChatPopMenuAction getCollectionAction(ChatMessageBean message) {
return new ChatPopMenuAction(
ActionConstants.POP_ACTION_COLLECTION,

View File

@@ -138,6 +138,7 @@ public abstract class FunChatFragment extends ChatBaseFragment {
@Override
protected void initData(Bundle bundle) {
// ToastX.showShortToast("111111111111");
EventCenter.registerEventNotify(cleanHistoryEvent);
EventCenter.registerEventNotify(chatDeleteEvent);
initCalendarView();
@@ -221,7 +222,7 @@ public abstract class FunChatFragment extends ChatBaseFragment {
viewBinding.chattopview.ivChatannouncement.setVisibility(View.VISIBLE);
} else if (sessionType == SessionTypeEnum.P2P) {
viewBinding.chattopview.ivChatcall.setVisibility(View.VISIBLE);
viewBinding.chattopview.ivChatcall.setVisibility(View.GONE);
viewBinding.chattopview.ivChatannouncement.setVisibility(View.GONE);
}
viewBinding.chattopview.ivChatsearch.setOnClickListener(view -> {

View File

@@ -111,7 +111,7 @@ public class FunChatP2PFragment extends FunChatFragment {
viewBinding.chattopview.ivChatcall.setVisibility(View.GONE);
getMessageBottomLayout().setShowBlackView();
} else {
viewBinding.chattopview.ivChatcall.setVisibility(View.VISIBLE);
viewBinding.chattopview.ivChatcall.setVisibility(View.GONE);
getMessageBottomLayout().setHideBlackView();
}
@@ -199,7 +199,7 @@ public class FunChatP2PFragment extends FunChatFragment {
}
chatView.getTitleBar().setVisibility(View.GONE);
viewBinding.chattopview.tvChattitle.setText(name);
viewBinding.chattopview.ivChatcall.setVisibility(View.VISIBLE);
viewBinding.chattopview.ivChatcall.setVisibility(View.GONE);
viewBinding.chattopview.ivChatannouncement.setVisibility(View.GONE);
viewBinding.chattopview.ivChatsetting.setVisibility(View.VISIBLE);
getMessageBottomLayout().setShowInit();

View File

@@ -16,6 +16,7 @@ import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewTreeObserver;
@@ -38,22 +39,28 @@ import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nimlib.sdk.team.TeamService;
import com.netease.nimlib.sdk.team.constant.TeamFieldEnum;
import com.netease.nimlib.sdk.team.constant.TeamMemberType;
import com.netease.nimlib.sdk.team.model.Team;
import com.netease.nimlib.sdk.team.model.TeamMember;
import com.netease.yunxin.kit.alog.ALog;
import com.netease.yunxin.kit.chatkit.model.IMMessageInfo;
import com.netease.yunxin.kit.chatkit.model.IMTeamMessageReceiptInfo;
import com.netease.yunxin.kit.chatkit.model.TeamWithCurrentMember;
import com.netease.yunxin.kit.chatkit.model.UserInfoWithTeam;
import com.netease.yunxin.kit.chatkit.repo.TeamRepo;
import com.netease.yunxin.kit.chatkit.ui.ChatKitUIConstant;
import com.netease.yunxin.kit.chatkit.ui.R;
import com.netease.yunxin.kit.chatkit.ui.common.ChatDataUtils;
import com.netease.yunxin.kit.chatkit.ui.common.ChatUtils;
import com.netease.yunxin.kit.chatkit.ui.common.GsonUtils;
import com.netease.yunxin.kit.chatkit.ui.common.RxBus;
import com.netease.yunxin.kit.chatkit.ui.data.entity.ChatDraftData;
import com.netease.yunxin.kit.chatkit.ui.databinding.FunChatSearchViewHolderBinding;
import com.netease.yunxin.kit.chatkit.ui.fun.view.MessageBottomLayout;
import com.netease.yunxin.kit.chatkit.ui.fun.viewholder.FunSearchMessageViewHolder;
import com.netease.yunxin.kit.chatkit.ui.model.ChatMessageBean;
import com.netease.yunxin.kit.chatkit.ui.model.CleanHistoryEvent;
import com.netease.yunxin.kit.chatkit.ui.model.RxBusToVoom;
import com.netease.yunxin.kit.chatkit.ui.model.TeamExtensionBean;
import com.netease.yunxin.kit.chatkit.ui.model.UpdateTeamEvent;
import com.netease.yunxin.kit.chatkit.ui.model.ait.AitBlock;
@@ -72,8 +79,11 @@ import com.netease.yunxin.kit.common.utils.SizeUtils;
import com.netease.yunxin.kit.corekit.event.EventCenter;
import com.netease.yunxin.kit.corekit.event.EventNotify;
import com.netease.yunxin.kit.corekit.im.IMKitClient;
import com.netease.yunxin.kit.corekit.im.provider.FetchCallback;
import com.netease.yunxin.kit.corekit.im.utils.IMKitConstant;
import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
import com.netease.yunxin.kit.corekit.model.ErrorMsg;
import com.netease.yunxin.kit.corekit.model.ResultInfo;
import com.netease.yunxin.kit.corekit.route.XKitRouter;
import org.json.JSONException;
@@ -83,6 +93,7 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
public class FunChatTeamFragment extends FunChatFragment {
@@ -94,6 +105,7 @@ public class FunChatTeamFragment extends FunChatFragment {
@Override
protected void initData(Bundle bundle) {
// ToastX.showShortToast("111111111111111");
ALog.d(LIB_TAG, TAG, "initData");
sessionType = SessionTypeEnum.Team;
@@ -105,7 +117,13 @@ public class FunChatTeamFragment extends FunChatFragment {
}
if (TextUtils.isEmpty(sessionID)) {
sessionID = teamInfo.getId();
}
if (!TextUtils.isEmpty(sessionID)) {
getUserType(sessionID);
}
anchorMessage = (IMMessage) bundle.getSerializable(RouterConstant.KEY_MESSAGE);
// chatView
// .getTitleBar()
@@ -171,8 +189,111 @@ public class FunChatTeamFragment extends FunChatFragment {
}
super.initData(bundle);
RxBus.getInstance().toObservable(Integer.class)
.subscribeOn(rx.schedulers.Schedulers.io())
.unsubscribeOn(rx.schedulers.Schedulers.io())
.subscribe(changeImageViewBean -> {//回顶部
if(changeImageViewBean == -99999){
if(!TextUtils.isEmpty(sessionID)){
getUserType(sessionID);
}
}
});
}
@Override
public void onResume() {
super.onResume();
if(!TextUtils.isEmpty(sessionID)){
getUserType(sessionID);
}
}
private void getUserType(String id) {
// Log.i("LAILIAOLIAO","LAILIAOLIAO 乱七八糟:"+id);
TeamRepo.queryTeamWithMember(
id,
Objects.requireNonNull(IMKitClient.account()),
new FetchCallback<TeamWithCurrentMember>() {
@Override
public void onSuccess(@Nullable TeamWithCurrentMember param) {
ALog.d(LIB_TAG, TAG, "requestTeamData,onSuccess:" + (param == null));
if(param!=null&&param.getTeamMember()!=null){
if(param.getTeamMember().getType() == TeamMemberType.Manager){
isManage = 2;
}else if(param.getTeamMember().getType() == TeamMemberType.Owner){
isManage = 1;
}else {
isManage = 0;
}
if(param.getTeamMember().isMute()){
getMessageBottomLayout().setShowTeamJinYan();
}else{
getMessageBottomLayout().setHideBlackView();
}
}else{
isManage = 0;
}
}
@Override
public void onFailed(int code) {
}
@Override
public void onException(@Nullable Throwable exception) {
}
});
// NIMClient.getService(TeamService.class).queryTeamMember(id, IMKitClient.account()).setCallback(new RequestCallback<TeamMember>() {
// @Override
// public void onSuccess(TeamMember members) {
// Log.i("LAILIAOLIAO","LAILIAOLIAO 乱七八糟:"+GsonUtils.beanToJSONString(members));
// if(members!=null){
// if(members.getType() == TeamMemberType.Manager){
// isManage = 2;
// }else if(members.getType() == TeamMemberType.Owner){
// isManage = 1;
// }else {
// isManage = 0;
// }
//
// if(members.isMute()){
// getMessageBottomLayout().setShowTeamJinYan();
// }
//
// }else{
// isManage = 0;
// }
//
//
//
// }
//
// @Override
// public void onFailed(int code) {
// // 撤销群管理员失败
//// Log.i("LAILIAOLIAO","LAILIAOLIAO 乱七八糟:"+code);
//
// }
//
// @Override
// public void onException(Throwable exception) {
// // 错误
//// Log.i("LAILIAOLIAO","LAILIAOLIAO 乱七八糟:"+exception.getMessage());
//
// }
// });
}
//
// private void getJinYan(String teamId){
//
// }
public TeamExtensionBean extensionBean;
private void refreshView() {

View File

@@ -577,6 +577,13 @@ public class MessageBottomLayout extends FrameLayout
});
}
public void setShowTeamJinYan() {
hideCurrentInput();
mBinding.tvChatblack.setText(R.string.ninyibeijinyan_txt);
mBinding.layoutChatblack.setVisibility(VISIBLE);
mBinding.layoutChatblack.setOnClickListener(view -> {
});
}
public void setShowIsNotFriend() {
hideCurrentInput();
mBinding.tvChatblack.setText(getResources().getString(R.string.not_friend_chat_tv));

View File

@@ -67,11 +67,11 @@ public class FunBottomActionFactory {
actions.add(new ActionItem(ActionConstants.ACTION_TYPE_MINGPIAN, R.drawable.ic_action_mingpian, R.string.mingpian_txt));
}
}
actions.add(
new ActionItem(
ActionConstants.ACTION_TYPE_LOCATION,
R.drawable.ic_location1,
R.string.chat_message_location));
// actions.add(
// new ActionItem(
// ActionConstants.ACTION_TYPE_LOCATION,
// R.drawable.ic_location1,
// R.string.chat_message_location));
actions.add(new ActionItem(ActionConstants.ACTION_TYPE_ALBUMS, R.drawable.ic_action_share_albums, R.string.sharealbums_txt));
if (getConfig(IMKitClient.getApplicationContext(), "redpkg_score", false)) { //积分赠送
//礼品积分红包

View File

@@ -17,6 +17,8 @@ import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.netease.nim.highavailable.LogUtils;
import com.netease.yunxin.kit.chatkit.ui.IChatFactory;
import com.netease.yunxin.kit.chatkit.ui.databinding.ChatBaseMessageViewHolderBinding;
import com.netease.yunxin.kit.chatkit.ui.fun.view.message.viewholder.ChatAudioMessageViewHolder;
@@ -54,6 +56,10 @@ public abstract class ChatMessageViewHolderFactory implements IChatFactory {
ChatBaseMessageViewHolderBinding viewHolderBinding =
ChatBaseMessageViewHolderBinding.inflate(
LayoutInflater.from(parent.getContext()), parent, false);
// LogUtils.i("BIKAOVIDEO","BIKAOVIDEO结果是啥类型"+viewType);
if (viewType == NORMAL_MESSAGE_VIEW_TYPE_AUDIO) {
viewHolder = new ChatAudioMessageViewHolder(viewHolderBinding, viewType);
} else if (viewType == NORMAL_MESSAGE_VIEW_TYPE_IMAGE) {

View File

@@ -12,10 +12,13 @@ import android.view.View;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.netease.nim.highavailable.LogUtils;
import com.netease.nimlib.sdk.msg.attachment.NotificationAttachment;
import com.netease.nimlib.sdk.msg.attachment.NotificationAttachmentWithExtension;
import com.netease.yunxin.kit.chatkit.ui.R;
import com.netease.yunxin.kit.chatkit.ui.common.TeamNotificationHelper;
import com.netease.yunxin.kit.chatkit.ui.databinding.ChatBaseMessageViewHolderBinding;
import com.netease.yunxin.kit.chatkit.ui.databinding.FunChatMessageTextViewHolder1Binding;
import com.netease.yunxin.kit.chatkit.ui.databinding.FunChatMessageTextViewHolderBinding;
import com.netease.yunxin.kit.chatkit.ui.model.ChatMessageBean;
import com.netease.yunxin.kit.chatkit.ui.view.input.ActionConstants;
@@ -30,7 +33,7 @@ public class ChatNotificationMessageViewHolder extends FunChatBaseMessageViewHol
private static final String LOG_TAG = "ChatNotificationMessageViewHolder";
FunChatMessageTextViewHolderBinding textBinding;
FunChatMessageTextViewHolder1Binding textBinding;
public ChatNotificationMessageViewHolder(
@NonNull ChatBaseMessageViewHolderBinding parent, int viewType) {
@@ -40,7 +43,7 @@ public class ChatNotificationMessageViewHolder extends FunChatBaseMessageViewHol
@Override
public void addViewToMessageContainer() {
textBinding =
FunChatMessageTextViewHolderBinding.inflate(
FunChatMessageTextViewHolder1Binding.inflate(
LayoutInflater.from(parent.getContext()), getMessageTopGroup(), true);
}
@@ -82,23 +85,36 @@ public class ChatNotificationMessageViewHolder extends FunChatBaseMessageViewHol
private void loadData(ChatMessageBean message, ChatMessageBean lastMessage, boolean refreshTime) {
if (message.getMessageData().getMessage().getAttachment()
instanceof NotificationAttachmentWithExtension) {
instanceof NotificationAttachment) {
textBinding.messageText.setGravity(Gravity.CENTER);
textBinding.messageText.setTextColor(
IMKitClient.getApplicationContext().getResources().getColor(R.color.color_999999));
textBinding.messageText.setTextSize(12);
String content = TeamNotificationHelper.getTeamNotificationText(message.getMessageData());
textBinding.messageText.setText(content);
// LogUtils.i("BIKAOVIDEO","BIKAOVIDEO结果是啥"+content);
if (TextUtils.isEmpty(content)) {
baseViewBinding.baseRoot.setVisibility(View.GONE);
textBinding.messageText.setVisibility(View.GONE);
setVisibility(false);
} else {
baseViewBinding.baseRoot.setVisibility(View.VISIBLE);
textBinding.messageText.setVisibility(View.VISIBLE);
setVisibility(true);
if (lastMessage == null && refreshTime) {
setTime(message, null);
// setTime(message, null);
baseViewBinding.otherUserAvatar.setVisibility(View.GONE);
baseViewBinding.myAvatar.setVisibility(View.GONE);
baseViewBinding.messageStatus.setVisibility(View.GONE);
baseViewBinding.tvTimeMy.setVisibility(View.GONE);
baseViewBinding.tvTimeOther.setVisibility(View.GONE);
}
}
} else {
baseViewBinding.baseRoot.setVisibility(View.GONE);
textBinding.messageText.setVisibility(View.GONE);
setVisibility(false);
}
}
}

View File

@@ -62,8 +62,9 @@ public class ChatTextMessageViewHolder extends FunChatBaseMessageViewHolder {
textBinding.messageText.setVisibility(View.GONE);
textBinding.messageTextGif.setVisibility(View.VISIBLE);
LogUtils.i("XXXXXXXX","XXXXXXXXXXX222GIF");
String filePath = EmojiManager.getDrawablePath(textBinding.getRoot().getContext(),message.getMessageData().getMessage().getContent());
if(filePath.contains("tlt_gif_")){
if(filePath!=null&&filePath.contains("tlt_gif_")){
filePath= filePath.replace("tlt_gif_","gtlt_gif_").replace(".png",".gif");
}
Glide.with(textBinding.getRoot().getContext()).load("file:///android_asset/"+filePath)

View File

@@ -11,6 +11,8 @@ import android.view.LayoutInflater;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.netease.nim.highavailable.LogUtils;
import com.netease.yunxin.kit.chatkit.ui.R;
import com.netease.yunxin.kit.chatkit.ui.databinding.ChatBaseMessageViewHolderBinding;
import com.netease.yunxin.kit.chatkit.ui.databinding.FunChatMessageTipViewHolderBinding;
@@ -72,11 +74,17 @@ public class ChatTipsMessageViewHolder extends FunChatBaseMessageViewHolder {
IMKitClient.getApplicationContext().getResources().getColor(R.color.color_999999));
textBinding.messageTipText.setTextSize(12);
textBinding.messageTipText.setText(content);
// LogUtils.i("BIKAOVIDEO","BIKAOVIDEO结果是啥1111"+content);
if (lastMessage == null) {
setTime(message, null);
}
baseViewBinding.baseRoot.setVisibility(View.VISIBLE);
setVisibility(true);
} else {
baseViewBinding.baseRoot.setVisibility(View.GONE);
setVisibility(false);
}
}
}

View File

@@ -10,10 +10,12 @@ import android.text.style.ImageSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;
import com.netease.nim.highavailable.LogUtils;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
@@ -78,6 +80,23 @@ public class FunChatBaseMessageViewHolder extends ChatBaseMessageViewHolder {
baseViewBinding.llSignal.setLayoutParams(signalLayoutParams);
}
public void setVisibility(boolean visible) {
RecyclerView.LayoutParams param = (RecyclerView.LayoutParams) itemView.getLayoutParams();
if (visible) {
param.height = LinearLayout.LayoutParams.WRAP_CONTENT;
param.width = LinearLayout.LayoutParams.MATCH_PARENT;
itemView.setLayoutParams(param);
itemView.setVisibility(View.VISIBLE);
} else {
param.height = 0;
param.width = 0;
itemView.setLayoutParams(param);
itemView.setVisibility(View.GONE);
}
}
@Override
protected void setUserInfo(ChatMessageBean message) {
// 修改用户头像

View File

@@ -49,13 +49,13 @@ public interface ApiService {
/**
* 正式环境
*/
// String URL = "https://api.letschat2023.com/";
String URL = "https://api.hnsdl.com/";
/**
* 测试环境
*/
String URL = "https://api-test.letschat2023.com/";
// String URL = "https://8.217.244.135:8001/";
// String URL = "https://api-test.letschat2023.com/";
// String URL = "https://api-test.hnsdl.com/";
String SUBSTATIONID = "1703655363476242434";

View File

@@ -16,6 +16,7 @@ import com.netease.yunxin.kit.chatkit.ui.databinding.NormalChatFragmentBinding;
import com.netease.yunxin.kit.chatkit.ui.dialog.ChatBaseForwardSelectDialog;
import com.netease.yunxin.kit.chatkit.ui.normal.ChatMessageForwardSelectDialog;
import com.netease.yunxin.kit.chatkit.ui.page.fragment.ChatBaseFragment;
import com.netease.yunxin.kit.common.ui.utils.ToastX;
import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
public abstract class NormalChatFragment extends ChatBaseFragment {
@@ -56,7 +57,9 @@ public abstract class NormalChatFragment extends ChatBaseFragment {
}
@Override
protected void initData(Bundle bundle) {}
protected void initData(Bundle bundle) {
// ToastX.showShortToast("2222222222222222");
}
@Override
public String getUserInfoRoutePath() {

View File

@@ -43,11 +43,11 @@ public class BottomActionFactory {
ActionConstants.ACTION_TYPE_CAMERA,
R.drawable.ic_shoot1,
R.string.chat_message_more_shoot));
actions.add(
new ActionItem(
ActionConstants.ACTION_TYPE_LOCATION,
R.drawable.ic_location1,
R.string.chat_message_location));
// actions.add(
// new ActionItem(
// ActionConstants.ACTION_TYPE_LOCATION,
// R.drawable.ic_location1,
// R.string.chat_message_location));
// actions.add(
// new ActionItem(
// ActionConstants.ACTION_TYPE_FILE, R.drawable.ic_send_file, R.string.chat_message_file));

View File

@@ -10,6 +10,8 @@ import android.view.LayoutInflater;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.netease.nim.highavailable.LogUtils;
import com.netease.nimlib.sdk.msg.attachment.NotificationAttachmentWithExtension;
import com.netease.yunxin.kit.chatkit.ui.R;
import com.netease.yunxin.kit.chatkit.ui.common.TeamNotificationHelper;
@@ -36,7 +38,7 @@ public class ChatNotificationMessageViewHolder extends NormalChatBaseMessageView
public void addViewToMessageContainer() {
textBinding =
NormalChatMessageTextViewHolderBinding.inflate(
LayoutInflater.from(parent.getContext()), getMessageContainer(), true);
LayoutInflater.from(parent.getContext()), getMessageTopGroup(), true);
}
@Override
@@ -58,15 +60,15 @@ public class ChatNotificationMessageViewHolder extends NormalChatBaseMessageView
@Override
protected void onLayoutConfig(ChatMessageBean messageBean) {
ConstraintLayout.LayoutParams messageContainerLayoutParams =
(ConstraintLayout.LayoutParams) baseViewBinding.messageContainer.getLayoutParams();
ConstraintLayout.LayoutParams messageTopLayoutParams =
(ConstraintLayout.LayoutParams) baseViewBinding.messageTopGroup.getLayoutParams();
ConstraintLayout.LayoutParams messageBottomLayoutParams =
(ConstraintLayout.LayoutParams) baseViewBinding.messageBottomGroup.getLayoutParams();
messageContainerLayoutParams.horizontalBias = 0.5f;
messageTopLayoutParams.horizontalBias = 0.5f;
messageBottomLayoutParams.horizontalBias = 0.5f;
// ConstraintLayout.LayoutParams messageContainerLayoutParams =
// (ConstraintLayout.LayoutParams) baseViewBinding.messageContainer.getLayoutParams();
// ConstraintLayout.LayoutParams messageTopLayoutParams =
// (ConstraintLayout.LayoutParams) baseViewBinding.messageTopGroup.getLayoutParams();
// ConstraintLayout.LayoutParams messageBottomLayoutParams =
// (ConstraintLayout.LayoutParams) baseViewBinding.messageBottomGroup.getLayoutParams();
// messageContainerLayoutParams.horizontalBias = 0.5f;
// messageTopLayoutParams.horizontalBias = 0.5f;
// messageBottomLayoutParams.horizontalBias = 0.5f;
}
@Override
@@ -84,16 +86,23 @@ public class ChatNotificationMessageViewHolder extends NormalChatBaseMessageView
textBinding.messageText.setTextSize(12);
String content = TeamNotificationHelper.getTeamNotificationText(message.getMessageData());
textBinding.messageText.setText(content);
LogUtils.i("BIKAOVIDEO","BIKAOVIDEO结果是啥11111111"+content);
if (TextUtils.isEmpty(content)) {
baseViewBinding.baseRoot.setVisibility(View.GONE);
textBinding.messageText.setVisibility(View.GONE);
setVisibility(false);
} else {
baseViewBinding.baseRoot.setVisibility(View.VISIBLE);
textBinding.messageText.setVisibility(View.VISIBLE);
setVisibility(true);
if (lastMessage == null && refreshTime) {
setTime(message, null);
}
}
} else {
baseViewBinding.baseRoot.setVisibility(View.GONE);
textBinding.messageText.setVisibility(View.GONE);
setVisibility(false);
}
}
}

View File

@@ -33,7 +33,7 @@ public class ChatTipsMessageViewHolder extends NormalChatBaseMessageViewHolder {
public void addViewToMessageContainer() {
textBinding =
NormalChatMessageTipViewHolderBinding.inflate(
LayoutInflater.from(parent.getContext()), getMessageContainer(), true);
LayoutInflater.from(parent.getContext()), getMessageTopGroup(), true);
}
@Override
@@ -75,8 +75,13 @@ public class ChatTipsMessageViewHolder extends NormalChatBaseMessageViewHolder {
if (lastMessage == null) {
setTime(message, null);
}
baseViewBinding.baseRoot.setVisibility(View.VISIBLE);
setVisibility(true);
} else {
baseViewBinding.baseRoot.setVisibility(View.GONE);
setVisibility(false);
}
}
}

View File

@@ -8,9 +8,13 @@ import android.text.TextUtils;
import android.text.style.ImageSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;
import com.netease.nimlib.sdk.msg.model.MsgThreadOption;
import com.netease.yunxin.kit.alog.ALog;
import com.netease.yunxin.kit.chatkit.model.IMMessageInfo;
@@ -104,6 +108,21 @@ public class NormalChatBaseMessageViewHolder extends ChatBaseMessageViewHolder {
}
}
public void setVisibility(boolean visible) {
RecyclerView.LayoutParams param = (RecyclerView.LayoutParams) itemView.getLayoutParams();
if (visible) {
param.height = LinearLayout.LayoutParams.WRAP_CONTENT;
param.width = LinearLayout.LayoutParams.MATCH_PARENT;
itemView.setLayoutParams(param);
itemView.setVisibility(View.VISIBLE);
} else {
param.height = 0;
param.width = 0;
itemView.setLayoutParams(param);
itemView.setVisibility(View.GONE);
}
}
@Override
protected void onLayoutConfig(ChatMessageBean messageBean) {
super.onLayoutConfig(messageBean);

View File

@@ -301,11 +301,11 @@ public abstract class ChatPinBaseActivity extends BaseActivity {
new ActionItem(ACTION_COPY_PIN, 0, R.string.chat_message_action_copy)
.setTitleColorResId(R.color.color_333333));
}
if (messageInfo.getViewType() != MsgTypeEnum.audio.getValue()) {
// if (messageInfo.getViewType() != MsgTypeEnum.audio.getValue()) {
actions.add(
new ActionItem(ACTION_TRANSMIT_PIN, 0, R.string.chat_message_action_transmit)
.setTitleColorResId(R.color.color_333333));
}
// }
return actions;
}

View File

@@ -5,6 +5,7 @@
package com.netease.yunxin.kit.chatkit.ui.page.fragment;
import static com.netease.yunxin.kit.chatkit.ui.ChatKitUIConstant.LIB_TAG;
import static com.netease.yunxin.kit.chatkit.ui.ChatMessageType.NOTICE_MESSAGE_VIEW_TYPE;
import static com.netease.yunxin.kit.chatkit.ui.view.input.ActionConstants.PAYLOAD_REFRESH_AUDIO_ANIM;
import static com.netease.yunxin.kit.corekit.im.utils.RouterConstant.REQUEST_CONTACT_SELECTOR_KEY;
@@ -71,8 +72,10 @@ import com.netease.nimlib.sdk.msg.MessageBuilder;
import com.netease.nimlib.sdk.msg.MsgService;
import com.netease.nimlib.sdk.msg.attachment.MsgAttachment;
import com.netease.nimlib.sdk.msg.attachment.NetCallAttachment;
import com.netease.nimlib.sdk.msg.attachment.NotificationAttachment;
import com.netease.nimlib.sdk.msg.constant.MsgStatusEnum;
import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum;
import com.netease.nimlib.sdk.msg.constant.NotificationType;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.AttachmentProgress;
import com.netease.nimlib.sdk.msg.model.GetMessageDirectionEnum;
@@ -82,6 +85,8 @@ import com.netease.nimlib.sdk.msg.model.QueryDirectionEnum;
import com.netease.nimlib.sdk.msg.model.RecentContact;
import com.netease.nimlib.sdk.team.TeamService;
import com.netease.nimlib.sdk.team.constant.TeamMemberType;
import com.netease.nimlib.sdk.team.constant.TeamMessageNotifyTypeEnum;
import com.netease.nimlib.sdk.team.model.MuteMemberAttachment;
import com.netease.nimlib.sdk.team.model.Team;
import com.netease.nimlib.sdk.team.model.TeamMember;
import com.netease.nimlib.sdk.uinfo.UserService;
@@ -290,6 +295,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
public boolean isGuanFang;
public int isManage = 0;
@Nullable
@Override
public View onCreateView(
@@ -848,7 +854,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
}
Intent intent = new Intent();
intent.setClassName(getContext(), "com.dskj.rbchat.redpack.SendRedPacketActivity");
intent.setClassName(getContext(), "com.hbl.lewan.redpack.SendRedPacketActivity");
intent.putExtra("receiverUid", sessionID);
intent.putExtra("isGroup", sessionType != SessionTypeEnum.P2P);
startActivityForResult(intent, 456);
@@ -871,7 +877,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
showDialogPay();
} else {
Intent intent = new Intent();
intent.setClassName(getContext(), "com.dskj.rbchat.redpack.SendGiftRedPacketActivity");
intent.setClassName(getContext(), "com.hbl.lewan.redpack.SendGiftRedPacketActivity");
intent.putExtra("receiverUid", sessionID);
intent.putExtra("isGroup", sessionType != SessionTypeEnum.P2P);
startActivityForResult(intent, 456);
@@ -905,7 +911,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
}
Intent intent = new Intent();
intent.setClassName(getContext(), "com.dskj.rbchat.redpack.TransferAccountsActivity");
intent.setClassName(getContext(), "com.hbl.lewan.redpack.TransferAccountsActivity");
intent.putExtra("receiverUid", sessionID);
startActivityForResult(intent, 457);
}
@@ -932,7 +938,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
}
Intent intent = new Intent();
intent.setClassName(getContext(), "com.dskj.rbchat.redpack.TransferAccountsActivity");
intent.setClassName(getContext(), "com.hbl.lewan.redpack.TransferAccountsActivity");
intent.putExtra("type", true);
intent.putExtra("receiverUid", sessionID);
startActivityForResult(intent, 457);
@@ -1493,7 +1499,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
@Override
public void toSumbit() {
Intent intent = new Intent();
intent.setClassName(getContext(), "com.dskj.rbchat.main.mine.ChangeAccoutActionActivity");
intent.setClassName(getContext(), "com.hbl.lewan.main.mine.ChangeAccoutActionActivity");
intent.putExtra("type", 1);
startActivity(intent);
}
@@ -1534,7 +1540,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
@Override
public void toSumbit() {
Intent intent = new Intent();
intent.setClassName(getContext(), "com.dskj.rbchat.wallet.SetPayPasswordActivity");
intent.setClassName(getContext(), "com.hbl.lewan.wallet.SetPayPasswordActivity");
startActivity(intent);
}
@@ -1614,7 +1620,47 @@ public abstract class ChatBaseFragment extends BaseFragment {
}
int[] location = new int[2];
chatView.getMessageListView().getLocationOnScreen(location);
popMenu.show(view, messageBean, location[1]);
if ((sessionType == SessionTypeEnum.SUPER_TEAM || sessionType == SessionTypeEnum.Team)) {
NIMClient.getService(TeamService.class).queryTeamMember(sessionID,messageBean.getMessageData().getFromUser().getAccount()).setCallback(new RequestCallback<TeamMember>() {
@Override
public void onSuccess(TeamMember members) {
// Log.i("LAILIAOLIAO","LAILIAOLIAO 乱七八糟:"+GsonUtils.beanToJSONString(members));
if(members!=null){
if(members.getType() == TeamMemberType.Manager){
popMenu.show(view, messageBean, location[1],isManage,2,members.isMute());
}else if(members.getType() == TeamMemberType.Owner){
popMenu.show(view, messageBean, location[1],isManage,1,members.isMute());
}else {
popMenu.show(view, messageBean, location[1],isManage,0,members.isMute());
}
}else{
popMenu.show(view, messageBean, location[1],isManage,0,members.isMute());
}
}
@Override
public void onFailed(int code) {
// 撤销群管理员失败
// Log.i("LAILIAOLIAO","LAILIAOLIAO 乱七八糟:"+code);
}
@Override
public void onException(Throwable exception) {
// 错误
// Log.i("LAILIAOLIAO","LAILIAOLIAO 乱七八糟:"+exception.getMessage());
}
});
}else{
popMenu.show(view, messageBean, location[1],0,0,false);
}
}
return true;
}
@@ -1646,44 +1692,62 @@ public abstract class ChatBaseFragment extends BaseFragment {
|| !delegateListener.onUserIconClick(view, position, messageBean)) {
// Log.i("点击了去用户详情页", "点击了去用户详情页:" + messageBean.getMessageData().getMessage().getFromAccount());
if (!isServices) {
//如果是群,且群不允许群内添加好友 当前登录用户不是群主以及userid 也不是群主 直接跳过
if ((sessionType == SessionTypeEnum.SUPER_TEAM || sessionType == SessionTypeEnum.Team)
&& isAllowAd == 0
&& teamInfo != null && !teamInfo.getCreator().equals(IMKitClient.account())
&& !teamInfo.getCreator().equals(messageBean.getMessageData().getMessage().getFromAccount())) {
NIMClient.getService(TeamService.class).queryTeamMember(teamInfo.getId(), messageBean.getMessageData().getMessage().getFromAccount()).setCallback(new RequestCallback<TeamMember>() {
@Override
public void onSuccess(TeamMember members) {
if(members!=null){
if(members.getType() == TeamMemberType.Manager){
XKitRouter.withKey(getUserInfoRoutePath())
.withContext(view.getContext())
.withParam(
"uid",
messageBean.getMessageData().getMessage().getFromAccount())
.withParam("userId", messageBean.getMessageData().getMessage().getFromAccount())
.withParam("isGroup", (sessionType == SessionTypeEnum.Team || sessionType == SessionTypeEnum.SUPER_TEAM))
.withParam("teamId", (sessionType == SessionTypeEnum.Team || sessionType == SessionTypeEnum.SUPER_TEAM) ? messageBean.getMessageData().getMessage().getSessionId() : "")
.navigate();
//如果是群,且群不允许群内添加好友 当前登录用户不是群主以及userid 也不是群主 直接跳过
if ((sessionType == SessionTypeEnum.SUPER_TEAM || sessionType == SessionTypeEnum.Team)) {
if(teamInfo!=null&&isManage>0){
XKitRouter.withKey(getUserInfoRoutePath())
.withContext(view.getContext())
.withParam(
"uid",
messageBean.getMessageData().getMessage().getFromAccount())
.withParam("userId", messageBean.getMessageData().getMessage().getFromAccount())
.withParam("isGroup", (sessionType == SessionTypeEnum.Team || sessionType == SessionTypeEnum.SUPER_TEAM))
.withParam("teamId", (sessionType == SessionTypeEnum.Team || sessionType == SessionTypeEnum.SUPER_TEAM) ? messageBean.getMessageData().getMessage().getSessionId() : "")
.navigate();
return false;
}
if (isAllowAd == 0 && teamInfo != null && !teamInfo.getCreator().equals(IMKitClient.account())
&& !teamInfo.getCreator().equals(messageBean.getMessageData().getMessage().getFromAccount())) {
NIMClient.getService(TeamService.class).queryTeamMember(teamInfo.getId(),
messageBean.getMessageData().getMessage().getFromAccount()).setCallback(new RequestCallback<TeamMember>() {
@Override
public void onSuccess(TeamMember members) {
if (members != null) {
if (members.getType() == TeamMemberType.Manager) {
XKitRouter.withKey(getUserInfoRoutePath())
.withContext(view.getContext())
.withParam(
"uid",
messageBean.getMessageData().getMessage().getFromAccount())
.withParam("userId", messageBean.getMessageData().getMessage().getFromAccount())
.withParam("isGroup", (sessionType == SessionTypeEnum.Team || sessionType == SessionTypeEnum.SUPER_TEAM))
.withParam("teamId", (sessionType == SessionTypeEnum.Team || sessionType == SessionTypeEnum.SUPER_TEAM) ? messageBean.getMessageData().getMessage().getSessionId() : "")
.navigate();
}
}
}
}
@Override
public void onFailed(int code) {
// 撤销群管理员失败
@Override
public void onFailed(int code) {
// 撤销群管理员失败
}
}
@Override
public void onException(Throwable exception) {
// 错误
}
});
@Override
public void onException(Throwable exception) {
// 错误
}
});
return false;
return false;
}
}
XKitRouter.withKey(getUserInfoRoutePath())
.withContext(view.getContext())
@@ -2011,18 +2075,13 @@ public abstract class ChatBaseFragment extends BaseFragment {
.withParam("isGroup", sessionType != SessionTypeEnum.P2P)
.withParam("userId", businessShareBean.data.getAccout())
.navigate();
// XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
// .withContext(getActivity())
// .withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, businessShareBean.data.getAccout())
// .withParam("userId", businessShareBean.data.getAccout())
// .navigate();
}
break;
case ChatMessageType.CUSTOM_STICKER_TRANSFER_ACCOUNTS:
TransferShareBean transferShareBean = GsonUtils.getObjFromJSON(name, TransferShareBean.class);
if (transferShareBean != null) {
Intent intent = new Intent();
intent.setClassName(getActivity(), "com.dskj.rbchat.redpack.TransferInfoActivity");
intent.setClassName(getActivity(), "com.hbl.lewan.redpack.TransferInfoActivity");
//Long id, Integer status, Integer amount, Integer senderUid, Integer receiverUid, String sendTime, String receiveTime, String remark, Integer coinType
TransferBean transferBean = new TransferBean(Long.parseLong(transferShareBean.data.getId()),
Integer.parseInt(transferShareBean.data.getStatus()),
@@ -2064,7 +2123,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
UserAlbumsShareBean albumsShareBean = GsonUtils.getObjFromJSON(name, UserAlbumsShareBean.class);
if (albumsShareBean.data != null) {
Intent intent = new Intent();
intent.setClassName(getActivity(), "com.dskj.rbchat.main.mine.photo.UserPhotoDetailsActivity");
intent.setClassName(getActivity(), "com.hbl.lewan.main.mine.photo.UserPhotoDetailsActivity");
intent.putExtra("albumId", albumsShareBean.data.getAlbumId());
intent.putExtra("userId", albumsShareBean.data.getUserId());
startActivity(intent);
@@ -2078,7 +2137,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
+ helpPayShareBean.data.getPayUid() + "&orderid=" + helpPayShareBean.data.getOrderId()
+ "&payHeadImg=" + ContactRepo.getUserInfo(helpPayShareBean.data.getPayUid()).getAvatar());
intent.putExtra("isGame", true);
intent.setClassName(getActivity(), "com.dskj.rbchat.game.JsBridgeActivity");
intent.setClassName(getActivity(), "com.hbl.lewan.game.JsBridgeActivity");
startActivity(intent);
}
break;
@@ -2087,7 +2146,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
if (inviteGroupBean.data != null) {
Intent intent = new Intent();
intent.putExtra("teamId", inviteGroupBean.data.getTeamId());
intent.setClassName(getActivity(), "com.dskj.rbchat.imkit.team.TeamInvitedJoinActivity");
intent.setClassName(getActivity(), "com.hbl.lewan.imkit.team.TeamInvitedJoinActivity");
startActivity(intent);
}
break;
@@ -2143,7 +2202,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
private void toTiaozhuan(RedpacketBean data, ChatMessageBean message) {
if (data.getStatus() > 0 || ((data.getSenderUid() + "").equals(IMKitClient.account()))) {
Intent intent = new Intent();
intent.setClassName(getActivity(), "com.dskj.rbchat.redpack.ReceiveRedPacketActivity");
intent.setClassName(getActivity(), "com.hbl.lewan.redpack.ReceiveRedPacketActivity");
intent.putExtra("bean", data);
intent.putExtra("isGroup", false);
intent.putExtra("name", message.getMessageData().getMessage().getFromNick());
@@ -2176,7 +2235,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
private void toTiaozhuanGroup(RedpacketGroupBean groupBean, ChatMessageBean message) {
if (groupBean.getStatus() > 0) {
Intent intent = new Intent();
intent.setClassName(getActivity(), "com.dskj.rbchat.redpack.ReceiveRedPacketActivity");
intent.setClassName(getActivity(), "com.hbl.lewan.redpack.ReceiveRedPacketActivity");
intent.putExtra("bean", groupBean);
intent.putExtra("isGroup", true);
intent.putExtra("name", groupBean.getSenderNickname() + "");
@@ -2190,7 +2249,7 @@ public abstract class ChatBaseFragment extends BaseFragment {
if ((groupBean.getGrabbers().get(i).getGrabberUid() + "").equals(IMKitClient.account())) {
isAt = true;
Intent intent = new Intent();
intent.setClassName(getActivity(), "com.dskj.rbchat.redpack.ReceiveRedPacketActivity");
intent.setClassName(getActivity(), "com.hbl.lewan.redpack.ReceiveRedPacketActivity");
intent.putExtra("bean", groupBean);
intent.putExtra("isGroup", true);
intent.putExtra("name", groupBean.getSenderNickname() + "");
@@ -2359,8 +2418,28 @@ public abstract class ChatBaseFragment extends BaseFragment {
&& chatConfig.popMenuClickListener != null
&& chatConfig.popMenuClickListener.onCustom(view, messageInfo, action);
}
@Override
public boolean onJinYan(ChatMessageBean messageInfo) {
toJinyan(messageInfo,true);
return IChatPopMenuClickListener.super.onJinYan(messageInfo);
}
@Override
public boolean onJieChuJinYan(ChatMessageBean messageInfo) {
toJinyan(messageInfo,false);
return IChatPopMenuClickListener.super.onJieChuJinYan(messageInfo);
}
};
private void toJinyan(ChatMessageBean messageInfo, boolean isMute) {
TeamService v2TeamService = NIMClient.getService(TeamService.class);
v2TeamService.muteTeamMember(sessionID, messageInfo.getMessageData().getFromUser().getAccount(),isMute);
}
private void showDeleteConfirmDialog(ChatMessageBean message) {
CommonChoiceDialog dialog = new CommonChoiceDialog();
dialog
@@ -2580,7 +2659,33 @@ public abstract class ChatBaseFragment extends BaseFragment {
protected void onReceiveMessage(FetchResult<List<ChatMessageBean>> listFetchResult) {
ALog.d(
LIB_TAG, LOG_TAG, "rec message observe newer load:" + (listFetchResult.getData() == null));
chatView.appendMessageList(listFetchResult.getData());
LinearLayoutManager layoutManager = (LinearLayoutManager) chatView.getMessageListView().getLayoutManager();
int lastPosition = layoutManager.findLastCompletelyVisibleItemPosition();
/**当我滑动到了上面 有新消息进来 不要顶上来 只有停留在顶部的时候才自动滑动到底部*/
if (lastPosition==chatView.getMessageListView().getMessageAdapter().getMessageList().size()-1) {
chatView.appendMessageList(listFetchResult.getData());
}else{
chatView.appendMessageList(listFetchResult.getData(),false);
}
/**
* 群聊禁言和解除禁言实时更新底部UI
*/
if(sessionType == SessionTypeEnum.Team||sessionType == SessionTypeEnum.SUPER_TEAM) {
for (ChatMessageBean chatMessageBean : listFetchResult.getData()) {
if (chatMessageBean.getMessageData().getMessage().getAttachment() instanceof NotificationAttachment) {
NotificationAttachment attachment =
(NotificationAttachment) chatMessageBean.getMessageData().getMessage().getAttachment();
if(attachment.getType() == NotificationType.MuteTeamMember||attachment.getType() ==NotificationType.SUPER_TEAM_MUTE_TLIST){
MuteMemberAttachment muteMemberAttachment = (MuteMemberAttachment) attachment;
if(muteMemberAttachment.getTargets().contains(IMKitClient.account())){
RxBus.getInstance().post(-99999);
}
}
}
}
}
}
protected void onSentMessage(FetchResult<ChatMessageBean> fetchResult) {

View File

@@ -637,10 +637,10 @@ public abstract class ChatBaseViewModel extends BaseViewModel {
if (message.isRevoked()) {
continue;
}
if (message.getMessageData().getMessage().getMsgType() == MsgTypeEnum.audio) {
hasError = true;
continue;
}
// if (message.getMessageData().getMessage().getMsgType() == MsgTypeEnum.audio) {
// hasError = true;
// continue;
// }
for (String session : sessionInfo) {
IMMessage forwardMessage =
MessageBuilder.createForwardMessage(

View File

@@ -17,8 +17,8 @@ import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.ethanhua.skeleton.Skeleton;
import com.ethanhua.skeleton.SkeletonScreen;
//import com.ethanhua.skeleton.Skeleton;
//import com.ethanhua.skeleton.SkeletonScreen;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.netease.yunxin.kit.chatkit.model.UserInfoWithTeam;
import com.netease.yunxin.kit.chatkit.ui.R;
@@ -44,7 +44,7 @@ public class AitContactSelectorDialog extends BottomSheetDialog {
//展示风格0:办公风格 1:新版本
private int uiStyle = 0;
private boolean teamManager;
private SkeletonScreen skeletonScreen;
// private SkeletonScreen skeletonScreen;
public AitContactSelectorDialog(@NonNull Context context) {
this(context, R.style.TransBottomSheetTheme);
@@ -70,16 +70,16 @@ public class AitContactSelectorDialog extends BottomSheetDialog {
}
private void initShowSkeleton() {
skeletonScreen = Skeleton.bind(binding.contactList)
.adapter(adapter)
.load(R.layout.discover_aitchild_item)
.shimmer(false) // whether show shimmer animation. default is true
.count(10) // the recycler view item count. default is 10
// .color(R.color.color_e3e4e4) // the shimmer color. default is #a2878787
// .angle(20) // the shimmer angle. default is 20;
// .duration(1500) // the shimmer animation duration. default is 1000;
// .frozen(false)
.show();
// skeletonScreen = Skeleton.bind(binding.contactList)
// .adapter(adapter)
// .load(R.layout.discover_aitchild_item)
// .shimmer(false) // whether show shimmer animation. default is true
// .count(10) // the recycler view item count. default is 10
//// .color(R.color.color_e3e4e4) // the shimmer color. default is #a2878787
//// .angle(20) // the shimmer angle. default is 20;
//// .duration(1500) // the shimmer animation duration. default is 1000;
//// .frozen(false)
// .show();
}
private void initViews() {
@@ -188,9 +188,9 @@ public class AitContactSelectorDialog extends BottomSheetDialog {
public void setData(List<UserInfoWithTeam> data, boolean refresh) {
adapter.setMembers(data);
if (skeletonScreen != null) {
skeletonScreen.hide();
}
// if (skeletonScreen != null) {
// skeletonScreen.hide();
// }
listmemebers.clear();
listmemebers.addAll(data);
if (refresh) {

View File

@@ -88,7 +88,6 @@ public class EmojiFragment extends BaseFragment {
private void initList() {
if(type==3){
linearLayoutManager = new GridLayoutManager(getActivity(), 4);
}else {
linearLayoutManager = new GridLayoutManager(getActivity(), 7);
}
@@ -217,31 +216,33 @@ public class EmojiFragment extends BaseFragment {
String fileName = xmlParser.getAttributeValue(0);
String tag = xmlParser.getAttributeValue(2);
EmojiPickerView.Entry entry = new EmojiPickerView.Entry(tag, EMOJI_DIR + catalog + "/" + fileName);
if (index == 1) {
if (fileName.startsWith("taotao_"))
// if (index == 1) {
// if (fileName.startsWith("taotao_"))
// text2entry.put(entry.text, entry);
// if (catalog.equals("taotao")) {
// defaultEntries.add(entry);
// }
// } else if (index == 2) {
// if (fileName.startsWith("lele_"))
// text2entry.put(entry.text, entry);
// if (catalog.equals("lele")) {
// defaultEntries.add(entry);
// }
// } else
if (index == 0) {
if (fileName.startsWith("emoji_"))
text2entry.put(entry.text, entry);
if (catalog.equals("taotao")) {
defaultEntries.add(entry);
}
} else if (index == 2) {
if (fileName.startsWith("lele_"))
text2entry.put(entry.text, entry);
if (catalog.equals("lele")) {
defaultEntries.add(entry);
}
} else if (index == 0) {
if (fileName.startsWith("tingting_"))
text2entry.put(entry.text, entry);
if (catalog.equals("tingting")) {
defaultEntries.add(entry);
}
} else if (index == 3) {
if (fileName.startsWith("tlt_"))
text2entry.put(entry.text, entry);
if (catalog.equals("tlt")) {
if (catalog.equals("default")) {
defaultEntries.add(entry);
}
}
// else if (index == 3) {
// if (fileName.startsWith("tlt_"))
// text2entry.put(entry.text, entry);
// if (catalog.equals("tlt")) {
// defaultEntries.add(entry);
// }
// }
}

View File

@@ -132,27 +132,27 @@ public class EmojiPickerView extends LinearLayout implements IEmojiCategoryChang
show();
}
EmojiFragment fragmentTingTing;
EmojiFragment fragmentTaoTao;
EmojiFragment fragmentLeLe;
EmojiFragment fragmentGif;
// EmojiFragment fragmentTaoTao;
// EmojiFragment fragmentLeLe;
// EmojiFragment fragmentGif;
private void initViewPager() {
listFragment = new ArrayList<>();
listFragment.add(fragmentTingTing = EmojiFragment.newInstance(0));
listFragment.add(fragmentTaoTao = EmojiFragment.newInstance(1));
listFragment.add(fragmentLeLe = EmojiFragment.newInstance(2));
listFragment.add(fragmentGif = EmojiFragment.newInstance(3));
// listFragment.add(fragmentTaoTao = EmojiFragment.newInstance(1));
// listFragment.add(fragmentLeLe = EmojiFragment.newInstance(2));
// listFragment.add(fragmentGif = EmojiFragment.newInstance(3));
titles = new ArrayList<>();
titles.add("tingting");
titles.add("taotao");
titles.add("lele");
titles.add("gif");
titles.add("default");
// titles.add("taotao");
// titles.add("lele");
// titles.add("gif");
CommunityAdapter adapter = new CommunityAdapter((FragmentActivity) getContext(), titles, listFragment);
viewBinding.viewPager.setAdapter(adapter);
fragmentTingTing.setIEmojiSelectedListener(listener);
fragmentTaoTao.setIEmojiSelectedListener(listener);
fragmentLeLe.setIEmojiSelectedListener(listener);
fragmentGif.setIEmojiSelectedListener(listener);
// fragmentTaoTao.setIEmojiSelectedListener(listener);
// fragmentLeLe.setIEmojiSelectedListener(listener);
// fragmentGif.setIEmojiSelectedListener(listener);
}
@@ -225,18 +225,18 @@ public class EmojiPickerView extends LinearLayout implements IEmojiCategoryChang
//
// btn.setCheckedImageId(R.drawable.ic_emoji);
CheckedImageButton btn3= addEmojiIconTabBtn(index++, tabCheckListener);
btn3.setNormalImageId(R.drawable.tingting_img);
btn3.setCheckedImageId(R.drawable.tingting_img);
btn3.setNormalImageId(R.drawable.ic_emoji);
btn3.setCheckedImageId(R.drawable.ic_emoji);
// // taotao
CheckedImageButton btn = addEmojiIconTabBtn(index++, tabCheckListener);
btn.setNormalImageId(R.drawable.taotao_img);
btn.setCheckedImageId(R.drawable.taotao_img);
// CheckedImageButton btn = addEmojiIconTabBtn(index++, tabCheckListener);
// btn.setNormalImageId(R.drawable.taotao_img);
// btn.setCheckedImageId(R.drawable.taotao_img);
//
// // lele
CheckedImageButton btn2 = addEmojiIconTabBtn(index++, tabCheckListener);
btn2.setNormalImageId(R.drawable.lele_img);
btn2.setCheckedImageId(R.drawable.lele_img);
// CheckedImageButton btn2 = addEmojiIconTabBtn(index++, tabCheckListener);
// btn2.setNormalImageId(R.drawable.lele_img);
// btn2.setCheckedImageId(R.drawable.lele_img);
//
// // tingting
@@ -244,9 +244,9 @@ public class EmojiPickerView extends LinearLayout implements IEmojiCategoryChang
//
// // tingting
CheckedImageButton btn4= addEmojiIconTabBtn(index++, tabCheckListener);
btn4.setNormalImageId(R.drawable.gif_img);
btn4.setCheckedImageId(R.drawable.gif_img);
// CheckedImageButton btn4= addEmojiIconTabBtn(index++, tabCheckListener);
// btn4.setNormalImageId(R.drawable.gif_img);
// btn4.setCheckedImageId(R.drawable.gif_img);
//tlt
// if (withSticker) {
@@ -368,31 +368,33 @@ public class EmojiPickerView extends LinearLayout implements IEmojiCategoryChang
// defaultEntries.add(entry);
// }
// }else
if(index == 1){
if (fileName.startsWith("taotao_"))
// if(index == 1){
// if (fileName.startsWith("taotao_"))
// text2entry.put(entry.text, entry);
// if (catalog.equals("taotao")) {
// defaultEntries.add(entry);
// }
// }else if(index == 2){
// if (fileName.startsWith("lele_"))
// text2entry.put(entry.text, entry);
// if (catalog.equals("lele")) {
// defaultEntries.add(entry);
// }
// }else
if(index == 0){
if (fileName.startsWith("emoji_"))
text2entry.put(entry.text, entry);
if (catalog.equals("taotao")) {
defaultEntries.add(entry);
}
}else if(index == 2){
if (fileName.startsWith("lele_"))
text2entry.put(entry.text, entry);
if (catalog.equals("lele")) {
defaultEntries.add(entry);
}
}else if(index == 0){
if (fileName.startsWith("tingting_"))
text2entry.put(entry.text, entry);
if (catalog.equals("tingting")) {
defaultEntries.add(entry);
}
}else if(index == 3){
if (fileName.startsWith("tlt_"))
text2entry.put(entry.text, entry);
if (catalog.equals("tlt")) {
if (catalog.equals("default")) {
defaultEntries.add(entry);
}
}
// else if(index == 3){
// if (fileName.startsWith("tlt_"))
// text2entry.put(entry.text, entry);
// if (catalog.equals("tlt")) {
// defaultEntries.add(entry);
// }
// }

View File

@@ -46,6 +46,10 @@ public class ActionConstants {
public static final String POP_ACTION_PIN = "POP_ACTION_PIN";
//消息长按菜单-多选
public static final String POP_ACTION_MULTI_SELECT = "POP_ACTION_MULTI_SELECT";
public static final String POP_ACTION_JINYAN_SELECT = "POP_ACTION_JINYAN_SELECT";
//消息长按菜单-收藏
public static final String POP_ACTION_COLLECTION = "POP_ACTION_COLLECTION";
//消息长按菜单-删除

View File

@@ -146,7 +146,7 @@ public class SimpleVideoPlayer extends ConstraintLayout {
return;
}
VideoAttachment videoAttachment = (VideoAttachment) message.getAttachment();
videoFilePath = videoAttachment.getPath(); ///storage/emulated/0/Android/data/com.dskj.rbchat/cache/video/e31b3802d23e3cb191875303f48ee576
videoFilePath = videoAttachment.getPath(); ///storage/emulated/0/Android/data/com.hbl.lewan/cache/video/e31b3802d23e3cb191875303f48ee576
if (TextUtils.isEmpty(videoFilePath)) {
videoFilePath = videoAttachment.getThumbPath();
}

View File

@@ -50,7 +50,9 @@ public class ChatPopMenu {
private ChatPopMenuLayoutBinding layoutBinding;
private final MenuAdapter adapter;
private final List<ChatPopMenuAction> chatPopMenuActionList = new ArrayList<>();
int isManageNumber = 0;
int otherIsManageNumber = 0;
boolean isMute;
public ChatPopMenu() {
layoutBinding =
ChatPopMenuLayoutBinding.inflate(LayoutInflater.from(IMKitClient.getApplicationContext()));
@@ -70,7 +72,10 @@ public class ChatPopMenu {
popupWindow.setOutsideTouchable(true);
}
public void show(View anchorView, ChatMessageBean message, int minY) {
public void show(View anchorView, ChatMessageBean message, int minY,int isManage,int otherIsManage,boolean isMute) {
isManageNumber = isManage;
otherIsManageNumber = otherIsManage;
this.isMute = isMute;
ALog.d(LIB_TAG, TAG, "show");
adapter.setMessageInfo(message);
initDefaultAction(message);
@@ -127,7 +132,7 @@ public class ChatPopMenu {
@SuppressLint("NotifyDataSetChanged")
private void initDefaultAction(ChatMessageBean message) {
chatPopMenuActionList.clear();
chatPopMenuActionList.addAll(ChatPopActionFactory.getInstance().getNormalActions(message));
chatPopMenuActionList.addAll(ChatPopActionFactory.getInstance().getNormalActions(message,isManageNumber,otherIsManageNumber,isMute));
adapter.notifyDataSetChanged();
}

View File

@@ -29,6 +29,12 @@ public interface IChatPopMenuClickListener {
return false;
}
default boolean onJinYan(ChatMessageBean messageInfo) {
return false;
}
default boolean onJieChuJinYan(ChatMessageBean messageInfo) {
return false;
}
default boolean onCollection(ChatMessageBean messageInfo) {
return false;
}

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (c) 2022 NetEase, Inc. All rights reserved.
~ Use of this source code is governed by a MIT license that can be
~ found in the LICENSE file.
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/messageText"
android:layout_width="wrap_content"
android:gravity="center"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_16"
android:visibility="gone"
android:textColor="@color/color_383838"
tools:text="@tools:sample/lorem" />
</FrameLayout>

View File

@@ -70,7 +70,7 @@
android:textSize="12dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/cav_icon"
app:layout_goneMarginEnd="@dimen/dimen_20_dp"
tools:ignore="MissingConstraints,SpUsage"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (c) 2022 NetEase, Inc. All rights reserved.
~ Use of this source code is governed by a MIT license that can be
~ found in the LICENSE file.
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/messageText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_14"
android:textColor="@color/color_333333"
android:ellipsize="end"
tools:text="@tools:sample/lorem" />
</FrameLayout>

View File

@@ -14,7 +14,7 @@
android:id="@+id/messageTipText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_16"
android:textSize="@dimen/text_size_12"
android:textColor="@color/color_333333"
tools:text="@tools:sample/lorem" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -79,7 +79,6 @@
android:layout_height="@dimen/dimen_40_dp"
app:layout_constraintStart_toEndOf="@id/chatMsgSelectLayout"
app:layout_constraintTop_toTopOf="parent"
app:layout_goneMarginStart="0dp"
android:layout_marginStart="@dimen/dimen_10_dp"/>
<com.netease.yunxin.kit.common.ui.widgets.ContactAvatarView
@@ -146,12 +145,11 @@
android:id="@+id/messageTopGroup"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@+id/myAvatar"
app:layout_constraintStart_toEndOf="@id/otherUserAvatar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/nameBarrier"
app:layout_constraintWidth_default="wrap"
app:layout_goneMarginEnd="@dimen/dimen_42_dp"
app:layout_goneMarginStart="@dimen/dimen_42_dp" />
/>
<com.netease.yunxin.kit.common.ui.widgets.LongClickableFrameLayout
android:id="@+id/messageContainer"
@@ -164,9 +162,7 @@
app:layout_constraintTop_toBottomOf="@id/nameBarrier"
app:layout_constraintWidth_default="wrap"
app:layout_constraintWidth_max="220dp"
app:layout_goneMarginEnd="@dimen/dimen_10_dp"
app:layout_goneMarginStart="@dimen/dimen_10_dp"
app:layout_goneMarginTop="0dp" />
/>
<TextView
android:id="@+id/tv_reply_findmessage"
@@ -194,8 +190,7 @@
app:layout_constraintStart_toEndOf="@id/otherUserAvatar"
app:layout_constraintTop_toBottomOf="@id/messageContainer"
app:layout_constraintWidth_default="wrap"
app:layout_goneMarginEnd="@dimen/dimen_10_dp"
app:layout_goneMarginStart="@dimen/dimen_10_dp" />
/>
<LinearLayout
android:id="@+id/llSignal"
@@ -208,8 +203,7 @@
app:layout_constraintEnd_toStartOf="@id/myAvatar"
app:layout_constraintStart_toEndOf="@id/otherUserAvatar"
app:layout_constraintTop_toBottomOf="@id/messageBottomGroup"
app:layout_goneMarginEnd="@dimen/dimen_45_dp"
app:layout_goneMarginStart="@dimen/dimen_45_dp">
>
<ImageView
android:layout_width="wrap_content"

View File

@@ -263,12 +263,18 @@
<string name="fachudehongbao_txt">Red envelope sent by %s</string>
<string name="manle_end_txt">I\'m too slow, the red envelopes are gone</string>
<string name="redexpired_txt">Red envelopes cannot be collected if they are over 24 hours old</string>
<string name="s_font_color_fc605c_font_txt"><![CDATA[%s received your <font color = \'#FC605C\'>Cash red envelope</font>]]></string>
<string name="s_font_color_fc605c_font_txt1"><![CDATA[You received %s <font color = \'#FC605C\'>Cash red envelope</font>]]></string>
<string name="s_font_color_629cff_font_txt"><![CDATA[%s received your <font color = \'#629CFF\'>Gift Points Red Envelope</font>]]></string>
<string name="s_font_color_629cff_font_txt1"><![CDATA[You received %s <font color = \'#629CFF\'>Gift Points Red Envelope</font>]]></string>
<string name="s_font_color_gift_font_txt"><![CDATA[%s received your <font color = \'#FC605C\'>Gift Money Red Envelope</font>]]></string>
<string name="s_font_color_gift_font_txt1"><![CDATA[You received %s <font color = \'#FC605C\'>Gift Money Red Envelope</font>]]></string>
<string name="s_font_color_fc605c_font_txt"><![CDATA[%s received your Cash red envelope]]></string>
<string name="s_font_color_fc605c_font_txt1"><![CDATA[You received %s Cash red envelope]]></string>
<string name="s_font_color_fc605c_font_txt2"><![CDATA[%s received %s Cash red envelope]]></string>
<string name="s_font_color_629cff_font_txt"><![CDATA[%s received your Gift Points Red Envelope]]></string>
<string name="s_font_color_629cff_font_txt1"><![CDATA[You received %s Gift Points Red Envelope]]></string>
<string name="s_font_color_629cff_font_txt2"><![CDATA[%s received %s Gift Points Red Envelope]]></string>
<string name="s_font_color_gift_font_txt"><![CDATA[%s received your Gift Money Red Envelope]]></string>
<string name="s_font_color_gift_font_txt1"><![CDATA[You received %s Gift Money Red Envelope]]></string>
<string name="s_font_color_gift_font_txt2"><![CDATA[%s received %s Gift Money Red Envelope]]></string>
<string name="ni_txt">You</string>
<string name="hbylw_txt">, the red envelope has been collected</string>
<string name="bind_phone_des_txt">Please bind your mobile phone number first</string>
@@ -325,5 +331,6 @@
<string name="push_content_audio">Received an audio</string>
<string name="chat_message_forward_to1">Forward to %s and other %d people</string>
<string name="chat_message_forward_to2">Forward to %s and other %d group</string>
<string name="ninyibeijinyan_txt">您已被禁言</string>
</resources>

View File

@@ -264,12 +264,18 @@
<string name="fachudehongbao_txt">%s から赤い封筒が送られてきました</string>
<string name="manle_end_txt">遅すぎる、赤い封筒がなくなってしまった</string>
<string name="redexpired_txt">赤い封筒は24時間以上経過したものは回収できません</string>
<string name="s_font_color_fc605c_font_txt"><![CDATA[%s が<font color = \'#FC605C\'>Cash赤い封筒</font>を受け取りました]]></string>
<string name="s_font_color_fc605c_font_txt1"><![CDATA[あなたは %s の<font color = \'#FC605C\'>Cash赤い封筒</font>を受け取りました]]></string>
<string name="s_font_color_629cff_font_txt"><![CDATA[%s が<font color = \'#629CFF\'>ギフトポイントの赤い封筒</font>を受け取りました]]></string>
<string name="s_font_color_629cff_font_txt1"><![CDATA[あなたは %s の<font color = \'#629CFF\'>銀貨の赤い封筒</font>を受け取りました]]></string>
<string name="s_font_color_gift_font_txt"><![CDATA[%s が<font color = \'#FC605C\'>お祝いのお金入り封筒</font>]]></string>
<string name="s_font_color_gift_font_txt1"><![CDATA[あなたは %s の<font color = \'#FC605C\'>お祝いのお金入り封筒</font>]]></string>
<string name="s_font_color_fc605c_font_txt"><![CDATA[%s がCash赤い封筒を受け取りました]]></string>
<string name="s_font_color_fc605c_font_txt1"><![CDATA[あなたは %s のCash赤い封筒を受け取りました]]></string>
<string name="s_font_color_fc605c_font_txt2"><![CDATA[%sなたは %s のCash赤い封筒を受け取りました]]></string>
<string name="s_font_color_629cff_font_txt"><![CDATA[%s がギフトポイントの赤い封筒を受け取りました]]></string>
<string name="s_font_color_629cff_font_txt1"><![CDATA[あなたは %s の銀貨の赤い封筒を受け取りました]]></string>
<string name="s_font_color_629cff_font_txt2"><![CDATA[%sなたは %s の銀貨の赤い封筒を受け取りました]]></string>
<string name="s_font_color_gift_font_txt"><![CDATA[%s がお祝いのお金入り封筒]]></string>
<string name="s_font_color_gift_font_txt1"><![CDATA[あなたは %s のお祝いのお金入り封筒]]></string>
<string name="s_font_color_gift_font_txt2"><![CDATA[%sなたは %s のお祝いのお金入り封筒]]></string>
<string name="ni_txt">あなた</string>
<string name="hbylw_txt">、赤い封筒は回収されました</string>
<string name="bind_phone_des_txt">最初に携帯電話番号をバインドしてください</string>
@@ -326,5 +332,6 @@
<string name="push_content_audio">音声が届きました</string>
<string name="chat_message_forward_to1">轉發給:%s等%d人</string>
<string name="chat_message_forward_to2">轉發給:%s等%d群</string>
<string name="ninyibeijinyan_txt">您已被禁言</string>
</resources>

View File

@@ -263,12 +263,18 @@
<string name="fachudehongbao_txt">%s 发出的红包</string>
<string name="manle_end_txt">手慢了,红包抢完啦</string>
<string name="redexpired_txt">红包超过24小时无法领取</string>
<string name="s_font_color_fc605c_font_txt"><![CDATA[%s领取了你的<font color = \'#FC605C\'>Cash红包</font>]]></string>
<string name="s_font_color_fc605c_font_txt1"><![CDATA[你领取了%s的<font color = \'#FC605C\'>Cash红包</font>]]></string>
<string name="s_font_color_629cff_font_txt"><![CDATA[%s领取了你的<font color = \'#629CFF\'>礼品积分红包</font>]]></string>
<string name="s_font_color_629cff_font_txt1"><![CDATA[你领取了%s的<font color = \'#629CFF\'>礼品积分红包</font>]]></string>
<string name="s_font_color_gift_font_txt"><![CDATA[%s领取了你的<font color = \'#FC605C\'>礼金红包</font>]]></string>
<string name="s_font_color_gift_font_txt1"><![CDATA[你领取了%s的<font color = \'#FC605C\'>礼金红包</font>]]></string>
<string name="s_font_color_fc605c_font_txt"><![CDATA[%s领取了你的Cash红包]]></string>
<string name="s_font_color_fc605c_font_txt1"><![CDATA[你领取了%s的Cash红包]]></string>
<string name="s_font_color_fc605c_font_txt2"><![CDATA[%s领取了%s的Cash红包]]></string>
<string name="s_font_color_629cff_font_txt"><![CDATA[%s领取了你的礼品积分红包]]></string>
<string name="s_font_color_629cff_font_txt1"><![CDATA[你领取了%s的礼品积分红包]]></string>
<string name="s_font_color_629cff_font_txt2"><![CDATA[%s领取了%s的礼品积分红包]]></string>
<string name="s_font_color_gift_font_txt"><![CDATA[%s领取了你的礼金红包]]></string>
<string name="s_font_color_gift_font_txt1"><![CDATA[你领取了%s的礼金红包]]></string>
<string name="s_font_color_gift_font_txt2"><![CDATA[%s领取了%s的礼金红包]]></string>
<string name="ni_txt"></string>
<string name="hbylw_txt">,红包已领完</string>
<string name="bind_phone_des_txt">请先绑定手机号</string>
@@ -326,5 +332,6 @@
<string name="push_content_audio">发来了一段语音</string>
<string name="chat_message_forward_to1">转发给:%s等%d人</string>
<string name="chat_message_forward_to2">转发给:%s等%d群</string>
<string name="ninyibeijinyan_txt">您已被禁言</string>
</resources>

View File

@@ -263,12 +263,18 @@
<string name="fachudehongbao_txt">%s 發出的紅包</string>
<string name="manle_end_txt">手慢了,紅包搶完啦</string>
<string name="redexpired_txt">紅包超過24小時無法領取</string>
<string name="s_font_color_fc605c_font_txt"><![CDATA[%s領取了你的<font color = \'#FC605C\'>Cash紅包</font>]]></string>
<string name="s_font_color_fc605c_font_txt1"><![CDATA[你領取%s的<font color = \'#FC605C\'>Cash紅包</font>]]></string>
<string name="s_font_color_629cff_font_txt"><![CDATA[%s領取了你的<font color = \'#629CFF\'>禮品積分紅包</font>]]></string>
<string name="s_font_color_629cff_font_txt1"><![CDATA[你領取了%s的<font color = \'#629CFF\'>禮品積分紅包</font>]]></string>
<string name="s_font_color_gift_font_txt"><![CDATA[%s領取了你的<font color = \'#FC605C\'>禮金紅包</font>]]></string>
<string name="s_font_color_gift_font_txt1"><![CDATA[你領取%s的<font color = \'#FC605C\'>禮金紅包</font>]]></string>
<string name="s_font_color_fc605c_font_txt"><![CDATA[%s領取了你的Cash紅包]]></string>
<string name="s_font_color_fc605c_font_txt1"><![CDATA[你領取%s的Cash紅包]]></string>
<string name="s_font_color_fc605c_font_txt2"><![CDATA[%s領取%s的Cash紅包]]></string>
<string name="s_font_color_629cff_font_txt"><![CDATA[%s領取了你的禮品積分紅包]]></string>
<string name="s_font_color_629cff_font_txt1"><![CDATA[你領取%s的禮品積分紅包]]></string>
<string name="s_font_color_629cff_font_txt2"><![CDATA[%s領取了%s的禮品積分紅包]]></string>
<string name="s_font_color_gift_font_txt"><![CDATA[%s領取了你的禮金紅包]]></string>
<string name="s_font_color_gift_font_txt1"><![CDATA[你領取%s的禮金紅包]]></string>
<string name="s_font_color_gift_font_txt2"><![CDATA[%s領取%s的禮金紅包]]></string>
<string name="ni_txt"></string>
<string name="hbylw_txt">,紅包已领完</string>
<string name="bind_phone_des_txt">請先綁定手機號碼</string>
@@ -325,4 +331,5 @@
<string name="push_content_audio">發來了一段語音</string>
<string name="chat_message_forward_to1">轉發給:%s等%d人</string>
<string name="chat_message_forward_to2">轉發給:%s等%d群</string>
<string name="ninyibeijinyan_txt">您已被禁言</string>
</resources>

View File

@@ -78,177 +78,177 @@
<Emoticon File="emoji_68.png" ID="emoticon_emoji_68" Tag="[便便]" />
</Catalog>
<Catalog Title="tingting">
<Emoticon File="tingting_00.png" ID="emoticon_tingting_00" Tag="[町町安靜]" />
<Emoticon File="tingting_01.png" ID="emoticon_emoji_01" Tag="[町町無辜]" />
<Emoticon File="tingting_02.png" ID="emoticon_tingting_02" Tag="[町町白眼]" />
<Emoticon File="tingting_03.png" ID="emoticon_tingting_03" Tag="[町町生氣]" />
<Emoticon File="tingting_04.png" ID="emoticon_tingting_04" Tag="[町町再見]" />
<Emoticon File="tingting_05.png" ID="emoticon_tingting_05" Tag="[町町閉嘴]" />
<Emoticon File="tingting_06.png" ID="emoticon_tingting_06" Tag="[町町犯困]" />
<Emoticon File="tingting_07.png" ID="emoticon_tingting_07" Tag="[町町尷尬]" />
<Emoticon File="tingting_08.png" ID="emoticon_tingting_08" Tag="[町町感動]" />
<Emoticon File="tingting_09.png" ID="emoticon_tingting_09" Tag="[町町鼓掌]" />
<Emoticon File="tingting_10.png" ID="emoticon_tingting_10" Tag="[町町害羞]" />
<Emoticon File="tingting_11.png" ID="emoticon_tingting_11" Tag="[町町好色]" />
<Emoticon File="tingting_12.png" ID="emoticon_tingting_12" Tag="[町町黑臉]" />
<Emoticon File="tingting_13.png" ID="emoticon_tingting_13" Tag="[町町急怒]" />
<Emoticon File="tingting_14.png" ID="emoticon_tingting_14" Tag="[町町驚慌]" />
<Emoticon File="tingting_15.png" ID="emoticon_tingting_15" Tag="[町町驚訝]" />
<Emoticon File="tingting_16.png" ID="emoticon_tingting_16" Tag="[町町沮喪]" />
<Emoticon File="tingting_17.png" ID="emoticon_tingting_17" Tag="[町町開心]" />
<Emoticon File="tingting_18.png" ID="emoticon_tingting_18" Tag="[町町瞌睡]" />
<Emoticon File="tingting_19.png" ID="emoticon_tingting_19" Tag="[町町摳鼻]" />
<Emoticon File="tingting_20.png" ID="emoticon_tingting_20" Tag="[町町哭泣]" />
<Emoticon File="tingting_21.png" ID="emoticon_tingting_21" Tag="[町町苦臉]" />
<Emoticon File="tingting_22.png" ID="emoticon_tingting_22" Tag="[町町酷]" />
<Emoticon File="tingting_23.png" ID="emoticon_tingting_23" Tag="[町町 酷]" />
<Emoticon File="tingting_24.png" ID="emoticon_tingting_24" Tag="[町町狂躁]" />
<Emoticon File="tingting_25.png" ID="emoticon_tingting_25" Tag="[町町流汗]" />
<Emoticon File="tingting_26.png" ID="emoticon_tingting_26" Tag="[町町罵人]" />
<Emoticon File="tingting_27.png" ID="emoticon_tingting_27" Tag="[町町發怒]" />
<Emoticon File="tingting_28.png" ID="emoticon_tingting_28" Tag="[町町氣哭]" />
<Emoticon File="tingting_29.png" ID="emoticon_tingting_29" Tag="[町町敲頭]" />
<Emoticon File="tingting_30.png" ID="emoticon_tingting_30" Tag="[町町親親]" />
<Emoticon File="tingting_31.png" ID="emoticon_tingting_31" Tag="[町町吐舌頭]" />
<Emoticon File="tingting_32.png" ID="emoticon_tingting_32" Tag="[町町微笑]" />
<Emoticon File="tingting_33.png" ID="emoticon_tingting_33" Tag="[町町捂嘴笑]" />
<Emoticon File="tingting_34.png" ID="emoticon_tingting_34" Tag="[町町兇]" />
<Emoticon File="tingting_35.png" ID="emoticon_tingting_35" Tag="[町町羞笑]" />
<Emoticon File="tingting_36.png" ID="emoticon_tingting_36" Tag="[町町眩暈]" />
<Emoticon File="tingting_37.png" ID="emoticon_tingting_37" Tag="[町町疑問]" />
<Emoticon File="tingting_38.png" ID="emoticon_tingting_38" Tag="[町町中毒]" />
<Emoticon File="tingting_39.png" ID="emoticon_tingting_39" Tag="[町町齜牙]" />
<!-- <Catalog Title="tingting">-->
<!-- <Emoticon File="tingting_00.png" ID="emoticon_tingting_00" Tag="[町町安靜]" />-->
<!-- <Emoticon File="tingting_01.png" ID="emoticon_emoji_01" Tag="[町町無辜]" />-->
<!-- <Emoticon File="tingting_02.png" ID="emoticon_tingting_02" Tag="[町町白眼]" />-->
<!-- <Emoticon File="tingting_03.png" ID="emoticon_tingting_03" Tag="[町町生氣]" />-->
<!-- <Emoticon File="tingting_04.png" ID="emoticon_tingting_04" Tag="[町町再見]" />-->
<!-- <Emoticon File="tingting_05.png" ID="emoticon_tingting_05" Tag="[町町閉嘴]" />-->
<!-- <Emoticon File="tingting_06.png" ID="emoticon_tingting_06" Tag="[町町犯困]" />-->
<!-- <Emoticon File="tingting_07.png" ID="emoticon_tingting_07" Tag="[町町尷尬]" />-->
<!-- <Emoticon File="tingting_08.png" ID="emoticon_tingting_08" Tag="[町町感動]" />-->
<!-- <Emoticon File="tingting_09.png" ID="emoticon_tingting_09" Tag="[町町鼓掌]" />-->
<!-- <Emoticon File="tingting_10.png" ID="emoticon_tingting_10" Tag="[町町害羞]" />-->
<!-- <Emoticon File="tingting_11.png" ID="emoticon_tingting_11" Tag="[町町好色]" />-->
<!-- <Emoticon File="tingting_12.png" ID="emoticon_tingting_12" Tag="[町町黑臉]" />-->
<!-- <Emoticon File="tingting_13.png" ID="emoticon_tingting_13" Tag="[町町急怒]" />-->
<!-- <Emoticon File="tingting_14.png" ID="emoticon_tingting_14" Tag="[町町驚慌]" />-->
<!-- <Emoticon File="tingting_15.png" ID="emoticon_tingting_15" Tag="[町町驚訝]" />-->
<!-- <Emoticon File="tingting_16.png" ID="emoticon_tingting_16" Tag="[町町沮喪]" />-->
<!-- <Emoticon File="tingting_17.png" ID="emoticon_tingting_17" Tag="[町町開心]" />-->
<!-- <Emoticon File="tingting_18.png" ID="emoticon_tingting_18" Tag="[町町瞌睡]" />-->
<!-- <Emoticon File="tingting_19.png" ID="emoticon_tingting_19" Tag="[町町摳鼻]" />-->
<!-- <Emoticon File="tingting_20.png" ID="emoticon_tingting_20" Tag="[町町哭泣]" />-->
<!-- <Emoticon File="tingting_21.png" ID="emoticon_tingting_21" Tag="[町町苦臉]" />-->
<!-- <Emoticon File="tingting_22.png" ID="emoticon_tingting_22" Tag="[町町酷]" />-->
<!-- <Emoticon File="tingting_23.png" ID="emoticon_tingting_23" Tag="[町町 酷]" />-->
<!-- <Emoticon File="tingting_24.png" ID="emoticon_tingting_24" Tag="[町町狂躁]" />-->
<!-- <Emoticon File="tingting_25.png" ID="emoticon_tingting_25" Tag="[町町流汗]" />-->
<!-- <Emoticon File="tingting_26.png" ID="emoticon_tingting_26" Tag="[町町罵人]" />-->
<!-- <Emoticon File="tingting_27.png" ID="emoticon_tingting_27" Tag="[町町發怒]" />-->
<!-- <Emoticon File="tingting_28.png" ID="emoticon_tingting_28" Tag="[町町氣哭]" />-->
<!-- <Emoticon File="tingting_29.png" ID="emoticon_tingting_29" Tag="[町町敲頭]" />-->
<!-- <Emoticon File="tingting_30.png" ID="emoticon_tingting_30" Tag="[町町親親]" />-->
<!-- <Emoticon File="tingting_31.png" ID="emoticon_tingting_31" Tag="[町町吐舌頭]" />-->
<!-- <Emoticon File="tingting_32.png" ID="emoticon_tingting_32" Tag="[町町微笑]" />-->
<!-- <Emoticon File="tingting_33.png" ID="emoticon_tingting_33" Tag="[町町捂嘴笑]" />-->
<!-- <Emoticon File="tingting_34.png" ID="emoticon_tingting_34" Tag="[町町兇]" />-->
<!-- <Emoticon File="tingting_35.png" ID="emoticon_tingting_35" Tag="[町町羞笑]" />-->
<!-- <Emoticon File="tingting_36.png" ID="emoticon_tingting_36" Tag="[町町眩暈]" />-->
<!-- <Emoticon File="tingting_37.png" ID="emoticon_tingting_37" Tag="[町町疑問]" />-->
<!-- <Emoticon File="tingting_38.png" ID="emoticon_tingting_38" Tag="[町町中毒]" />-->
<!-- <Emoticon File="tingting_39.png" ID="emoticon_tingting_39" Tag="[町町齜牙]" />-->
</Catalog>
<!-- </Catalog>-->
<Catalog Title="taotao">
<Emoticon File="taotao_00.png" ID="emoticon_taotao_00" Tag="[淘淘安靜]" />
<Emoticon File="taotao_01.png" ID="emoticon_taotao_01" Tag="[淘淘白眼]" />
<Emoticon File="taotao_02.png" ID="emoticon_taotao_02" Tag="[淘淘生氣]" />
<Emoticon File="taotao_03.png" ID="emoticon_taotao_03" Tag="[淘淘閉嘴]" />
<Emoticon File="taotao_04.png" ID="emoticon_taotao_04" Tag="[淘淘犯困]" />
<Emoticon File="taotao_05.png" ID="emoticon_taotao_05" Tag="[淘淘尷尬]" />
<Emoticon File="taotao_06.png" ID="emoticon_taotao_06" Tag="[淘淘感動]" />
<Emoticon File="taotao_07.png" ID="emoticon_taotao_07" Tag="[淘淘鼓掌]" />
<Emoticon File="taotao_08.png" ID="emoticon_taotao_08" Tag="[淘淘害羞]" />
<Emoticon File="taotao_09.png" ID="emoticon_taotao_09" Tag="[淘淘好色]" />
<Emoticon File="taotao_10.png" ID="emoticon_taotao_10" Tag="[淘淘黑臉]" />
<Emoticon File="taotao_11.png" ID="emoticon_taotao_11" Tag="[淘淘急怒]" />
<Emoticon File="taotao_12.png" ID="emoticon_taotao_12" Tag="[淘淘驚慌]" />
<Emoticon File="taotao_13.png" ID="emoticon_taotao_13" Tag="[淘淘驚訝]" />
<Emoticon File="taotao_14.png" ID="emoticon_taotao_14" Tag="[淘淘沮喪]" />
<Emoticon File="taotao_15.png" ID="emoticon_taotao_15" Tag="[淘淘開心]" />
<Emoticon File="taotao_16.png" ID="emoticon_taotao_16" Tag="[淘淘瞌睡]" />
<Emoticon File="taotao_17.png" ID="emoticon_taotao_17" Tag="[淘淘摳鼻]" />
<Emoticon File="taotao_18.png" ID="emoticon_taotao_18" Tag="[淘淘哭泣]" />
<Emoticon File="taotao_19.png" ID="emoticon_taotao_19" Tag="[淘淘苦臉]" />
<Emoticon File="taotao_20.png" ID="emoticon_taotao_20" Tag="[淘淘酷]" />
<Emoticon File="taotao_21.png" ID="emoticon_taotao_21" Tag="[淘淘 酷]" />
<Emoticon File="taotao_22.png" ID="emoticon_taotao_22" Tag="[淘淘狂躁]" />
<Emoticon File="taotao_23.png" ID="emoticon_taotao_23" Tag="[淘淘流汗]" />
<Emoticon File="taotao_24.png" ID="emoticon_taotao_24" Tag="[淘淘罵人]" />
<Emoticon File="taotao_25.png" ID="emoticon_taotao_25" Tag="[淘淘發怒]" />
<Emoticon File="taotao_26.png" ID="emoticon_taotao_26" Tag="[淘淘氣哭]" />
<Emoticon File="taotao_27.png" ID="emoticon_taotao_27" Tag="[淘淘敲頭]" />
<Emoticon File="taotao_28.png" ID="emoticon_taotao_28" Tag="[淘淘親親]" />
<Emoticon File="taotao_29.png" ID="emoticon_taotao_29" Tag="[淘淘吐舌頭]" />
<Emoticon File="taotao_30.png" ID="emoticon_taotao_30" Tag="[淘淘微笑]" />
<Emoticon File="taotao_31.png" ID="emoticon_taotao_31" Tag="[淘淘無辜]" />
<Emoticon File="taotao_32.png" ID="emoticon_taotao_32" Tag="[淘淘捂嘴笑]" />
<Emoticon File="taotao_33.png" ID="emoticon_taotao_33" Tag="[淘淘兇]" />
<Emoticon File="taotao_34.png" ID="emoticon_taotao_34" Tag="[淘淘羞笑]" />
<Emoticon File="taotao_35.png" ID="emoticon_taotao_35" Tag="[淘淘眩暈]" />
<Emoticon File="taotao_36.png" ID="emoticon_taotao_36" Tag="[淘淘疑問]" />
<Emoticon File="taotao_37.png" ID="emoticon_taotao_37" Tag="[淘淘再見]" />
<Emoticon File="taotao_38.png" ID="emoticon_taotao_38" Tag="[淘淘中毒]" />
<Emoticon File="taotao_39.png" ID="emoticon_taotao_39" Tag="[淘淘齜牙]" />
<!-- <Catalog Title="taotao">-->
<!-- <Emoticon File="taotao_00.png" ID="emoticon_taotao_00" Tag="[淘淘安靜]" />-->
<!-- <Emoticon File="taotao_01.png" ID="emoticon_taotao_01" Tag="[淘淘白眼]" />-->
<!-- <Emoticon File="taotao_02.png" ID="emoticon_taotao_02" Tag="[淘淘生氣]" />-->
<!-- <Emoticon File="taotao_03.png" ID="emoticon_taotao_03" Tag="[淘淘閉嘴]" />-->
<!-- <Emoticon File="taotao_04.png" ID="emoticon_taotao_04" Tag="[淘淘犯困]" />-->
<!-- <Emoticon File="taotao_05.png" ID="emoticon_taotao_05" Tag="[淘淘尷尬]" />-->
<!-- <Emoticon File="taotao_06.png" ID="emoticon_taotao_06" Tag="[淘淘感動]" />-->
<!-- <Emoticon File="taotao_07.png" ID="emoticon_taotao_07" Tag="[淘淘鼓掌]" />-->
<!-- <Emoticon File="taotao_08.png" ID="emoticon_taotao_08" Tag="[淘淘害羞]" />-->
<!-- <Emoticon File="taotao_09.png" ID="emoticon_taotao_09" Tag="[淘淘好色]" />-->
<!-- <Emoticon File="taotao_10.png" ID="emoticon_taotao_10" Tag="[淘淘黑臉]" />-->
<!-- <Emoticon File="taotao_11.png" ID="emoticon_taotao_11" Tag="[淘淘急怒]" />-->
<!-- <Emoticon File="taotao_12.png" ID="emoticon_taotao_12" Tag="[淘淘驚慌]" />-->
<!-- <Emoticon File="taotao_13.png" ID="emoticon_taotao_13" Tag="[淘淘驚訝]" />-->
<!-- <Emoticon File="taotao_14.png" ID="emoticon_taotao_14" Tag="[淘淘沮喪]" />-->
<!-- <Emoticon File="taotao_15.png" ID="emoticon_taotao_15" Tag="[淘淘開心]" />-->
<!-- <Emoticon File="taotao_16.png" ID="emoticon_taotao_16" Tag="[淘淘瞌睡]" />-->
<!-- <Emoticon File="taotao_17.png" ID="emoticon_taotao_17" Tag="[淘淘摳鼻]" />-->
<!-- <Emoticon File="taotao_18.png" ID="emoticon_taotao_18" Tag="[淘淘哭泣]" />-->
<!-- <Emoticon File="taotao_19.png" ID="emoticon_taotao_19" Tag="[淘淘苦臉]" />-->
<!-- <Emoticon File="taotao_20.png" ID="emoticon_taotao_20" Tag="[淘淘酷]" />-->
<!-- <Emoticon File="taotao_21.png" ID="emoticon_taotao_21" Tag="[淘淘 酷]" />-->
<!-- <Emoticon File="taotao_22.png" ID="emoticon_taotao_22" Tag="[淘淘狂躁]" />-->
<!-- <Emoticon File="taotao_23.png" ID="emoticon_taotao_23" Tag="[淘淘流汗]" />-->
<!-- <Emoticon File="taotao_24.png" ID="emoticon_taotao_24" Tag="[淘淘罵人]" />-->
<!-- <Emoticon File="taotao_25.png" ID="emoticon_taotao_25" Tag="[淘淘發怒]" />-->
<!-- <Emoticon File="taotao_26.png" ID="emoticon_taotao_26" Tag="[淘淘氣哭]" />-->
<!-- <Emoticon File="taotao_27.png" ID="emoticon_taotao_27" Tag="[淘淘敲頭]" />-->
<!-- <Emoticon File="taotao_28.png" ID="emoticon_taotao_28" Tag="[淘淘親親]" />-->
<!-- <Emoticon File="taotao_29.png" ID="emoticon_taotao_29" Tag="[淘淘吐舌頭]" />-->
<!-- <Emoticon File="taotao_30.png" ID="emoticon_taotao_30" Tag="[淘淘微笑]" />-->
<!-- <Emoticon File="taotao_31.png" ID="emoticon_taotao_31" Tag="[淘淘無辜]" />-->
<!-- <Emoticon File="taotao_32.png" ID="emoticon_taotao_32" Tag="[淘淘捂嘴笑]" />-->
<!-- <Emoticon File="taotao_33.png" ID="emoticon_taotao_33" Tag="[淘淘兇]" />-->
<!-- <Emoticon File="taotao_34.png" ID="emoticon_taotao_34" Tag="[淘淘羞笑]" />-->
<!-- <Emoticon File="taotao_35.png" ID="emoticon_taotao_35" Tag="[淘淘眩暈]" />-->
<!-- <Emoticon File="taotao_36.png" ID="emoticon_taotao_36" Tag="[淘淘疑問]" />-->
<!-- <Emoticon File="taotao_37.png" ID="emoticon_taotao_37" Tag="[淘淘再見]" />-->
<!-- <Emoticon File="taotao_38.png" ID="emoticon_taotao_38" Tag="[淘淘中毒]" />-->
<!-- <Emoticon File="taotao_39.png" ID="emoticon_taotao_39" Tag="[淘淘齜牙]" />-->
</Catalog>
<Catalog Title="lele">
<!-- </Catalog>-->
<!-- <Catalog Title="lele">-->
<Emoticon File="lele_00.png" ID="emoticon_lele_00" Tag="[樂樂安靜]" />
<Emoticon File="lele_01.png" ID="emoticon_lele_01" Tag="[樂樂白眼]" />
<Emoticon File="lele_02.png" ID="emoticon_lele_02" Tag="[樂樂生氣]" />
<Emoticon File="lele_03.png" ID="emoticon_lele_37" Tag="[樂樂再見]" />
<Emoticon File="lele_04.png" ID="emoticon_lele_03" Tag="[樂樂閉嘴]" />
<Emoticon File="lele_05.png" ID="emoticon_lele_04" Tag="[樂樂犯困]" />
<Emoticon File="lele_06.png" ID="emoticon_lele_05" Tag="[樂樂尷尬]" />
<Emoticon File="lele_07.png" ID="emoticon_lele_06" Tag="[樂樂感動]" />
<Emoticon File="lele_08.png" ID="emoticon_lele_07" Tag="[樂樂鼓掌]" />
<Emoticon File="lele_09.png" ID="emoticon_lele_08" Tag="[樂樂害羞]" />
<Emoticon File="lele_10.png" ID="emoticon_lele_09" Tag="[樂樂好色]" />
<Emoticon File="lele_11.png" ID="emoticon_lele_10" Tag="[樂樂黑臉]" />
<Emoticon File="lele_12.png" ID="emoticon_lele_11" Tag="[樂樂急怒]" />
<Emoticon File="lele_13.png" ID="emoticon_lele_12" Tag="[樂樂驚慌]" />
<Emoticon File="lele_14.png" ID="emoticon_lele_13" Tag="[樂樂驚訝]" />
<Emoticon File="lele_15.png" ID="emoticon_lele_14" Tag="[樂樂沮喪]" />
<Emoticon File="lele_16.png" ID="emoticon_lele_15" Tag="[樂樂開心]" />
<Emoticon File="lele_17.png" ID="emoticon_lele_16" Tag="[樂樂瞌睡]" />
<Emoticon File="lele_18.png" ID="emoticon_lele_17" Tag="[樂樂摳鼻]" />
<Emoticon File="lele_19.png" ID="emoticon_lele_18" Tag="[樂樂哭泣]" />
<Emoticon File="lele_20.png" ID="emoticon_lele_19" Tag="[樂樂苦臉]" />
<Emoticon File="lele_21.png" ID="emoticon_lele_20" Tag="[樂樂酷]" />
<Emoticon File="lele_22.png" ID="emoticon_lele_21" Tag="[樂樂 酷]" />
<Emoticon File="lele_23.png" ID="emoticon_lele_22" Tag="[樂樂狂躁]" />
<Emoticon File="lele_24.png" ID="emoticon_lele_23" Tag="[樂樂流汗]" />
<Emoticon File="lele_25.png" ID="emoticon_lele_24" Tag="[樂樂罵人]" />
<Emoticon File="lele_26.png" ID="emoticon_lele_25" Tag="[樂樂發怒]" />
<Emoticon File="lele_27.png" ID="emoticon_lele_26" Tag="[樂樂氣哭]" />
<Emoticon File="lele_28.png" ID="emoticon_lele_27" Tag="[樂樂敲頭]" />
<Emoticon File="lele_29.png" ID="emoticon_lele_28" Tag="[樂樂親親]" />
<Emoticon File="lele_30.png" ID="emoticon_lele_29" Tag="[樂樂吐舌頭]" />
<Emoticon File="lele_31.png" ID="emoticon_lele_30" Tag="[樂樂微笑]" />
<Emoticon File="lele_32.png" ID="emoticon_lele_31" Tag="[樂樂無辜]" />
<Emoticon File="lele_33.png" ID="emoticon_lele_32" Tag="[樂樂捂嘴笑]" />
<Emoticon File="lele_34.png" ID="emoticon_lele_33" Tag="[樂樂兇]" />
<Emoticon File="lele_35.png" ID="emoticon_lele_34" Tag="[樂樂羞笑]" />
<Emoticon File="lele_36.png" ID="emoticon_lele_35" Tag="[樂樂眩暈]" />
<Emoticon File="lele_37.png" ID="emoticon_lele_36" Tag="[樂樂疑問]" />
<Emoticon File="lele_38.png" ID="emoticon_lele_38" Tag="[樂樂中毒]" />
<Emoticon File="lele_39.png" ID="emoticon_lele_39" Tag="[樂樂齜牙]" />
<!-- <Emoticon File="lele_00.png" ID="emoticon_lele_00" Tag="[樂樂安靜]" />-->
<!-- <Emoticon File="lele_01.png" ID="emoticon_lele_01" Tag="[樂樂白眼]" />-->
<!-- <Emoticon File="lele_02.png" ID="emoticon_lele_02" Tag="[樂樂生氣]" />-->
<!-- <Emoticon File="lele_03.png" ID="emoticon_lele_37" Tag="[樂樂再見]" />-->
<!-- <Emoticon File="lele_04.png" ID="emoticon_lele_03" Tag="[樂樂閉嘴]" />-->
<!-- <Emoticon File="lele_05.png" ID="emoticon_lele_04" Tag="[樂樂犯困]" />-->
<!-- <Emoticon File="lele_06.png" ID="emoticon_lele_05" Tag="[樂樂尷尬]" />-->
<!-- <Emoticon File="lele_07.png" ID="emoticon_lele_06" Tag="[樂樂感動]" />-->
<!-- <Emoticon File="lele_08.png" ID="emoticon_lele_07" Tag="[樂樂鼓掌]" />-->
<!-- <Emoticon File="lele_09.png" ID="emoticon_lele_08" Tag="[樂樂害羞]" />-->
<!-- <Emoticon File="lele_10.png" ID="emoticon_lele_09" Tag="[樂樂好色]" />-->
<!-- <Emoticon File="lele_11.png" ID="emoticon_lele_10" Tag="[樂樂黑臉]" />-->
<!-- <Emoticon File="lele_12.png" ID="emoticon_lele_11" Tag="[樂樂急怒]" />-->
<!-- <Emoticon File="lele_13.png" ID="emoticon_lele_12" Tag="[樂樂驚慌]" />-->
<!-- <Emoticon File="lele_14.png" ID="emoticon_lele_13" Tag="[樂樂驚訝]" />-->
<!-- <Emoticon File="lele_15.png" ID="emoticon_lele_14" Tag="[樂樂沮喪]" />-->
<!-- <Emoticon File="lele_16.png" ID="emoticon_lele_15" Tag="[樂樂開心]" />-->
<!-- <Emoticon File="lele_17.png" ID="emoticon_lele_16" Tag="[樂樂瞌睡]" />-->
<!-- <Emoticon File="lele_18.png" ID="emoticon_lele_17" Tag="[樂樂摳鼻]" />-->
<!-- <Emoticon File="lele_19.png" ID="emoticon_lele_18" Tag="[樂樂哭泣]" />-->
<!-- <Emoticon File="lele_20.png" ID="emoticon_lele_19" Tag="[樂樂苦臉]" />-->
<!-- <Emoticon File="lele_21.png" ID="emoticon_lele_20" Tag="[樂樂酷]" />-->
<!-- <Emoticon File="lele_22.png" ID="emoticon_lele_21" Tag="[樂樂 酷]" />-->
<!-- <Emoticon File="lele_23.png" ID="emoticon_lele_22" Tag="[樂樂狂躁]" />-->
<!-- <Emoticon File="lele_24.png" ID="emoticon_lele_23" Tag="[樂樂流汗]" />-->
<!-- <Emoticon File="lele_25.png" ID="emoticon_lele_24" Tag="[樂樂罵人]" />-->
<!-- <Emoticon File="lele_26.png" ID="emoticon_lele_25" Tag="[樂樂發怒]" />-->
<!-- <Emoticon File="lele_27.png" ID="emoticon_lele_26" Tag="[樂樂氣哭]" />-->
<!-- <Emoticon File="lele_28.png" ID="emoticon_lele_27" Tag="[樂樂敲頭]" />-->
<!-- <Emoticon File="lele_29.png" ID="emoticon_lele_28" Tag="[樂樂親親]" />-->
<!-- <Emoticon File="lele_30.png" ID="emoticon_lele_29" Tag="[樂樂吐舌頭]" />-->
<!-- <Emoticon File="lele_31.png" ID="emoticon_lele_30" Tag="[樂樂微笑]" />-->
<!-- <Emoticon File="lele_32.png" ID="emoticon_lele_31" Tag="[樂樂無辜]" />-->
<!-- <Emoticon File="lele_33.png" ID="emoticon_lele_32" Tag="[樂樂捂嘴笑]" />-->
<!-- <Emoticon File="lele_34.png" ID="emoticon_lele_33" Tag="[樂樂兇]" />-->
<!-- <Emoticon File="lele_35.png" ID="emoticon_lele_34" Tag="[樂樂羞笑]" />-->
<!-- <Emoticon File="lele_36.png" ID="emoticon_lele_35" Tag="[樂樂眩暈]" />-->
<!-- <Emoticon File="lele_37.png" ID="emoticon_lele_36" Tag="[樂樂疑問]" />-->
<!-- <Emoticon File="lele_38.png" ID="emoticon_lele_38" Tag="[樂樂中毒]" />-->
<!-- <Emoticon File="lele_39.png" ID="emoticon_lele_39" Tag="[樂樂齜牙]" />-->
</Catalog>
<!-- </Catalog>-->
<Catalog Title="tlt">
<Emoticon File="tlt_gif_00.png" ID="emoticon_tlt_gif_00" Tag="[好喜歡你哦]" />
<Emoticon File="tlt_gif_01.png" ID="emoticon_tlt_gif_01" Tag="[加油鴨]" />
<Emoticon File="tlt_gif_02.png" ID="emoticon_tlt_gif_02" Tag="[老大駕到]" />
<Emoticon File="tlt_gif_03.png" ID="emoticon_tlt_gif_03" Tag="[老妹你真美]" />
<Emoticon File="tlt_gif_04.png" ID="emoticon_tlt_gif_04" Tag="[靈魂抓手]" />
<Emoticon File="tlt_gif_05.png" ID="emoticon_tlt_gif_05" Tag="[菩薩保佑]" />
<Emoticon File="tlt_gif_06.png" ID="emoticon_tlt_gif_06" Tag="[氣屎我了]" />
<Emoticon File="tlt_gif_07.png" ID="emoticon_tlt_gif_07" Tag="[什麼情況]" />
<Emoticon File="tlt_gif_08.png" ID="emoticon_tlt_gif_08" Tag="[送你好運]" />
<Emoticon File="tlt_gif_09.png" ID="emoticon_tlt_gif_09" Tag="[太感動了]" />
<Emoticon File="tlt_gif_10.png" ID="emoticon_tlt_gif_10" Tag="[為愛而戰]" />
<Emoticon File="tlt_gif_11.png" ID="emoticon_tlt_gif_11" Tag="[要得手了]" />
<Emoticon File="tlt_gif_12.png" ID="emoticon_tlt_gif_12" Tag="[勇冠三軍]" />
<Emoticon File="tlt_gif_13.png" ID="emoticon_tlt_gif_13" Tag="[有驚喜哦]" />
<Emoticon File="tlt_gif_14.png" ID="emoticon_tlt_gif_14" Tag="[抓不著就搗蛋]" />
<Emoticon File="tlt_gif_15.png" ID="emoticon_tlt_gif_15" Tag="[聊天結束]" />
<Emoticon File="tlt_gif_16.png" ID="emoticon_tlt_gif_16" Tag="[蒼天啊]" />
<Emoticon File="tlt_gif_17.png" ID="emoticon_tlt_gif_17" Tag="[暈死]" />
<Emoticon File="tlt_gif_18.png" ID="emoticon_tlt_gif_18" Tag="[幹就完了]" />
<Emoticon File="tlt_gif_19.png" ID="emoticon_tlt_gif_19" Tag="[發財了]" />
<Emoticon File="tlt_gif_20.png" ID="emoticon_tlt_gif_20" Tag="[對不起]" />
<Emoticon File="tlt_gif_21.png" ID="emoticon_tlt_gif_21" Tag="[關我屁事]" />
<Emoticon File="tlt_gif_22.png" ID="emoticon_tlt_gif_22" Tag="[嚇死我了]" />
<Emoticon File="tlt_gif_23.png" ID="emoticon_tlt_gif_23" Tag="[送S去咯]" />
<Emoticon File="tlt_gif_24.png" ID="emoticon_tlt_gif_24" Tag="[洗洗睡吧]" />
<Emoticon File="tlt_gif_25.png" ID="emoticon_tlt_gif_25" Tag="[我要滅了你]" />
<Emoticon File="tlt_gif_26.png" ID="emoticon_tlt_gif_26" Tag="[電不倒你]" />
<Emoticon File="tlt_gif_27.png" ID="emoticon_tlt_gif_27" Tag="[大過年的]" />
<Emoticon File="tlt_gif_28.png" ID="emoticon_tlt_gif_28" Tag="[有人放屁]" />
<Emoticon File="tlt_gif_29.png" ID="emoticon_tlt_gif_29" Tag="[好樣的]" />
<Emoticon File="tlt_gif_30.png" ID="emoticon_tlt_gif_30" Tag="[哇噢]" />
<Emoticon File="tlt_gif_31.png" ID="emoticon_tlt_gif_31" Tag="[同志們好]" />
<Emoticon File="tlt_gif_32.png" ID="emoticon_tlt_gif_32" Tag="[沒問題]" />
<Emoticon File="tlt_gif_33.png" ID="emoticon_tlt_gif_33" Tag="[怎麼辦]" />
<Emoticon File="tlt_gif_34.png" ID="emoticon_tlt_gif_34" Tag="[偷瞄一下]" />
<Emoticon File="tlt_gif_35.png" ID="emoticon_tlt_gif_35" Tag="[今天舔誰呢]" />
<!-- <Catalog Title="tlt">-->
<!-- <Emoticon File="tlt_gif_00.png" ID="emoticon_tlt_gif_00" Tag="[好喜歡你哦]" />-->
<!-- <Emoticon File="tlt_gif_01.png" ID="emoticon_tlt_gif_01" Tag="[加油鴨]" />-->
<!-- <Emoticon File="tlt_gif_02.png" ID="emoticon_tlt_gif_02" Tag="[老大駕到]" />-->
<!-- <Emoticon File="tlt_gif_03.png" ID="emoticon_tlt_gif_03" Tag="[老妹你真美]" />-->
<!-- <Emoticon File="tlt_gif_04.png" ID="emoticon_tlt_gif_04" Tag="[靈魂抓手]" />-->
<!-- <Emoticon File="tlt_gif_05.png" ID="emoticon_tlt_gif_05" Tag="[菩薩保佑]" />-->
<!-- <Emoticon File="tlt_gif_06.png" ID="emoticon_tlt_gif_06" Tag="[氣屎我了]" />-->
<!-- <Emoticon File="tlt_gif_07.png" ID="emoticon_tlt_gif_07" Tag="[什麼情況]" />-->
<!-- <Emoticon File="tlt_gif_08.png" ID="emoticon_tlt_gif_08" Tag="[送你好運]" />-->
<!-- <Emoticon File="tlt_gif_09.png" ID="emoticon_tlt_gif_09" Tag="[太感動了]" />-->
<!-- <Emoticon File="tlt_gif_10.png" ID="emoticon_tlt_gif_10" Tag="[為愛而戰]" />-->
<!-- <Emoticon File="tlt_gif_11.png" ID="emoticon_tlt_gif_11" Tag="[要得手了]" />-->
<!-- <Emoticon File="tlt_gif_12.png" ID="emoticon_tlt_gif_12" Tag="[勇冠三軍]" />-->
<!-- <Emoticon File="tlt_gif_13.png" ID="emoticon_tlt_gif_13" Tag="[有驚喜哦]" />-->
<!-- <Emoticon File="tlt_gif_14.png" ID="emoticon_tlt_gif_14" Tag="[抓不著就搗蛋]" />-->
<!-- <Emoticon File="tlt_gif_15.png" ID="emoticon_tlt_gif_15" Tag="[聊天結束]" />-->
<!-- <Emoticon File="tlt_gif_16.png" ID="emoticon_tlt_gif_16" Tag="[蒼天啊]" />-->
<!-- <Emoticon File="tlt_gif_17.png" ID="emoticon_tlt_gif_17" Tag="[暈死]" />-->
<!-- <Emoticon File="tlt_gif_18.png" ID="emoticon_tlt_gif_18" Tag="[幹就完了]" />-->
<!-- <Emoticon File="tlt_gif_19.png" ID="emoticon_tlt_gif_19" Tag="[發財了]" />-->
<!-- <Emoticon File="tlt_gif_20.png" ID="emoticon_tlt_gif_20" Tag="[對不起]" />-->
<!-- <Emoticon File="tlt_gif_21.png" ID="emoticon_tlt_gif_21" Tag="[關我屁事]" />-->
<!-- <Emoticon File="tlt_gif_22.png" ID="emoticon_tlt_gif_22" Tag="[嚇死我了]" />-->
<!-- <Emoticon File="tlt_gif_23.png" ID="emoticon_tlt_gif_23" Tag="[送S去咯]" />-->
<!-- <Emoticon File="tlt_gif_24.png" ID="emoticon_tlt_gif_24" Tag="[洗洗睡吧]" />-->
<!-- <Emoticon File="tlt_gif_25.png" ID="emoticon_tlt_gif_25" Tag="[我要滅了你]" />-->
<!-- <Emoticon File="tlt_gif_26.png" ID="emoticon_tlt_gif_26" Tag="[電不倒你]" />-->
<!-- <Emoticon File="tlt_gif_27.png" ID="emoticon_tlt_gif_27" Tag="[大過年的]" />-->
<!-- <Emoticon File="tlt_gif_28.png" ID="emoticon_tlt_gif_28" Tag="[有人放屁]" />-->
<!-- <Emoticon File="tlt_gif_29.png" ID="emoticon_tlt_gif_29" Tag="[好樣的]" />-->
<!-- <Emoticon File="tlt_gif_30.png" ID="emoticon_tlt_gif_30" Tag="[哇噢]" />-->
<!-- <Emoticon File="tlt_gif_31.png" ID="emoticon_tlt_gif_31" Tag="[同志們好]" />-->
<!-- <Emoticon File="tlt_gif_32.png" ID="emoticon_tlt_gif_32" Tag="[沒問題]" />-->
<!-- <Emoticon File="tlt_gif_33.png" ID="emoticon_tlt_gif_33" Tag="[怎麼辦]" />-->
<!-- <Emoticon File="tlt_gif_34.png" ID="emoticon_tlt_gif_34" Tag="[偷瞄一下]" />-->
<!-- <Emoticon File="tlt_gif_35.png" ID="emoticon_tlt_gif_35" Tag="[今天舔誰呢]" />-->
</Catalog>
<!-- </Catalog>-->
</PopoEmoticons>