From d94d7a75dfaacf2641fb8cdb6b6d9387e8cdd9aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E5=B0=8F=E6=B1=9F?= <461355754@qq.com> Date: Tue, 2 Dec 2025 19:26:37 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=9A=E4=BF=AE=E6=94=B9=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=87=BA=E6=9D=A5=E7=9A=84bug=EF=BC=8C=E5=85=B3=E4=BA=8E?= =?UTF-8?q?=EF=BC=9A=E8=BA=AB=E4=BB=B7=E3=80=81=E6=88=91=E7=9A=84=E5=AE=B6?= =?UTF-8?q?=E6=97=8F=E3=80=81=E6=AD=8C=E6=89=8B=E8=AE=A4=E8=AF=81=E3=80=81?= =?UTF-8?q?=E6=8C=9A=E5=8F=8B=E3=80=81=E6=88=BF=E9=97=B4=E5=BF=83=E8=B7=B3?= =?UTF-8?q?=E3=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moduleutil/bean/CombinedGiftBean.java | 5 +- .../moduleutil/bean/GiftUserWallBean.java | 5 +- .../com/xscm/moduleutil/bean/UserInfo.java | 2 + .../com/xscm/moduleutil/http/ApiServer.java | 3 +- .../xscm/moduleutil/http/RetrofitClient.java | 4 +- .../com/xscm/moduleutil/widget/Constants.java | 2 +- .../ease_row_received_message_user_send.xml | 2 +- .../room/fragment/RoomMentorShipFragment.kt | 8 +- .../user/activity/NobleDetailsActivity.java | 4 +- .../activity/SingerVerificationActivity.java | 51 ++++++++++- .../user/activity/UserFamilyActivity.kt | 2 +- .../user/activity/UserPlaylistActivity.java | 7 +- .../user/fragment/JoinedFamilyFragment.kt | 87 +++++++++++++------ .../modulemain/adapter/EaseChatAdapter.java | 75 ++++++++++++---- .../modulemain/dialog/CustomInputDialog.java | 2 +- .../modulemain/dialog/UserNetWorthDialog.kt | 1 + .../modulemain/service/ForegroundService.kt | 3 +- .../res/layout/activity_user_playlist.xml | 14 ++- .../src/main/res/layout/dialog_gift_song.xml | 2 +- .../main/res/layout/fragment_bosom_friend.xml | 9 +- .../res/layout/fragment_joined_family.xml | 9 +- .../main/res/layout/fragment_my_family.xml | 7 +- .../res/layout/fragment_room_user_info.xml | 2 +- .../main/res/layout/item_user_playlist.xml | 10 ++- 24 files changed, 239 insertions(+), 77 deletions(-) diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/CombinedGiftBean.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/CombinedGiftBean.java index 9e201d79..0cb287e3 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/CombinedGiftBean.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/CombinedGiftBean.java @@ -1,5 +1,6 @@ package com.xscm.moduleutil.bean; +import java.io.Serializable; import java.util.List; import lombok.Data; @@ -10,7 +11,7 @@ import lombok.Data; * @Description $ */ @Data -public class CombinedGiftBean { +public class CombinedGiftBean implements Serializable { private int gift_id; private String gift_price; private String gift_name; @@ -21,7 +22,7 @@ public class CombinedGiftBean { private boolean is_liang; @Data - public static class TopUsers { + public static class TopUsers implements Serializable{ private int user_id; private String nickname; private String avatar; diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/GiftUserWallBean.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/GiftUserWallBean.java index 4dd64bd1..086ad4bc 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/GiftUserWallBean.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/GiftUserWallBean.java @@ -1,5 +1,6 @@ package com.xscm.moduleutil.bean; +import java.io.Serializable; import java.util.List; import lombok.Data; @@ -10,11 +11,11 @@ import lombok.Data; * @Description $ 礼物墙展示接口 */ @Data -public class GiftUserWallBean { +public class GiftUserWallBean implements Serializable { private List liang; private List no_liang; @Data - public static class GiftWallBean { + public static class GiftWallBean implements Serializable { private int gift_id; private String gift_price; private String gift_name; diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/UserInfo.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/UserInfo.java index f5d7aadd..c97b06b7 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/UserInfo.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/UserInfo.java @@ -85,6 +85,8 @@ public class UserInfo extends BaseEvent implements Serializable { private int singer_level;//歌手等级 private CpInfo cp_info; private int market_value;//身价 + private String market_value_coin="";//身价配置 多少金币数 + private String market_value_market="";//身价配置 多少身价数 private String sign_value; private String sign_id; diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java b/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java index 947b44f3..441cb368 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java @@ -617,8 +617,9 @@ public interface ApiServer { @POST(Constants.DELAY) Call> delay(@Field("friend_id") String friend_id, @Field("room_id") String room_id, @Field("delay_times") String delay_times); + @FormUrlEncoded @POST(Constants.POST_KEEP_XINTIAO) - Call keepXintiao(); + Call keepXintiao(@Field("room_id") String room_id); @FormUrlEncoded @POST(Constants.DOWN_PIT) diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java index 6d0e243b..7f7ba89f 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java @@ -3324,8 +3324,8 @@ public class RetrofitClient { }); } - public void keepXintiao() { - sApiServer.keepXintiao().enqueue(new Callback() { + public void keepXintiao(String roomId) { + sApiServer.keepXintiao(roomId).enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java b/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java index 096e11c8..fde4ba84 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java @@ -391,7 +391,7 @@ public class Constants { public static final String GET_THEME_DATA = "/api/Theme/get_theme_data";//主题接口 public static final String START_FRIEND = "/api/Friend/start_friend";//点击开始按钮 交友房 public static final String DELAY = "/api/Friend/delay";//点击延时 交友房 - public static final String POST_KEEP_XINTIAO = "/api/Xintiao/keep_xintiao";//心跳 + public static final String POST_KEEP_XINTIAO = "/api/Xintiao/keep_room_heartbeat";//心跳 public static final String END_FRIEND = "/api/Friend/end_friend";//点击结束 交友房 public static final String CREATE_RELATION = "/api/Friend/create_relation";//卡关系 (创建关系) 交友房 public static final String GET_BOX_GIFT_LIST = "/api/BlindBoxTurntable/get_gift_list";//获取活动礼物列表 diff --git a/BaseModule/src/main/res/layout/ease_row_received_message_user_send.xml b/BaseModule/src/main/res/layout/ease_row_received_message_user_send.xml index 98b3b50b..49e41cbc 100644 --- a/BaseModule/src/main/res/layout/ease_row_received_message_user_send.xml +++ b/BaseModule/src/main/res/layout/ease_row_received_message_user_send.xml @@ -40,7 +40,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_2" - android:textColor="#CCA882" + android:textColor="@color/white" android:textSize="@dimen/sp_12" app:isShine="false" app:layout_constraintStart_toEndOf="@+id/avatar" diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomMentorShipFragment.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomMentorShipFragment.kt index f9b1a141..bd1c0936 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomMentorShipFragment.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/room/fragment/RoomMentorShipFragment.kt @@ -1,8 +1,11 @@ package com.xscm.modulemain.activity.room.fragment import android.annotation.SuppressLint +import android.content.Context import android.os.Bundle +import android.os.Vibrator import android.view.Gravity +import android.view.HapticFeedbackConstants import android.view.LayoutInflater import android.view.View import android.widget.PopupWindow @@ -411,7 +414,6 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : override fun signCoinList(list: List) { MvpPre!!.wallet(list) } - override fun wallet(list: List, walletBean: WalletBean?) { if (dialogMentorShip == null) { dialogMentorShip = DialogMentorShip(ActivityUtils.getTopActivity()) @@ -419,6 +421,10 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) : dialogMentorShip?.show(list, mSignPitBean, walletBean, object : DialogMentorShip.OnItemClickListener { override fun onItemClick(coin: String) { + // 触发轻微震动 + view?.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY) + + MvpPre!!.signCoin(mSignId!!, coin) } }) diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/NobleDetailsActivity.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/NobleDetailsActivity.java index 34775aff..ecd7a097 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/NobleDetailsActivity.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/NobleDetailsActivity.java @@ -164,7 +164,7 @@ public class NobleDetailsActivity extends BaseMvpActivity=index){ @@ -182,7 +182,7 @@ public class NobleDetailsActivity extends BaseMvpActivity 1) { // 如果有多个录音片段,合并它们 mergeAudioFiles(); + // 更新录音时长为所有片段的总时长 + updateRecordingDuration(); } else if (recordingSegments.size() == 1) { // 只有一个录音片段,直接使用 recordingFile = recordingSegments.get(0); @@ -373,9 +389,11 @@ public class SingerVerificationActivity extends BaseMvpActivity { + new DialogWebView(this).show(CommonAppContext.getInstance().currentEnvironment.getServerUrl() + + "api/Page/page_show?id=34"); }); // 设置删除点击事件 diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/JoinedFamilyFragment.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/JoinedFamilyFragment.kt index 130fd230..f4186157 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/JoinedFamilyFragment.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/JoinedFamilyFragment.kt @@ -36,7 +36,10 @@ class JoinedFamilyFragment(var data: MyFamilyBean) : BaseFragment - if (view.id == R.id.iv_head) { - val item = dataList[position] - val intent = Intent(activity, UserHomepageActivity::class.java) - intent.putExtra("userId", item.user_id.toString() + "") - startActivity(intent) + // 安全地设置用户名颜色 + if (groupOwnerInfo != null && !groupOwnerInfo.nickname_color.isNullOrEmpty()) { + try { + mBinding.tvUserName.startColor = Color.parseColor(groupOwnerInfo.nickname_color) + mBinding.tvUserName.shineColor = Color.parseColor(groupOwnerInfo.nickname_color) + mBinding.tvUserName.endColor = Color.parseColor(groupOwnerInfo.nickname_color) + mBinding.tvUserName.isShine = true + mBinding.tvUserName.shineType = 0 + } catch (e: IllegalArgumentException) { + // 如果颜色解析失败,使用默认颜色 + e.printStackTrace() + mBinding.tvUserName.setTextColor(Color.parseColor("#212121")) + mBinding.tvUserName.isShine = false + } + } + + // 安全地设置用户ID + mBinding.tvUserId.setText("ID: ${groupOwnerInfo?.user_code ?: ""}") + mBinding.tvZsyNum.text = data.group_earnings ?: "0" + // 安全地设置群组人数 + mBinding.tvSignNum.setText("群组人数:${data.group_members_num ?: 0}") + + // 确保activity不为null + if (activity != null) { + adapter = MyFamilyAdapter(activity!!, userId, R.layout.item_family_members, dataList) + mBinding.recyclerView.adapter = adapter + val commonEmptyView = CommonEmptyView(activity!!) + commonEmptyView.setImg(R.mipmap.ic_empty) + commonEmptyView.setTextColor(getResources().getColor(com.xscm.moduleutil.R.color.color_FFBDBDBC)) + adapter?.bindToRecyclerView(mBinding.recyclerView) + adapter?.setEmptyView(commonEmptyView) + adapter?.setOnItemChildClickListener { adapter, view, position -> + if (view.id == R.id.iv_head) { + val item = dataList[position] + val intent = Intent(activity, UserHomepageActivity::class.java) + intent.putExtra("userId", item.user_id.toString() + "") + startActivity(intent) + } } } } diff --git a/MainModule/src/main/java/com/xscm/modulemain/adapter/EaseChatAdapter.java b/MainModule/src/main/java/com/xscm/modulemain/adapter/EaseChatAdapter.java index 06662253..6af69a7c 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/adapter/EaseChatAdapter.java +++ b/MainModule/src/main/java/com/xscm/modulemain/adapter/EaseChatAdapter.java @@ -205,8 +205,9 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter() { @Override public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { - // 将资源转换为 Bitmap - if (resource instanceof BitmapDrawable) { - Bitmap bitmap = ((BitmapDrawable) resource).getBitmap(); - // 创建新的文件名 - Drawable fakeNinePatch = new FakeNinePatchDrawable(bitmap, 0.4f, 0.4f, 0.6f, 0.5f); + // 检查视图是否仍属于当前数据项 + if (bubbleId.equals(bubbleView.getTag())) { + // 将资源转换为 Bitmap + if (resource instanceof BitmapDrawable) { + Bitmap bitmap = ((BitmapDrawable) resource).getBitmap(); + // 创建新的文件名 + Drawable fakeNinePatch = new FakeNinePatchDrawable(bitmap, 0.4f, 0.4f, 0.6f, 0.5f); - // 保存图片到本地 - helper.getView(com.xscm.moduleutil.R.id.bubble).setBackground(fakeNinePatch); + // 设置背景 + bubbleView.setBackground(fakeNinePatch); + } } } @Override public void onLoadFailed(@Nullable Drawable errorDrawable) { - // 加载失败处理 + // 检查视图是否仍属于当前数据项 + if (bubbleId.equals(bubbleView.getTag())) { + // 加载失败时使用默认背景 + bubbleView.setBackgroundResource(com.xscm.moduleutil.R.drawable.ease_row_pubilc_user_bg); + } } }); } else { - helper.getView(com.xscm.moduleutil.R.id.bubble).setBackgroundResource(com.xscm.moduleutil.R.drawable.ease_row_pubilc_user_bg); + // 检查视图是否仍属于当前数据项 + if (bubbleId.equals(bubbleView.getTag())) { + bubbleView.setBackgroundResource(com.xscm.moduleutil.R.drawable.ease_row_pubilc_user_bg); + } } if (emMessage.getText().getEmoji() != null && emMessage.getText().getEmoji().getAnimate_image() != null) { - // 为每个加载任务设置唯一标识 - String uniqueId = emMessage.getRoomId() + "_" + helper.getLayoutPosition(); + String uniqueId = emMessage.getRoomId() + "_" + helper.getLayoutPosition() + "_emoji"; emojiImageView.setTag(uniqueId); //这段代码使用 Optional 链式调用安全地获取 emMessage 中的 animate_image 字段,避免空指针异常。如果任意环节为 null,则返回空字符串。 @@ -324,19 +348,31 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter target, boolean isFirstResource) { - + // 加载失败时检查视图是否仍属于当前数据项 + if (uniqueId.equals(emojiImageView.getTag())) { + // 加载静态表情作为备选 + Glide.with(mContext) + .load(emMessage.getText().getEmoji().getImage()) + .into(emojiImageView); + } return false; } }) .into(emojiImageView); } else { - Glide.with(mContext) - .load(emMessage.getText().getEmoji().getImage()) - .into(emojiImageView); + // 检查视图是否仍属于当前数据项 + if (uniqueId.equals(emojiImageView.getTag())) { + Glide.with(mContext) + .load(emMessage.getText().getEmoji().getImage()) + .into(emojiImageView); + } } } else { + // 确保在非表情情况下,重置视图状态 helper.getView(com.xscm.moduleutil.R.id.tv_content).setVisibility(View.VISIBLE); emojiImageView.setVisibility(View.GONE); + // 清除可能存在的异步加载任务 + Glide.with(mContext).clear(emojiImageView); } break; case 3: @@ -412,6 +448,13 @@ public class EaseChatAdapter extends BaseMultiItemQuickAdapter { public void onGiftConfirm(String giftId, String name, String giftNum) { mGiftId = giftId; mGiftNum = giftNum; - mBinding.tvClickable.setText(name); + mBinding.tvClickable.setText(name+" x"+giftNum); } }); diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/UserNetWorthDialog.kt b/MainModule/src/main/java/com/xscm/modulemain/dialog/UserNetWorthDialog.kt index 728bf5dc..b1131626 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/dialog/UserNetWorthDialog.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/UserNetWorthDialog.kt @@ -36,6 +36,7 @@ class UserNetWorthDialog(context: Context) : private fun setupViews() { userInfo= SpUtil.getUserInfo() mBinding.tv2.setText(userInfo.market_value.toString()) + mBinding.tvSlsjValue.text="收礼身价,等于 通过累计收礼的价值,每${userInfo.market_value_coin}个金币等于${userInfo.market_value_market}身价" } private fun setupWindow() { diff --git a/MainModule/src/main/java/com/xscm/modulemain/service/ForegroundService.kt b/MainModule/src/main/java/com/xscm/modulemain/service/ForegroundService.kt index 21074c2a..6a2b28d3 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/service/ForegroundService.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/service/ForegroundService.kt @@ -5,6 +5,7 @@ import android.content.Intent import android.os.IBinder import android.util.Log import com.tencent.imsdk.v2.V2TIMManager +import com.xscm.moduleutil.base.CommonAppContext import com.xscm.moduleutil.http.RetrofitClient import java.util.* @@ -21,7 +22,7 @@ class ForegroundService : Service() { timer?.schedule(object : TimerTask() { override fun run() { Log.d("ForegroundService", "Timer task ${logInt++}") - RetrofitClient.getInstance().keepXintiao(); + RetrofitClient.getInstance().keepXintiao(CommonAppContext.getInstance().playId); } }, 0L, 60000L) } diff --git a/MainModule/src/main/res/layout/activity_user_playlist.xml b/MainModule/src/main/res/layout/activity_user_playlist.xml index bef69803..d74b9422 100644 --- a/MainModule/src/main/res/layout/activity_user_playlist.xml +++ b/MainModule/src/main/res/layout/activity_user_playlist.xml @@ -22,8 +22,20 @@ app:layout_constraintTop_toBottomOf="@+id/top_bar" app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="@dimen/dp_16" + android:textColor="@color/color_666666" /> + + diff --git a/MainModule/src/main/res/layout/fragment_bosom_friend.xml b/MainModule/src/main/res/layout/fragment_bosom_friend.xml index 23916419..02b33dbe 100644 --- a/MainModule/src/main/res/layout/fragment_bosom_friend.xml +++ b/MainModule/src/main/res/layout/fragment_bosom_friend.xml @@ -34,7 +34,8 @@ + android:layout_height="match_parent" + android:fillViewport="true"> - diff --git a/MainModule/src/main/res/layout/fragment_joined_family.xml b/MainModule/src/main/res/layout/fragment_joined_family.xml index 6387e3f4..3cc9191e 100644 --- a/MainModule/src/main/res/layout/fragment_joined_family.xml +++ b/MainModule/src/main/res/layout/fragment_joined_family.xml @@ -10,15 +10,14 @@ android:orientation="vertical"> - + > @@ -155,6 +155,7 @@ - + diff --git a/MainModule/src/main/res/layout/fragment_my_family.xml b/MainModule/src/main/res/layout/fragment_my_family.xml index f0b55077..89063c3a 100644 --- a/MainModule/src/main/res/layout/fragment_my_family.xml +++ b/MainModule/src/main/res/layout/fragment_my_family.xml @@ -10,15 +10,14 @@ android:orientation="vertical"> - + > - + diff --git a/MainModule/src/main/res/layout/fragment_room_user_info.xml b/MainModule/src/main/res/layout/fragment_room_user_info.xml index 1b038aa9..998204d5 100644 --- a/MainModule/src/main/res/layout/fragment_room_user_info.xml +++ b/MainModule/src/main/res/layout/fragment_room_user_info.xml @@ -436,7 +436,7 @@ android:layout_height="wrap_content" android:background="@mipmap/icon_dialog_u_cp_left_top" android:gravity="center" - android:text="CP" + android:text="心动" android:textColor="@color/white" /> + +