1.新增VIP规则弹窗 2.VIP坑位相关逻辑处理
This commit is contained in:
@@ -2,11 +2,14 @@ package com.yizhuan.erban.avroom.adapter
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.util.SparseArray
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.core.util.forEach
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
@@ -69,6 +72,7 @@ class DatingMicroViewAdapter(context: Context?) : BaseMicroViewAdapter(context)
|
||||
private val viewGenderBg: View = itemView.findViewById(R.id.view_gender_bg)
|
||||
private val tvSelectedStatus: TextView = itemView.findViewById(R.id.tv_selected_status)
|
||||
private val ivCap: ImageView = itemView.findViewById(R.id.iv_cap)
|
||||
protected val ivVipWear: ImageView = itemView.findViewById(R.id.iv_vip_wear)
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
public override fun bind(info: RoomQueueInfo, position: Int) {
|
||||
@@ -108,10 +112,19 @@ class DatingMicroViewAdapter(context: Context?) : BaseMicroViewAdapter(context)
|
||||
} else {
|
||||
ivCap.visibility = View.GONE
|
||||
}
|
||||
|
||||
if (it.isVipMic) {
|
||||
ivHeadWear.isVisible = false
|
||||
ivVipWear.isVisible = true
|
||||
tvSelectedStatus.background = null
|
||||
} else {
|
||||
ivVipWear.isVisible = false
|
||||
}
|
||||
} ?: run {
|
||||
tvSelectedStatus.visibility = View.GONE
|
||||
ivCap.visibility = View.GONE
|
||||
if (position == AvRoomDataManager.POSITION_VIP_MIC) {
|
||||
ivVipWear.isVisible = false
|
||||
if (AvRoomDataManager.get().isDatingVipMic(position)) {
|
||||
tvNick.text = ""
|
||||
} else if (position != -1) {
|
||||
tvNick.text = "号${if (manMicro) "男神" else "女神"}位"
|
||||
@@ -125,21 +138,44 @@ class DatingMicroViewAdapter(context: Context?) : BaseMicroViewAdapter(context)
|
||||
inner class DatingBossMicroViewHolder internal constructor(itemView: View) :
|
||||
BossMicroViewHolder(itemView) {
|
||||
private val rvVip: RecyclerView = itemView.findViewById(R.id.rv_vip)
|
||||
private val ivVipWear: ImageView = itemView.findViewById(R.id.iv_vip_wear)
|
||||
|
||||
public override fun bind(info: RoomQueueInfo, position: Int) {
|
||||
super.bind(info, position)
|
||||
if (info.mChatRoomMember == null) {
|
||||
tvNick.alpha = 1f
|
||||
tvNick.text = "主持人"
|
||||
ivVipWear.isVisible = false
|
||||
} else {
|
||||
if (info.mChatRoomMember.isVipMic) {
|
||||
ivHeadWear.isVisible = false
|
||||
ivVipWear.isVisible = true
|
||||
} else {
|
||||
ivVipWear.isVisible = false
|
||||
}
|
||||
}
|
||||
|
||||
var adapter: VipMicroViewAdapter? = rvVip.adapter as? VipMicroViewAdapter
|
||||
if (adapter == null) {
|
||||
adapter = VipMicroViewAdapter(context)
|
||||
adapter.bindToRecyclerView(rvVip)
|
||||
adapter.setOnMicroItemClickListener(onMicroItemClickListener)
|
||||
val mMicQueueMemberMap = AvRoomDataManager.get().mMicQueueMemberMap
|
||||
var showVipMicro = true
|
||||
mMicQueueMemberMap.forEach { key, value ->
|
||||
value?.mChatRoomMember?.let {
|
||||
if (it.isVipMic && !AvRoomDataManager.get().isDatingVipMic(key)) {
|
||||
showVipMicro = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rvVip.isVisible = showVipMicro
|
||||
|
||||
if (showVipMicro) {
|
||||
var adapter: VipMicroViewAdapter? = rvVip.adapter as? VipMicroViewAdapter
|
||||
if (adapter == null) {
|
||||
adapter = VipMicroViewAdapter(context)
|
||||
adapter.bindToRecyclerView(rvVip)
|
||||
adapter.setOnMicroItemClickListener(onMicroItemClickListener)
|
||||
}
|
||||
adapter.notifyDataSetChanged()
|
||||
}
|
||||
adapter.notifyDataSetChanged()
|
||||
|
||||
}
|
||||
}
|
||||
@@ -187,9 +223,7 @@ class DatingMicroViewAdapter(context: Context?) : BaseMicroViewAdapter(context)
|
||||
|
||||
override fun bind(info: RoomQueueInfo, position: Int) {
|
||||
super.bind(info, position)
|
||||
val roomInfo = AvRoomDataManager.get().mCurrentRoomInfo ?: return
|
||||
val roomMicInfo = info.mRoomMicInfo
|
||||
val uid = UserUtils.getUserUid()
|
||||
ivVipWear.isVisible = true
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,35 @@
|
||||
package com.yizhuan.erban.avroom.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.method.ScrollingMovementMethod;
|
||||
import android.view.View;
|
||||
|
||||
import com.yizhuan.erban.R;
|
||||
import com.yizhuan.erban.databinding.DialogDatingVipRuleBinding;
|
||||
import com.yizhuan.erban.treasure_box.widget.dialog.BaseBindingDialog;
|
||||
import com.yizhuan.xchat_android_library.annatation.ActLayoutRes;
|
||||
|
||||
|
||||
@ActLayoutRes(R.layout.dialog_dating_vip_rule)
|
||||
public class DatingVipRuleDialog extends BaseBindingDialog<DialogDatingVipRuleBinding> implements View.OnClickListener {
|
||||
|
||||
|
||||
public DatingVipRuleDialog(Context context) {
|
||||
super(context, R.style.DialogFragment);
|
||||
}
|
||||
|
||||
public static DatingVipRuleDialog newInstance(Context context) {
|
||||
return new DatingVipRuleDialog(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
binding.setClick(this);
|
||||
binding.tvRule.setMovementMethod(ScrollingMovementMethod.getInstance());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
closeDialog();
|
||||
}
|
||||
}
|
@@ -29,6 +29,7 @@ import androidx.viewpager.widget.ViewPager;
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter;
|
||||
import com.chad.library.adapter.base.BaseViewHolder;
|
||||
import com.coorchice.library.SuperTextView;
|
||||
import com.yizhuan.erban.avroom.dialog.DatingVipRuleDialog;
|
||||
import com.yizhuan.erban.ui.webview.DatingRuleWebViewActivity;
|
||||
import com.yizhuan.erban.ui.webview.DialogWebViewActivity;
|
||||
import com.yizhuan.erban.ui.widget.rollviewpager.RollPagerView;
|
||||
@@ -1847,7 +1848,11 @@ public class HomePartyRoomFragment extends BaseMvpFragment<IHomePartyView, HomeP
|
||||
|
||||
@Override
|
||||
public void onUpMicBtnClick(int position, MicMemberInfo chatRoomMember) {
|
||||
getMvpPresenter().microPhonePositionClick(position, chatRoomMember);
|
||||
if (AvRoomDataManager.get().isDatingVipMic(position) && !AvRoomDataManager.get().isDatingVip()) {
|
||||
DatingVipRuleDialog.newInstance(mContext).show();
|
||||
} else {
|
||||
getMvpPresenter().microPhonePositionClick(position, chatRoomMember);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -782,6 +782,7 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
|
||||
//目标用户是否是管理,(房主或者管理员)
|
||||
boolean isTargetManager = isTargetRoomOwner || isTargetRoomAdmin;
|
||||
boolean isTargetOnMic = AvRoomDataManager.get().isOnMic(account);
|
||||
boolean isTargetVip = AvRoomDataManager.get().isDatingVip() || AvRoomDataManager.get().isDatingVipMic(micPosition);
|
||||
//超管逻辑
|
||||
if (SuperAdminUtil.isSuperAdmin()) {
|
||||
if (isTargetOnMic) {
|
||||
@@ -804,7 +805,7 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
|
||||
if (!roomMicInfo.isMicMute()) {
|
||||
buttonItems.add(createBanMicItem(micPosition));
|
||||
}
|
||||
if (!roomMicInfo.isMicLock()) {
|
||||
if (!roomMicInfo.isMicLock() && !isTargetVip) {
|
||||
buttonItems.add(createLockMicItem(micPosition));
|
||||
}
|
||||
}
|
||||
@@ -840,7 +841,9 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
|
||||
if (roomMicInfo.isMicLock()) {
|
||||
buttonItems.add(createUnLockMicItem(micPosition));
|
||||
} else {
|
||||
buttonItems.add(createLockMicItem(micPosition));
|
||||
if (!isTargetVip){
|
||||
buttonItems.add(createLockMicItem(micPosition));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -856,7 +859,9 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
|
||||
}
|
||||
}
|
||||
if (isTargetOnMic) {
|
||||
buttonItems.add(createKickMicItem());
|
||||
if (!isTargetVip){
|
||||
buttonItems.add(createKickMicItem());
|
||||
}
|
||||
} else {
|
||||
handleInviteMicItem(buttonItems);
|
||||
}
|
||||
@@ -866,7 +871,9 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
|
||||
if (roomMicInfo.isMicLock()) {
|
||||
buttonItems.add(createUnLockMicItem(micPosition));
|
||||
} else {
|
||||
buttonItems.add(createLockMicItem(micPosition));
|
||||
if (!isTargetVip){
|
||||
buttonItems.add(createLockMicItem(micPosition));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -896,7 +903,9 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
|
||||
if (roomMicInfo.isMicLock()) {
|
||||
buttonItems.add(createUnLockMicItem(micPosition));
|
||||
} else {
|
||||
buttonItems.add(createLockMicItem(micPosition));
|
||||
if (!isTargetVip){
|
||||
buttonItems.add(createLockMicItem(micPosition));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -917,7 +926,7 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
|
||||
//管理员能抱所有人上麦
|
||||
if (isTargetOnMic) {
|
||||
//管理员能抱管理员和游客下麦
|
||||
if (!isTargetRoomOwner) {
|
||||
if (!isTargetRoomOwner && !isTargetVip) {
|
||||
buttonItems.add(createKickMicItem());
|
||||
}
|
||||
} else {
|
||||
@@ -937,7 +946,9 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
|
||||
if (roomMicInfo.isMicLock()) {
|
||||
buttonItems.add(createUnLockMicItem(micPosition));
|
||||
} else {
|
||||
buttonItems.add(createLockMicItem(micPosition));
|
||||
if (!isTargetVip){
|
||||
buttonItems.add(createLockMicItem(micPosition));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
BIN
app/src/main/res/drawable-xhdpi/bg_dating_vip_rule.png
Normal file
BIN
app/src/main/res/drawable-xhdpi/bg_dating_vip_rule.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
BIN
app/src/main/res/drawable-xhdpi/ic_dating_vip_rule_close.png
Normal file
BIN
app/src/main/res/drawable-xhdpi/ic_dating_vip_rule_close.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.1 KiB |
45
app/src/main/res/layout/dialog_dating_vip_rule.xml
Normal file
45
app/src/main/res/layout/dialog_dating_vip_rule.xml
Normal file
@@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<data>
|
||||
|
||||
<variable
|
||||
name="click"
|
||||
type="android.view.View.OnClickListener" />
|
||||
</data>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="260dp"
|
||||
android:layout_height="325dp"
|
||||
android:background="@drawable/bg_dating_vip_rule">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_rule"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginStart="15dp"
|
||||
android:layout_marginTop="40dp"
|
||||
android:layout_marginEnd="15dp"
|
||||
android:layout_marginBottom="15dp"
|
||||
android:scrollbars="vertical"
|
||||
android:text="@string/text_dating_vip_rule"
|
||||
android:textColor="#FFF9BC"
|
||||
android:textSize="12sp" />
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:onClick="@{click}"
|
||||
android:src="@drawable/ic_dating_vip_rule_close" />
|
||||
</LinearLayout>
|
||||
</layout>
|
@@ -60,6 +60,15 @@
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_vip_wear"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_margin="2dp"
|
||||
android:src="@drawable/icon_room_dating_vip"
|
||||
android:visibility="gone" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_head_wear"
|
||||
android:layout_width="match_parent"
|
||||
|
@@ -49,6 +49,14 @@
|
||||
android:visibility="invisible"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_vip_wear"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_margin="2dp"
|
||||
android:src="@drawable/icon_room_dating_vip"
|
||||
android:visibility="gone" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_head_wear"
|
||||
android:layout_width="match_parent"
|
||||
|
@@ -60,11 +60,12 @@
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_vip"
|
||||
android:id="@+id/iv_vip_wear"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_margin="2dp"
|
||||
android:src="@drawable/icon_room_dating_vip" />
|
||||
android:src="@drawable/icon_room_dating_vip"
|
||||
android:visibility="gone" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_head_wear"
|
||||
|
@@ -902,4 +902,5 @@
|
||||
<string name="app_privacy_policy">&app_name;隐私政策</string>
|
||||
<string name="about_app">关于&app_name;</string>
|
||||
<string name="authorization_text">并授权&app_name;获取本机号码</string>
|
||||
<string name="text_dating_vip_rule">1.每轮相亲在“自由交流”阶段累积送礼满999钻石且送礼价值最高的用户自动登上VIP席位;\n\n 2.若出现多个满足上VIP席位要求的用户,VIP席位最终由送礼价值最高的用户获得,若送礼价值相同以最先达到该值的用户为准;\n\n 3.VIP席位的用户可选择是否下麦,其他用户不可因此代替坐上席位; \n\n 4.用户只能在“自由交流”阶段抢夺VIP席位,“自由交流”阶段后直到结束本轮前,即使送出超过之前VIP总礼物价值也不能换人;\n\n 5.每轮相亲结束后VIP席位清空,下一轮重新开始抢位。</string>
|
||||
</resources>
|
||||
|
@@ -1114,6 +1114,20 @@ public final class AvRoomDataManager {
|
||||
return mCurrentRoomInfo != null && mCurrentRoomInfo.getRoomModeType() == RoomModeType.OPEN_DATING_MODE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true 相亲模式的VIP麦位
|
||||
*/
|
||||
public boolean isDatingVipMic(int position) {
|
||||
return position == AvRoomDataManager.POSITION_VIP_MIC;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true 相亲模式的VIP
|
||||
*/
|
||||
public boolean isDatingVip() {
|
||||
return mCurrentRoomInfo != null && mCurrentRoomInfo.getBlindDateVipUid() == AuthModel.get().getCurrentUid();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return 相亲模式是否已经选择心动对象了
|
||||
*/
|
||||
|
@@ -179,6 +179,8 @@ public class RoomInfo implements Parcelable,Serializable {
|
||||
*/
|
||||
private String blindDateState = "";
|
||||
|
||||
private long blindDateVipUid;
|
||||
|
||||
private boolean canOpenBlindDate;
|
||||
|
||||
/**
|
||||
|
@@ -37,7 +37,7 @@ public class MicMemberInfo {
|
||||
private int selectMicPosition;
|
||||
//是否有选择心动对象
|
||||
private boolean hasSelectUser;
|
||||
private boolean isVipMic;
|
||||
private boolean vipMic;
|
||||
|
||||
/**
|
||||
* GroupType_default = 0,//默认
|
||||
|
Reference in New Issue
Block a user