diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/HeartCpBean.kt b/BaseModule/src/main/java/com/xscm/moduleutil/bean/HeartCpBean.kt new file mode 100644 index 00000000..0206718a --- /dev/null +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/HeartCpBean.kt @@ -0,0 +1,102 @@ +package com.xscm.moduleutil.bean + +import java.io.Serializable + +class HeartCpBean : Serializable { + + + /* { + "code": 1, + "msg": "\u6210\u529f", + "data": { + "id": 1, + "user_id1": 20001, + "user_id2": 20003, + "status": 1, + "level": 1, + "exp": 9198, + "createtime": 1763720783, + "user_info1": { + "user_id": 20001, + "nickname": "\u9ad8\u5174\u7684\u5c0f\u6d77\u817e", + "avatar": "https:\/\/yusheng-1369267578.cos.ap-guangzhou.myqcloud.com\/images\/ios_images\/1761615690733.jpeg" + }, + "user_info2": { + "user_id": 20003, + "nickname": "\u79c0\u4e3d\u7684\u978b\u57ab", + "avatar": "https:\/\/yusheng-1369267578.cos.ap-guangzhou.myqcloud.com\/images\/android_images\/33e31b18577856c4f10906b7cabaa698.jpg" + }, + "next_level_exp": 802, + "pendant": "https:\/\/cos.xscmmidi.site\/admin\/520liuxingyu_17637096968287.mp4", + "gift_log": [ + { + "id": 323, + "room_id": 6003, + "from_user_id": 20001, + "to_user_id": 20003, + "gift_id": 313, + "num": 1, + "cp_zone_id": 1, + "exp": "1314", + "exp_total": "9198", + "remark": "\u9001\u7ed9\u79c0\u4e3d\u7684\u978b\u57ab1\u4e2a\u9e4a\u7f18\u7ec7\u68a6,\u83b7\u5f971314\u7ecf\u9a8c\u503c\uff0c\u603b\u7ecf\u9a8c\u503c\u589e\u52a0\u81f39198", + "createtime": 1763796118, + "gift_name": "\u9e4a\u7f18\u7ec7\u68a6", + "from_user_info": { + "user_id": 20001, + "nickname": "\u9ad8\u5174\u7684\u5c0f\u6d77\u817e", + "avatar": "https:\/\/yusheng-1369267578.cos.ap-guangzhou.myqcloud.com\/images\/ios_images\/1761615690733.jpeg" + }, + "to_user_info": { + "user_id": 20003, + "nickname": "\u79c0\u4e3d\u7684\u978b\u57ab", + "avatar": "https:\/\/yusheng-1369267578.cos.ap-guangzhou.myqcloud.com\/images\/android_images\/33e31b18577856c4f10906b7cabaa698.jpg" + } + }] + }, + "api_version": "" + }*/ + + var id: Int = 0 + var user_id1: Int = 0 + var user_id2: Int = 0 + var status: Int = 0 + var level: Int = 0 + var exp: Long = 0 + var createtime: Long = 0 + var user_info1: UserInfo = UserInfo() + var user_info2: UserInfo = UserInfo() + var next_level_exp: Long = 0 + var pendant: String = "" + var gift_log: List = ArrayList() + var api_version: String = "" + + class GiftLog : Serializable { + var id: Int = 0 + var room_id: Int = 0 + var from_user_id: Int = 0 + var to_user_id: Int = 0 + var gift_id: Int = 0 + var num: Int = 0 + var cp_zone_id: Int = 0 + var exp: String = "" + var exp_total: String = "" + var remark: String = "" + var createtime: Long = 0 + var gift_name: String = "" + var from_user_info: UserInfo = UserInfo() + var to_user_info: UserInfo = UserInfo() + + class UserInfo : Serializable { + var user_id: Int = 0 + var nickname: String = "" + var avatar: String = "" + } + } + + class UserInfo : Serializable { + var user_id: Int = 0 + var nickname: String = "" + var avatar: String = "" + } +} \ No newline at end of file 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 b73795a5..1701f2c8 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java @@ -856,4 +856,7 @@ public interface ApiServer { @POST(Constants.ROOM_USER_RECONNECT) Call> roomUserReconnect(@Field("room_id") String room_id); + @GET(Constants.GET_CP_ZONE) + Call> getCpRoom(@Query("user_id") String userId); + } 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 36c18d04..0000bd0a 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java @@ -141,7 +141,9 @@ public class RetrofitClient { mRetrofit = provideRetrofit(provideOkHttpClient()); sApiServer = mRetrofit.create(ApiServer.class); } + private CPListener cpListener; + public void CpListener(CPListener cpListenter) { this.cpListener = cpListenter; } @@ -604,7 +606,7 @@ public class RetrofitClient { }); } - public void singerSongCut(String id,BaseObserver observer) { + public void singerSongCut(String id, BaseObserver observer) { sApiServer.singerSongCut(id).enqueue(new Callback>() { @Override @@ -632,7 +634,7 @@ public class RetrofitClient { }); } - public void singerSongTop(String id,BaseObserver observer){ + public void singerSongTop(String id, BaseObserver observer) { sApiServer.singerSongTop(id).enqueue(new Callback>() { @Override @@ -662,8 +664,8 @@ public class RetrofitClient { }); } - public void singerSongCount(String roomId,BaseObserver observer){ - sApiServer.singerSongCount(roomId).enqueue(new Callback>(){ + public void singerSongCount(String roomId, BaseObserver observer) { + sApiServer.singerSongCount(roomId).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { @@ -678,7 +680,7 @@ public class RetrofitClient { } catch (ClassNotFoundException e) { } - }else { + } else { ToastUtils.showShort(baseModel.getMsg()); } } @@ -3094,19 +3096,19 @@ public class RetrofitClient { sApiServer.roomGift(room_id, gift_id, gift_num, to_uid, type, pit_number, heart_id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { - if (response.code()==200){ + if (response.code() == 200) { BaseModel data = response.body(); - if (data.getCode()==1) { - if (data.getData().getCp_type()!=null){ - if (cpListener !=null){ + if (data.getCode() == 1) { + if (data.getData().getCp_type() != null) { + if (cpListener != null) { cpListener.onSendCpMsg(data.getData()); } } observer.onNext(data.getData()); - }else if (data.getCode()==0){ + } else if (data.getCode() == 0) { ToastUtils.showShort(data.getMsg()); - }else if (data.getCode()==301) { + } else if (data.getCode() == 301) { try { ToastUtils.showShort(data.getMsg()); CommonAppContext.getInstance().clearLoginInfo(); @@ -3124,24 +3126,24 @@ public class RetrofitClient { }); } - public void cpGiveGift(String user_id, String gift_id,String room_id,BaseObserver observer) { - sApiServer.cpGiveGift(user_id, gift_id,room_id).enqueue(new Callback>() { + public void cpGiveGift(String user_id, String gift_id, String room_id, BaseObserver observer) { + sApiServer.cpGiveGift(user_id, gift_id, room_id).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { - if (response.code()==200){ + if (response.code() == 200) { BaseModel data = response.body(); - if (data.getCode()==1) { - if (data.getData().getCp_type()!=null){ - if (cpListener !=null){ + if (data.getCode() == 1) { + if (data.getData().getCp_type() != null) { + if (cpListener != null) { cpListener.onSendCpMsg(data.getData()); } } observer.onNext(data.getData()); - }else if (data.getCode()==0){ + } else if (data.getCode() == 0) { ToastUtils.showShort(data.getMsg()); - }else if (data.getCode()==301) { + } else if (data.getCode() == 301) { try { ToastUtils.showShort(data.getMsg()); CommonAppContext.getInstance().clearLoginInfo(); @@ -3154,7 +3156,7 @@ public class RetrofitClient { @Override public void onFailure(Call> call, Throwable t) { - LogUtils.e("cpGiveGift",t.fillInStackTrace()); + LogUtils.e("cpGiveGift", t.fillInStackTrace()); } }); } @@ -3403,7 +3405,6 @@ public class RetrofitClient { } - public void agreeSong(String room_id, String type, BaseObserver observer) { sApiServer.agreeSong(room_id, type).enqueue(new Callback>() { @Override @@ -3623,23 +3624,23 @@ public class RetrofitClient { }); } - public void getFriendListMore(String user_id,String relation_id,BaseObserver> observer){ - sApiServer.getFriendListMore(user_id,relation_id).enqueue(new Callback>>() { + public void getFriendListMore(String user_id, String relation_id, BaseObserver> observer) { + sApiServer.getFriendListMore(user_id, relation_id).enqueue(new Callback>>() { @Override public void onResponse(Call>> call, Response>> response) { - if (response.code()==200){ + if (response.code() == 200) { BaseModel> baseModel = response.body(); - if (baseModel.getCode()==1) { + if (baseModel.getCode() == 1) { observer.onNext(baseModel.getData()); - }else if (baseModel.getCode()==301){ + } else if (baseModel.getCode() == 301) { try { ToastUtils.showShort(baseModel.getMsg()); CommonAppContext.getInstance().clearLoginInfo(); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } - }else { + } else { ToastUtils.showShort(baseModel.getMsg()); } } @@ -3647,7 +3648,7 @@ public class RetrofitClient { @Override public void onFailure(Call>> call, Throwable t) { - LogUtils.e("getFriendListMore",t.toString()); + LogUtils.e("getFriendListMore", t.toString()); } }); } @@ -3783,22 +3784,22 @@ public class RetrofitClient { }); } - public void getFriendList(String userId,String page,String page_limit,BaseObserver observer) { + public void getFriendList(String userId, String page, String page_limit, BaseObserver observer) { sApiServer.getFriendList(userId, page, page_limit).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { - if (response.code()==200){ + if (response.code() == 200) { BaseModel body = response.body(); - if (body.getCode()==1){ + if (body.getCode() == 1) { observer.onNext(body.getData()); - }else if (body.getCode()==301){ + } else if (body.getCode() == 301) { try { ToastUtils.showShort(body.getMsg()); CommonAppContext.getInstance().clearLoginInfo(); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } - }else { + } else { ToastUtils.showShort(body.getMsg()); } } @@ -3806,7 +3807,7 @@ public class RetrofitClient { @Override public void onFailure(Call> call, Throwable t) { - LogUtils.e("getFriendList",t.fillInStackTrace()); + LogUtils.e("getFriendList", t.fillInStackTrace()); } }); } @@ -4555,4 +4556,27 @@ public class RetrofitClient { }); } + + public void getCpRoom(String userId,BaseObserver observer) { + sApiServer.getCpRoom(userId).enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if (response.code() == 200) { + BaseModel baseModel = response.body(); + if (baseModel.getCode() == 1) { + observer.onNext(baseModel.getData()); + } else if (baseModel.getCode() == 0) { + observer.onNext(null); + } + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + t.printStackTrace(); + } + }); + } + + } diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/presenter/BasePresenter.java b/BaseModule/src/main/java/com/xscm/moduleutil/presenter/BasePresenter.java index 472acbca..9f7796a1 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/presenter/BasePresenter.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/presenter/BasePresenter.java @@ -30,6 +30,10 @@ public abstract class BasePresenter implements IPresenter { mContext = context; } + public BasePresenter() { + + } + private void attachView(V view) { MvpRef = new WeakReference(view); } diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/utils/TimeUtils.java b/BaseModule/src/main/java/com/xscm/moduleutil/utils/TimeUtils.java index 7db0690a..552e1271 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/utils/TimeUtils.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/utils/TimeUtils.java @@ -189,7 +189,7 @@ public class TimeUtils { } public static String getDateToStringNoZ(long time) { Date d = new Date(time); - SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sf.format(d); } @@ -255,7 +255,7 @@ public class TimeUtils { } // 如果天数不足1天,根据需求可以返回空字符串,也可以返回 "0天" 或其他 - return ""; // 或者 return "0天"; + return "1天"; // 或者 return "0天"; } } 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 47d748bf..f8fa9010 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java @@ -279,6 +279,7 @@ public class Constants { public static final String GET_ROOM_GIFT = "/api/Room/room_give_gift";//直播间送礼 public static final String POST_CP_GIVE_GIFT = "/api/UserCp/cpGiveGift";//用户CP礼物回赠 + public static final String GET_CP_ZONE = "/api/UserCp/cpZone";//心动空间 public static final String GET_ROOM_USER = "/api/Room/room_user_home";//房间内点击头像 public static final String APPLY_PIT = "/api/RoomPit/apply_pit";//申请上麦 public static final String DOWN_PIT = "/api/RoomPit/down_pit";//下麦 diff --git a/BaseModule/src/main/res/mipmap-hdpi/icon_cp_anim_bg.png b/BaseModule/src/main/res/mipmap-hdpi/icon_cp_anim_bg.png new file mode 100644 index 00000000..28555a7c Binary files /dev/null and b/BaseModule/src/main/res/mipmap-hdpi/icon_cp_anim_bg.png differ diff --git a/BaseModule/src/main/res/mipmap-xhdpi/icon_cp_anim_bg.png b/BaseModule/src/main/res/mipmap-xhdpi/icon_cp_anim_bg.png new file mode 100644 index 00000000..b4c6d48c Binary files /dev/null and b/BaseModule/src/main/res/mipmap-xhdpi/icon_cp_anim_bg.png differ diff --git a/BaseModule/src/main/res/mipmap-xxhdpi/icon_cp_anim_bg.png b/BaseModule/src/main/res/mipmap-xxhdpi/icon_cp_anim_bg.png new file mode 100644 index 00000000..40d23e2f Binary files /dev/null and b/BaseModule/src/main/res/mipmap-xxhdpi/icon_cp_anim_bg.png differ diff --git a/MainModule/src/main/AndroidManifest.xml b/MainModule/src/main/AndroidManifest.xml index 5bf8288a..4b4ee369 100644 --- a/MainModule/src/main/AndroidManifest.xml +++ b/MainModule/src/main/AndroidManifest.xml @@ -6,6 +6,9 @@ + diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/HeartCpActivity.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/HeartCpActivity.kt new file mode 100644 index 00000000..a0768587 --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/HeartCpActivity.kt @@ -0,0 +1,124 @@ +package com.xscm.modulemain.activity.user.activity + +import android.content.Intent +import android.os.Bundle +import com.alibaba.android.arouter.launcher.ARouter +import com.xscm.modulemain.BaseMvpActivity +import com.xscm.modulemain.R +import com.xscm.modulemain.activity.user.conacts.HeartCpContact +import com.xscm.modulemain.activity.user.presenter.HeartCpPresenter +import com.xscm.modulemain.adapter.ItemCpHeartAdapter +import com.xscm.modulemain.databinding.ActivityHeartCpBinding +import com.xscm.moduleutil.bean.HeartCpBean +import com.xscm.moduleutil.utils.ARouteConstants +import com.xscm.moduleutil.utils.ImageUtils +import com.xscm.moduleutil.utils.TimeUtils + +class HeartCpActivity : BaseMvpActivity(), + HeartCpContact.View { + + + private var adapter: ItemCpHeartAdapter? = null + + private var dataList: MutableList? = arrayListOf() + + private var mHeartData: HeartCpBean? = null + override fun getLayoutId(): Int { + return R.layout.activity_heart_cp + } + + override fun bindPresenter(): HeartCpPresenter { + return HeartCpPresenter(this, this) + } + + private var userId: Int = 0 + + private var leftUserId: Int = 0 + private var rightUserId: Int = 0 + + override fun doDone() { + super.doDone() + userId = intent.getIntExtra("userId", 0) + } + + + override fun initData() { + MvpPre.getHeartCpData(userId) + + mBinding.ivBack.setOnClickListener { + finish() + } + mBinding.ivHelp.setOnClickListener { + + } + + mBinding.ivHeadLeft.setOnClickListener { + if (mHeartData == null || leftUserId == 0) + return@setOnClickListener + + ARouter.getInstance().build(ARouteConstants.USER_HOME_PAGE) + .withString("userId", leftUserId.toString()).navigation(); + finish() + } + + mBinding.ivHeadRight.setOnClickListener { + if (mHeartData == null || rightUserId == 0) + return@setOnClickListener + + ARouter.getInstance().build(ARouteConstants.USER_HOME_PAGE) + .withString("userId", rightUserId.toString()).navigation() + finish() + } + + adapter?.setOnItemClickListener { adapter, view, position -> + ARouter.getInstance().build(ARouteConstants.USER_HOME_PAGE) + .withString("userId", mHeartData?.gift_log!![position].from_user_id.toString()) + .navigation(); + finish() + } + + } + + override fun initView() { + super.initView() + adapter = ItemCpHeartAdapter(this, userId, R.layout.item_heart_cp_layout, dataList) + mBinding.recycleView.adapter = adapter + } + + + override fun getHeartCpData(heartCpBean: HeartCpBean?) { + if (heartCpBean == null) { + return + } + mHeartData = heartCpBean + + if (userId == heartCpBean.user_id1) { + ImageUtils.loadHead(heartCpBean.user_info1.avatar, mBinding.ivHeadLeft) + ImageUtils.loadHead(heartCpBean.user_info2.avatar, mBinding.ivHeadRight) + leftUserId = heartCpBean.user_id1 + rightUserId = heartCpBean.user_id2 + } else { + ImageUtils.loadHead(heartCpBean.user_info2.avatar, mBinding.ivHeadLeft) + ImageUtils.loadHead(heartCpBean.user_info1.avatar, mBinding.ivHeadRight) + leftUserId = heartCpBean.user_id2 + rightUserId = heartCpBean.user_id1 + } + + mBinding.cpAnim.setSource(heartCpBean.pendant, 1) + + val xd = heartCpBean.next_level_exp + if (xd >= 10000) { + mBinding.tvExperience.text = String.format("%.0fw", xd / 10000.0f) + } else { + mBinding.tvExperience.text = xd.toString() + } + + adapter?.setNewData(heartCpBean.gift_log) + + val day = TimeUtils.formatDurationDaysOnly( + heartCpBean.createtime * 1000 - System.currentTimeMillis() + ) + + mBinding.tvHeartTime.text = "我们在一起${day}啦" + } +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/HeartCpContact.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/HeartCpContact.kt new file mode 100644 index 00000000..eaa6e8ea --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/conacts/HeartCpContact.kt @@ -0,0 +1,19 @@ +package com.xscm.modulemain.activity.user.conacts + +import android.app.Activity +import com.xscm.moduleutil.activity.IPresenter +import com.xscm.moduleutil.activity.IView +import com.xscm.moduleutil.bean.HeartCpBean + +class HeartCpContact { + + interface View : IView{ + fun getHeartCpData(heartCpBean: HeartCpBean?) + } + + interface IPre : IPresenter { + + fun getHeartCpData(userId: Int) + } + +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/UserHomepageFragment.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/UserHomepageFragment.java index b39ca72e..415865fc 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/UserHomepageFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/fragment/UserHomepageFragment.java @@ -19,22 +19,20 @@ import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; -import androidx.recyclerview.widget.GridLayoutManager; -import com.alibaba.android.arouter.launcher.ARouter; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.chad.library.adapter.base.BaseViewHolder; +import com.blankj.utilcode.util.ActivityUtils; import com.google.android.flexbox.FlexboxLayout; -import com.xscm.modulemain.Application; -import com.xscm.modulemain.R; -import com.xscm.modulemain.activity.user.activity.GiftWallActivity; -import com.xscm.modulemain.activity.user.activity.ui.main.BosomFriendFragment; -import com.xscm.modulemain.databinding.FragmentUserHompageBinding; import com.tencent.imsdk.v2.V2TIMConversation; import com.tencent.qcloud.tuicore.TUIConstants; import com.tencent.qcloud.tuikit.tuichat.classicui.page.TUIC2CChatActivity; +import com.xscm.modulemain.Application; +import com.xscm.modulemain.R; +import com.xscm.modulemain.activity.user.activity.GiftWallActivity; +import com.xscm.modulemain.activity.user.activity.HeartCpActivity; +import com.xscm.modulemain.activity.user.activity.ui.main.BosomFriendFragment; import com.xscm.modulemain.activity.user.conacts.UserHomepageConacts; import com.xscm.modulemain.activity.user.presenter.UserHomepagePresenter; +import com.xscm.modulemain.databinding.FragmentUserHompageBinding; import com.xscm.modulemain.manager.RoomManager; import com.xscm.moduleutil.base.BaseMvpFragment; import com.xscm.moduleutil.bean.CircleListBean; @@ -44,7 +42,6 @@ import com.xscm.moduleutil.bean.RelationshipBean; import com.xscm.moduleutil.bean.UserInfo; import com.xscm.moduleutil.bean.UserTagBean; import com.xscm.moduleutil.color.ThemeableDrawableUtils; -import com.xscm.moduleutil.utils.ARouteConstants; import com.xscm.moduleutil.utils.ColorManager; import com.xscm.moduleutil.utils.ImageUtils; import com.xscm.moduleutil.utils.SpUtil; @@ -236,6 +233,16 @@ public class UserHomepageFragment extends BaseMvpFragment(view, context), HeartCpContact.IPre { + override fun getHeartCpData(userId: Int) { + api.getCpRoom(userId.toString(), object : BaseObserver() { + + override fun onSubscribe(d: Disposable) { + addDisposable(d) + } + + + override fun onNext(t: HeartCpBean) { + if (MvpRef == null) { + MvpRef = WeakReference(view); + } + MvpRef.get()?.getHeartCpData(t) + } + }) + } + +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/adapter/ItemCpHeartAdapter.kt b/MainModule/src/main/java/com/xscm/modulemain/adapter/ItemCpHeartAdapter.kt new file mode 100644 index 00000000..bfc12867 --- /dev/null +++ b/MainModule/src/main/java/com/xscm/modulemain/adapter/ItemCpHeartAdapter.kt @@ -0,0 +1,61 @@ +package com.xscm.modulemain.adapter + +import android.content.Context +import android.text.SpannableStringBuilder +import android.text.SpannedString +import android.text.style.ForegroundColorSpan +import android.widget.TextView +import androidx.compose.ui.graphics.Color +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.xscm.modulemain.R +import com.xscm.moduleutil.bean.HeartCpBean +import com.xscm.moduleutil.utils.ImageUtils +import com.xscm.moduleutil.utils.TimeUtils + + +class ItemCpHeartAdapter( + val context: Context, + val userId: Int, + layoutId: Int, + data: MutableList? +) : + BaseQuickAdapter(layoutId, data) { + override fun convert(helper: BaseViewHolder, item: HeartCpBean.GiftLog) { + + ImageUtils.loadHead(item.from_user_info.avatar, helper.getView(R.id.iv_head)) + helper.setText(R.id.tv_name, item.from_user_info.nickname) + helper.setText(R.id.tv_time, TimeUtils.getDateToStringNoZ(item.createtime)) + + val tv = helper.getView(R.id.tv_name) as TextView + + val cid = if (userId == item.from_user_id) { + tv.setTextColor(context.getColor(R.color.ffff53cc)) + R.color.ffff53cc + } else { + tv.setTextColor(context.getColor(R.color.ff4a89ff)) + R.color.ff4a89ff + } + if (item.remark.contains(userId.toString())) { + val builder = getContentColor(item.from_user_info.nickname, item.remark, cid) + helper.setText(R.id.tv_content, builder) + } else { + helper.setText(R.id.tv_content, item.remark) + } + } + + private fun getContentColor( + userName: String, + content: String, + cid: Int + ): SpannableStringBuilder { + val builder = SpannableStringBuilder() + val start = content.indexOf(userName) + val end = start + userName.length + builder.append(content) + val colorSpan = ForegroundColorSpan(context.getColor(cid)) + builder.setSpan(colorSpan, start, end, SpannedString.SPAN_EXCLUSIVE_EXCLUSIVE) + return builder + } + +} \ No newline at end of file diff --git a/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomUserInfoFragment.java b/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomUserInfoFragment.java index 6dc46ea4..0f48ca74 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomUserInfoFragment.java +++ b/MainModule/src/main/java/com/xscm/modulemain/dialog/RoomUserInfoFragment.java @@ -24,11 +24,13 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.alibaba.android.arouter.launcher.ARouter; +import com.blankj.utilcode.util.ActivityUtils; import com.blankj.utilcode.util.LogUtils; import com.xscm.modulemain.Application; import com.xscm.modulemain.R; import com.xscm.modulemain.activity.room.contacts.RoomUserContacts; import com.xscm.modulemain.activity.user.activity.GiftWallActivity; +import com.xscm.modulemain.activity.user.activity.HeartCpActivity; import com.xscm.modulemain.databinding.FragmentRoomUserInfoBinding; import com.xscm.modulemain.activity.room.fragment.RelationshipFragment; import com.xscm.modulemain.activity.room.presenter.RoomUserPresenter; @@ -233,8 +235,8 @@ public class RoomUserInfoFragment extends BaseMvpDialogFragment= 10000) { - mBinding.tvCpNum.setText(String.format("%.2fw", xd / 10000.0f)); + mBinding.tvCpNum.setText(String.format("%.1fw", xd / 10000.0f)); } else { mBinding.tvCpNum.setText(String.valueOf(xd)); } mBinding.cpAnim.setSource(userInfo.getCp_info().pendant, 1); - if (userInfo.getProfile().isEmpty()){ + if (userInfo.getProfile().isEmpty()) { mBinding.jianj.setText(""); mBinding.jianj.setVisibility(GONE); - }else { + } else { mBinding.jianj.setText(userInfo.getProfile()); mBinding.jianj.setVisibility(VISIBLE); } - if (!userInfo.getIcon().isEmpty()){ + if (!userInfo.getIcon().isEmpty()) { mBinding.flexEntry.setVisibility(VISIBLE); for (String url : userInfo.getIcon()) { if (url.contains("http")) { @@ -538,21 +550,20 @@ public class RoomUserInfoFragment extends BaseMvpDialogFragment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MainModule/src/main/res/layout/fragment_user_hompage.xml b/MainModule/src/main/res/layout/fragment_user_hompage.xml index 371e2251..2562f3f8 100644 --- a/MainModule/src/main/res/layout/fragment_user_hompage.xml +++ b/MainModule/src/main/res/layout/fragment_user_hompage.xml @@ -34,26 +34,32 @@ - + android:layout_height="wrap_content" + android:background="#FFF3F3F3"> + + + + @@ -61,6 +67,7 @@ android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="#FFF3F3F3" app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" /> \ No newline at end of file diff --git a/MainModule/src/main/res/layout/item_heart_cp_layout.xml b/MainModule/src/main/res/layout/item_heart_cp_layout.xml new file mode 100644 index 00000000..281ac501 --- /dev/null +++ b/MainModule/src/main/res/layout/item_heart_cp_layout.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MainModule/src/main/res/layout/user_top.xml b/MainModule/src/main/res/layout/user_top.xml index f0557652..cb49b700 100644 --- a/MainModule/src/main/res/layout/user_top.xml +++ b/MainModule/src/main/res/layout/user_top.xml @@ -7,17 +7,18 @@ - + android:clipChildren="false"> + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/dp_6" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintGuide_percent="0.06" /> + app:layout_constraintGuide_percent="0.72" /> + + android:layout_height="wrap_content" + android:src="@mipmap/icon_guild_bg" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + - + app:layout_constraintTop_toTopOf="parent" + tools:visibility="gone" /> - - - - + + android:layout_height="@dimen/dp_20"/> - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_marginHorizontal="@dimen/dp_16" + android:layout_marginTop="@dimen/dp_15" + android:background="@mipmap/icon_dialog_u_cp_bg" + android:visibility="gone" + app:layout_constraintBottom_toTopOf="@+id/view" + app:layout_constraintStart_toStartOf="@+id/tv_name" + app:layout_constraintTop_toBottomOf="@+id/custom_tab_layout" + tools:visibility="visible"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:layout_marginTop="@dimen/dp_50" + android:background="@mipmap/regit_t" + android:visibility="gone"> + + + + + + - - - + android:layout_marginHorizontal="@dimen/dp_16" + android:layout_marginTop="@dimen/dp_8" + android:scaleType="fitXY" + android:src="@mipmap/image_gift_w" /> - + - + \ No newline at end of file diff --git a/MainModule/src/main/res/mipmap-hdpi/icon_heart_back.png b/MainModule/src/main/res/mipmap-hdpi/icon_heart_back.png new file mode 100644 index 00000000..8455b5be Binary files /dev/null and b/MainModule/src/main/res/mipmap-hdpi/icon_heart_back.png differ diff --git a/MainModule/src/main/res/mipmap-hdpi/icon_heart_cp_bg.png b/MainModule/src/main/res/mipmap-hdpi/icon_heart_cp_bg.png new file mode 100644 index 00000000..3d1cb87c Binary files /dev/null and b/MainModule/src/main/res/mipmap-hdpi/icon_heart_cp_bg.png differ diff --git a/MainModule/src/main/res/mipmap-hdpi/icon_heart_ex_bg.png b/MainModule/src/main/res/mipmap-hdpi/icon_heart_ex_bg.png new file mode 100644 index 00000000..6f2ec358 Binary files /dev/null and b/MainModule/src/main/res/mipmap-hdpi/icon_heart_ex_bg.png differ diff --git a/MainModule/src/main/res/mipmap-hdpi/icon_heart_head_bg.png b/MainModule/src/main/res/mipmap-hdpi/icon_heart_head_bg.png new file mode 100644 index 00000000..5c0a6157 Binary files /dev/null and b/MainModule/src/main/res/mipmap-hdpi/icon_heart_head_bg.png differ diff --git a/MainModule/src/main/res/mipmap-hdpi/icon_heart_help.png b/MainModule/src/main/res/mipmap-hdpi/icon_heart_help.png new file mode 100644 index 00000000..0cf0d0dc Binary files /dev/null and b/MainModule/src/main/res/mipmap-hdpi/icon_heart_help.png differ diff --git a/MainModule/src/main/res/mipmap-hdpi/icon_heart_item_line.png b/MainModule/src/main/res/mipmap-hdpi/icon_heart_item_line.png new file mode 100644 index 00000000..6dad0bd1 Binary files /dev/null and b/MainModule/src/main/res/mipmap-hdpi/icon_heart_item_line.png differ diff --git a/MainModule/src/main/res/mipmap-hdpi/icon_heart_top_bg.png b/MainModule/src/main/res/mipmap-hdpi/icon_heart_top_bg.png new file mode 100644 index 00000000..be751260 Binary files /dev/null and b/MainModule/src/main/res/mipmap-hdpi/icon_heart_top_bg.png differ diff --git a/MainModule/src/main/res/mipmap-hdpi/icon_user_midd_heart.png b/MainModule/src/main/res/mipmap-hdpi/icon_user_midd_heart.png new file mode 100644 index 00000000..9509529f Binary files /dev/null and b/MainModule/src/main/res/mipmap-hdpi/icon_user_midd_heart.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_heart_back.png b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_back.png new file mode 100644 index 00000000..82c58b8e Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_back.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_heart_cp_bg.png b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_cp_bg.png new file mode 100644 index 00000000..3d5ae9ed Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_cp_bg.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_heart_ex_bg.png b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_ex_bg.png new file mode 100644 index 00000000..23d27b69 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_ex_bg.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_heart_head_bg.png b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_head_bg.png new file mode 100644 index 00000000..fd7ce173 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_head_bg.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_heart_help.png b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_help.png new file mode 100644 index 00000000..3f89abc4 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_help.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_heart_item_line.png b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_item_line.png new file mode 100644 index 00000000..1a808a94 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_item_line.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_heart_top_bg.png b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_top_bg.png new file mode 100644 index 00000000..ba7028ee Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_heart_top_bg.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_user_midd_heart.png b/MainModule/src/main/res/mipmap-xhdpi/icon_user_midd_heart.png new file mode 100644 index 00000000..4feb904b Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_user_midd_heart.png differ diff --git a/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_back.png b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_back.png new file mode 100644 index 00000000..b4632fc0 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_back.png differ diff --git a/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_cp_bg.png b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_cp_bg.png new file mode 100644 index 00000000..e89673eb Binary files /dev/null and b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_cp_bg.png differ diff --git a/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_ex_bg.png b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_ex_bg.png new file mode 100644 index 00000000..0257d183 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_ex_bg.png differ diff --git a/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_head_bg.png b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_head_bg.png new file mode 100644 index 00000000..eabde4f3 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_head_bg.png differ diff --git a/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_help.png b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_help.png new file mode 100644 index 00000000..c2cb6152 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_help.png differ diff --git a/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_item_line.png b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_item_line.png new file mode 100644 index 00000000..517f999b Binary files /dev/null and b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_item_line.png differ diff --git a/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_top_bg.png b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_top_bg.png new file mode 100644 index 00000000..72711350 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xxhdpi/icon_heart_top_bg.png differ diff --git a/MainModule/src/main/res/mipmap-xxhdpi/icon_user_midd_heart.png b/MainModule/src/main/res/mipmap-xxhdpi/icon_user_midd_heart.png new file mode 100644 index 00000000..33fef469 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xxhdpi/icon_user_midd_heart.png differ diff --git a/MainModule/src/main/res/values/colors.xml b/MainModule/src/main/res/values/colors.xml index f8c6127d..2acfb044 100644 --- a/MainModule/src/main/res/values/colors.xml +++ b/MainModule/src/main/res/values/colors.xml @@ -7,4 +7,9 @@ #FF018786 #FF000000 #FFFFFFFF + + + + #FFFF53CC + #FF4A89FF \ No newline at end of file