From fdefb1d725eddf9dfed6d77564a09e90ece08f02 Mon Sep 17 00:00:00 2001 From: yitao_hello <2714330342@qq.com> Date: Tue, 22 Feb 2022 01:41:57 +0800 Subject: [PATCH] =?UTF-8?q?1.=E9=82=80=E8=AF=B7=E5=BC=B9=E7=AA=97=E5=85=B3?= =?UTF-8?q?=E7=B3=BB=E8=AA=93=E8=A8=80=E6=8E=A8=E8=8D=90=202.UI=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yizhuan/erban/relation/cp/CpViewHelper.kt | 20 +++- .../cp/adapter/DeclarationRecommondAdapter.kt | 12 +++ .../relation/cp/dialog/CpInvitePageDialog.kt | 17 +++- .../cp/fragment/UserInfoCpFragment.kt | 13 +++ .../relation/cp/widget/RelationCpCardView.kt | 13 ++- .../ui/im/friend/FriendFragmentCpDelegate.kt | 49 ++++------ .../ui/im/friend/FriendListFragment.java | 2 +- .../erban/ui/search/SearchAdapter.java | 1 + .../erban/ui/search/SearchDetailFragment.java | 14 ++- .../ui/widget/dialog/CommonTipDialog.java | 97 +------------------ .../res/drawable/bg_invite_recommend_text.xml | 8 ++ .../res/layout/activity_cp_invite_record.xml | 1 - app/src/main/res/layout/activity_fans.xml | 4 +- app/src/main/res/layout/dialog_cp_invite.xml | 8 +- .../main/res/layout/fragment_userinfo_cp.xml | 15 +++ .../layout/item_cp_declaration_recommend.xml | 15 +++ app/src/main/res/layout/layout_cp_card.xml | 1 - app/src/main/res/values/strings.xml | 2 +- .../relation/cp/CpInvitePageEntity.kt | 3 +- 19 files changed, 149 insertions(+), 146 deletions(-) create mode 100644 app/src/main/java/com/yizhuan/erban/relation/cp/adapter/DeclarationRecommondAdapter.kt create mode 100644 app/src/main/java/com/yizhuan/erban/relation/cp/fragment/UserInfoCpFragment.kt create mode 100644 app/src/main/res/drawable/bg_invite_recommend_text.xml create mode 100644 app/src/main/res/layout/fragment_userinfo_cp.xml create mode 100644 app/src/main/res/layout/item_cp_declaration_recommend.xml diff --git a/app/src/main/java/com/yizhuan/erban/relation/cp/CpViewHelper.kt b/app/src/main/java/com/yizhuan/erban/relation/cp/CpViewHelper.kt index 4861958da..119997779 100644 --- a/app/src/main/java/com/yizhuan/erban/relation/cp/CpViewHelper.kt +++ b/app/src/main/java/com/yizhuan/erban/relation/cp/CpViewHelper.kt @@ -9,6 +9,7 @@ import android.widget.TextView import androidx.annotation.ColorInt import com.netease.nim.uikit.common.util.sys.ScreenUtil import com.yizhuan.erban.R +import com.yizhuan.erban.common.widget.dialog.DialogManager object CpViewHelper { @@ -40,7 +41,7 @@ object CpViewHelper { fun setInviteTimeRemain(time: String, tv: TextView) { val s = "请在${time}内决定,过期自动失效!" - tv.text = getColorSpan(s, Color.RED, 2, time.length+2) + tv.text = getColorSpan(s, Color.RED, 2, time.length + 2) } fun getColorSpan(text: String, @ColorInt color: Int, start: Int, end: Int) = @@ -53,4 +54,21 @@ object CpViewHelper { SpannableStringBuilder.SPAN_INCLUSIVE_INCLUSIVE ) } + + fun showInviteTipDialog( + context: Context, + title: String, + message: String, + listener: DialogManager.OkCancelDialogListener + ) { + val builder = getColorSpan(message, Color.parseColor("#999999"), 0, message.length) + val sizeSpan = AbsoluteSizeSpan(ScreenUtil.dip2px(13f)) + builder.setSpan( + sizeSpan, + 0, + message.length, + SpannableStringBuilder.SPAN_INCLUSIVE_INCLUSIVE + ) + DialogManager(context).showOkWithTitleDialog(title, builder, "确定", true, listener) + } } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/relation/cp/adapter/DeclarationRecommondAdapter.kt b/app/src/main/java/com/yizhuan/erban/relation/cp/adapter/DeclarationRecommondAdapter.kt new file mode 100644 index 000000000..56221fdd3 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/relation/cp/adapter/DeclarationRecommondAdapter.kt @@ -0,0 +1,12 @@ +package com.yizhuan.erban.relation.cp.adapter + +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.yizhuan.erban.R + +class DeclarationRecommendAdapter : + BaseQuickAdapter(R.layout.item_cp_declaration_recommend) { + override fun convert(helper: BaseViewHolder, item: String?) { + helper.setText(R.id.tv_recommend,item) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/relation/cp/dialog/CpInvitePageDialog.kt b/app/src/main/java/com/yizhuan/erban/relation/cp/dialog/CpInvitePageDialog.kt index d60c02ade..8d64f4e98 100644 --- a/app/src/main/java/com/yizhuan/erban/relation/cp/dialog/CpInvitePageDialog.kt +++ b/app/src/main/java/com/yizhuan/erban/relation/cp/dialog/CpInvitePageDialog.kt @@ -8,7 +8,9 @@ import com.netease.nim.uikit.common.util.sys.ScreenUtil import com.yizhuan.erban.R import com.yizhuan.erban.databinding.DialogCpInviteBinding import com.yizhuan.erban.relation.cp.CpViewHelper +import com.yizhuan.erban.relation.cp.adapter.DeclarationRecommendAdapter import com.yizhuan.erban.treasure_box.widget.dialog.BaseBindingDialog +import com.yizhuan.erban.ui.widget.LinearLayoutManagerWrapper import com.yizhuan.xchat_android_core.relation.cp.CpInvitePageEntity import com.yizhuan.xchat_android_library.annatation.ActLayoutRes @@ -18,15 +20,22 @@ class CpInvitePageDialog(context: Context) : BaseBindingDialog(context) { var listener: DialogClickListener? = null var entity: CpInvitePageEntity? = null + var invitePageEntity: CpInvitePageEntity? = null + private val adapter = DeclarationRecommendAdapter() override fun init() { binding.setClick { this } + invitePageEntity?.let { binding.cpCard.setInviteDialogPageData(invitePageEntity) } + val layoutManager = LinearLayoutManagerWrapper(context) + binding.rvRecommend.layoutManager = layoutManager + adapter.bindToRecyclerView(binding.rvRecommend) + adapter.setOnItemClickListener { _, _, position -> + adapter.getItem(position)?.let { + binding.editDeclaration.setText(it) + } + } initSpannable() } - fun setInvitePageData(invitePageEntity: CpInvitePageEntity) { - binding.cpCard.setInviteDialogPageData(invitePageEntity) - } - private fun initSpannable() { val absoluteSizeSpan10 = AbsoluteSizeSpan(ScreenUtil.dip2px(10f)) val absoluteSizeSpan8 = AbsoluteSizeSpan(ScreenUtil.dip2px(8f)) diff --git a/app/src/main/java/com/yizhuan/erban/relation/cp/fragment/UserInfoCpFragment.kt b/app/src/main/java/com/yizhuan/erban/relation/cp/fragment/UserInfoCpFragment.kt new file mode 100644 index 000000000..965d89b2f --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/relation/cp/fragment/UserInfoCpFragment.kt @@ -0,0 +1,13 @@ +package com.yizhuan.erban.relation.cp.fragment + +import com.yizhuan.erban.R +import com.yizhuan.erban.base.BaseViewBindingFragment +import com.yizhuan.erban.databinding.FragmentUserinfoCpBinding +import com.yizhuan.xchat_android_library.annatation.ActLayoutRes + +@ActLayoutRes(R.layout.fragment_userinfo_cp) +class UserInfoCpFragment : BaseViewBindingFragment() { + override fun init() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/relation/cp/widget/RelationCpCardView.kt b/app/src/main/java/com/yizhuan/erban/relation/cp/widget/RelationCpCardView.kt index 5b25b90a8..eb26073bd 100644 --- a/app/src/main/java/com/yizhuan/erban/relation/cp/widget/RelationCpCardView.kt +++ b/app/src/main/java/com/yizhuan/erban/relation/cp/widget/RelationCpCardView.kt @@ -9,6 +9,7 @@ import androidx.databinding.DataBindingUtil import com.yizhuan.erban.R import com.yizhuan.erban.databinding.LayoutCpCardBinding import com.yizhuan.erban.relation.extention.visibility +import com.yizhuan.erban.ui.utils.ImageLoadUtils import com.yizhuan.xchat_android_core.relation.cp.CpInvitePageEntity import com.yizhuan.xchat_android_core.relation.cp.CpRelation @@ -22,7 +23,6 @@ class RelationCpCardView(context: Context, attr: AttributeSet?, def: Int) : init { val inflater = LayoutInflater.from(context) binding = DataBindingUtil.inflate(inflater, R.layout.layout_cp_card, this, true) - setPageData(-1,-1,null,null) } private fun setPageData( @@ -37,7 +37,16 @@ class RelationCpCardView(context: Context, attr: AttributeSet?, def: Int) : var unbindRecoverVisibility = false var groupEmptyVisibility = false var declarationVisibility = false - cpRelation?.let { binding.cpEntity = it } + cpRelation?.let { + binding.cpEntity = it + ImageLoadUtils.loadRoundBackground( + context, + it.cpBackImg, + this, + 16, + R.drawable.bg_corner_shadow_12 + ) + } inviteData?.let { binding.inviteData = it } when (type) { PAGE_TYPE_SELF_CP -> { diff --git a/app/src/main/java/com/yizhuan/erban/ui/im/friend/FriendFragmentCpDelegate.kt b/app/src/main/java/com/yizhuan/erban/ui/im/friend/FriendFragmentCpDelegate.kt index 4d2a8d8c8..64169f0cd 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/im/friend/FriendFragmentCpDelegate.kt +++ b/app/src/main/java/com/yizhuan/erban/ui/im/friend/FriendFragmentCpDelegate.kt @@ -3,16 +3,14 @@ package com.yizhuan.erban.ui.im.friend import android.text.TextUtils import androidx.fragment.app.viewModels import com.bun.miitmdid.core.JLibrary.context -import com.netease.nim.uikit.common.util.sys.ScreenUtil import com.yizhuan.erban.R import com.yizhuan.erban.base.BaseFragment import com.yizhuan.erban.common.widget.dialog.DialogManager +import com.yizhuan.erban.relation.cp.CpViewHelper import com.yizhuan.erban.relation.cp.dialog.CpInvitePageDialog import com.yizhuan.erban.relation.cp.viewmodel.CpViewModel import com.yizhuan.erban.ui.pay.ChargeActivity -import com.yizhuan.erban.ui.widget.dialog.CommonTipDialog import com.yizhuan.xchat_android_core.relation.cp.CpInvitePageEntity -import com.yizhuan.xchat_android_core.user.bean.UserInfo import com.yizhuan.xchat_android_core.utils.toast class FriendFragmentCpDelegate(private val fragment: BaseFragment) { @@ -21,18 +19,8 @@ class FriendFragmentCpDelegate(private val fragment: BaseFragment) { CpInvitePageDialog(fragment.requireContext()) .apply { listener = inviteDialogListener } } - - private val sentTipDialog by lazy { - CommonTipDialog(fragment.requireContext()).apply { - setMessageBold(true) - setMessageSize(ScreenUtil.dip2px(16f)) - setSubMessage("(若对方拒接或24小时未同意,钻石将会返还)") - setSubMessageColor(fragment.requireContext().resources.getColor(R.color.color_999999)) - setSubMessageSize(ScreenUtil.dip2px(13f)) - } - } - - fun init(manager: DialogManager) { + init { + val manager = DialogManager(fragment.requireContext()) cpViewModel.loadingLiveData.observe(fragment) { aBoolean: Boolean -> if (aBoolean) { manager.showProgressDialog(fragment.context) @@ -46,8 +34,8 @@ class FriendFragmentCpDelegate(private val fragment: BaseFragment) { /** * 邀请好友组队 */ - fun inviteCp(userInfo: UserInfo) { - cpViewModel.getCpInvitePageData(userInfo.uid) + fun inviteCp(uid: Long) { + cpViewModel.getCpInvitePageData(uid) } /** @@ -57,7 +45,7 @@ class FriendFragmentCpDelegate(private val fragment: BaseFragment) { private fun showInvitePageDialog(info: CpInvitePageEntity) { with(cpInviteDialog) { entity = info - setInvitePageData(info) + invitePageEntity = info if (isShowing) closeDialog() openDialog() } @@ -70,20 +58,21 @@ class FriendFragmentCpDelegate(private val fragment: BaseFragment) { cpInvitePageEntity: CpInvitePageEntity, declaration: String, ) { - sentTipDialog.setTipMsg("确定送出${cpInvitePageEntity.propsName}}礼物与Ta结成CP关系吗?") - sentTipDialog.setOnActionListener(object : CommonTipDialog.OnActionListener { - override fun onOk() { - cpViewModel.makeCpInvite( - cpInvitePageEntity.acceptUid, - declaration, - cpInvitePageEntity.propsId - ) { - DialogManager(fragment.context).showOkCancelDialog("钻石余额不足,请前去充值!") { - ChargeActivity.start(context) - } + CpViewHelper.showInviteTipDialog( + context, + "确定送出${cpInvitePageEntity.propsName}}礼物与Ta结成CP关系吗?", + "(若对方拒接或24小时未同意,钻石将会返还)" + ){ + cpViewModel.makeCpInvite( + cpInvitePageEntity.acceptUid, + declaration, + cpInvitePageEntity.propsId + ) { + DialogManager(fragment.context).showOkCancelDialog("钻石余额不足,请前去充值!") { + ChargeActivity.start(context) } } - }) + } } private val inviteDialogListener = diff --git a/app/src/main/java/com/yizhuan/erban/ui/im/friend/FriendListFragment.java b/app/src/main/java/com/yizhuan/erban/ui/im/friend/FriendListFragment.java index 37ce5781c..4a268719b 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/im/friend/FriendListFragment.java +++ b/app/src/main/java/com/yizhuan/erban/ui/im/friend/FriendListFragment.java @@ -263,6 +263,6 @@ public class FriendListFragment extends BaseFragment { if (cpDelegate == null) { cpDelegate = new FriendFragmentCpDelegate(this); } - cpDelegate.inviteCp(cpInfo); + cpDelegate.inviteCp(cpInfo.getUid()); } } diff --git a/app/src/main/java/com/yizhuan/erban/ui/search/SearchAdapter.java b/app/src/main/java/com/yizhuan/erban/ui/search/SearchAdapter.java index 2e87858b2..7c41d380f 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/search/SearchAdapter.java +++ b/app/src/main/java/com/yizhuan/erban/ui/search/SearchAdapter.java @@ -84,6 +84,7 @@ public class SearchAdapter extends BaseQuickAdapter { + SearchRoomInfo item = (SearchRoomInfo) adapter.getData().get(position); + if (fromType == AbstractSelectFriendAction.TYPE_CP) { + long targetUid = JavaUtil.str2long(item.getUid()+""); + new FriendFragmentCpDelegate(this).inviteCp(targetUid); + } else { showSureDialog(item.getUid() + "", item.getAvatar(), item.getNick()); } }); diff --git a/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/CommonTipDialog.java b/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/CommonTipDialog.java index 387f3582a..87460de64 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/CommonTipDialog.java +++ b/app/src/main/java/com/yizhuan/erban/ui/widget/dialog/CommonTipDialog.java @@ -1,17 +1,10 @@ package com.yizhuan.erban.ui.widget.dialog; -import static android.graphics.Typeface.BOLD; - import android.content.Context; import android.os.Bundle; -import android.text.SpannableStringBuilder; -import android.text.Spanned; -import android.text.style.AbsoluteSizeSpan; -import android.text.style.StyleSpan; +import android.view.Window; import android.widget.TextView; -import androidx.annotation.ColorRes; - import com.yizhuan.erban.R; import com.yizhuan.xchat_android_core.utils.TextUtils; @@ -22,18 +15,9 @@ import com.yizhuan.xchat_android_core.utils.TextUtils; */ public class CommonTipDialog extends BaseDialog { private String tipMsg = ""; - private String subMessage = ""; private String okText = "确定"; private String cancelText = "取消"; - private boolean messageBold; - private boolean subMessageBold; - private @ColorRes - int messageColor = -1; - private @ColorRes - int subMessageColor = -1; - private int messageSize = -1; - private int subMessageSize = -1; public CommonTipDialog(Context context) { super(context, R.style.dialog); @@ -51,10 +35,7 @@ public class CommonTipDialog extends BaseDialog { setContentView(R.layout.layout_ok_cancel_dialog); TextView tip = findViewById(R.id.message); - TextView sub = findViewById(R.id.sub_message); - - setMessageAndStyle(tip, tipMsg); - setSubMessageAndStyle(sub, subMessage); + tip.setText(tipMsg); TextView ok = findViewById(R.id.btn_ok); ok.setText(okText); @@ -74,82 +55,10 @@ public class CommonTipDialog extends BaseDialog { }); } - - private void setMessageAndStyle(TextView tip, String message) { - SpannableStringBuilder messageBuilder = null; - if (messageBold || messageColor != -1 || messageSize != -1) { - messageBuilder = new SpannableStringBuilder(message); - if (messageBold) { - StyleSpan boldSpan = new StyleSpan(BOLD); - messageBuilder.setSpan(boldSpan, 0, messageBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); - } - - if (messageSize != -1) { - AbsoluteSizeSpan sizeSpan = new AbsoluteSizeSpan(messageSize); - messageBuilder.setSpan(sizeSpan, 0, messageBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); - } - - if (messageColor != -1) { - tip.setTextColor(getContext().getResources().getColor(messageColor)); - } - } - tip.setText(messageBuilder == null ? message : messageBuilder); - } - - private void setSubMessageAndStyle(TextView sub, String message) { - SpannableStringBuilder subMessageBuilder = null; - if (subMessageBold || subMessageColor != -1 || subMessageSize != -1) { - subMessageBuilder = new SpannableStringBuilder(message); - if (subMessageBold) { - StyleSpan boldSpan = new StyleSpan(BOLD); - subMessageBuilder.setSpan(boldSpan, 0, subMessageBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); - } - - if (subMessageSize != -1) { - AbsoluteSizeSpan sizeSpan = new AbsoluteSizeSpan(subMessageSize); - subMessageBuilder.setSpan(sizeSpan, 0, subMessageBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); - } - - if (subMessageColor != -1) { - sub.setTextColor(getContext().getResources().getColor(subMessageColor)); - } - } - sub.setText(subMessageBuilder == null ? message : subMessageBuilder); - } - - public void setTipMsg(String tipMsg) { this.tipMsg = tipMsg; } - public void setSubMessage(String subMessage) { - this.subMessage = subMessage; - } - - public void setMessageBold(boolean isBold) { - this.messageBold = isBold; - } - - public void setMessageColor(@ColorRes int color) { - this.messageColor = color; - } - - public void setMessageSize(int textSize) { - this.messageSize = textSize; - } - - public void setSubMessageBold(boolean subMessageBold) { - this.subMessageBold = subMessageBold; - } - - public void setSubMessageColor(int subMessageColor) { - this.subMessageColor = subMessageColor; - } - - public void setSubMessageSize(int subMessageSize) { - this.subMessageSize = subMessageSize; - } - private OnActionListener l; public void setOkText(String okText) { @@ -173,4 +82,6 @@ public class CommonTipDialog extends BaseDialog { default void onCancel() { } } + + } diff --git a/app/src/main/res/drawable/bg_invite_recommend_text.xml b/app/src/main/res/drawable/bg_invite_recommend_text.xml new file mode 100644 index 000000000..d879d6741 --- /dev/null +++ b/app/src/main/res/drawable/bg_invite_recommend_text.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/app/src/main/res/layout/activity_cp_invite_record.xml b/app/src/main/res/layout/activity_cp_invite_record.xml index 07267fc80..77cf240fe 100644 --- a/app/src/main/res/layout/activity_cp_invite_record.xml +++ b/app/src/main/res/layout/activity_cp_invite_record.xml @@ -10,7 +10,6 @@ android:id="@+id/title_bar" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/dp_25" app:layout_constraintTop_toTopOf="parent" /> @@ -27,10 +27,9 @@ @@ -53,7 +52,7 @@ diff --git a/app/src/main/res/layout/fragment_userinfo_cp.xml b/app/src/main/res/layout/fragment_userinfo_cp.xml new file mode 100644 index 000000000..497f4d00b --- /dev/null +++ b/app/src/main/res/layout/fragment_userinfo_cp.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_cp_declaration_recommend.xml b/app/src/main/res/layout/item_cp_declaration_recommend.xml new file mode 100644 index 000000000..bcb1b258d --- /dev/null +++ b/app/src/main/res/layout/item_cp_declaration_recommend.xml @@ -0,0 +1,15 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_cp_card.xml b/app/src/main/res/layout/layout_cp_card.xml index c7d540818..b221bac76 100644 --- a/app/src/main/res/layout/layout_cp_card.xml +++ b/app/src/main/res/layout/layout_cp_card.xml @@ -29,7 +29,6 @@ android:paddingLeft="@dimen/dp_4" android:paddingTop="@dimen/dp_5" android:paddingRight="@dimen/dp_4" - android:minHeight="148dp" android:paddingBottom="@dimen/dp_5"> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7489378f7..cdaf18c2c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -924,7 +924,7 @@ 邀请CP 已有CP 在这里写上你们的关系誓言吧!\n(关系誓言会在展示个人资料页,请认真填写哦~ - 邀请函\ns%钻石 + 邀请函\n%s钻石 请输入关系誓言! 已邀请 已同意 diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/relation/cp/CpInvitePageEntity.kt b/core/src/main/java/com/yizhuan/xchat_android_core/relation/cp/CpInvitePageEntity.kt index 735dab03c..206b5cec5 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/relation/cp/CpInvitePageEntity.kt +++ b/core/src/main/java/com/yizhuan/xchat_android_core/relation/cp/CpInvitePageEntity.kt @@ -17,5 +17,6 @@ data class CpInvitePageEntity( val propsId: Int, val propsImg: String, val propsName: String, - val propsPrice: String + val propsPrice: String, + val recommenTxt:String? ) \ No newline at end of file