新增贵族升级弹窗

This commit is contained in:
huangjian
2021-12-30 15:23:43 +08:00
parent dd845adcac
commit 58807aac5e
15 changed files with 283 additions and 47 deletions

View File

@@ -3,12 +3,13 @@ package com.yizhuan.erban.application;
import android.app.Activity;
import com.tencent.bugly.beta.Beta;
import com.tongdaxing.erban.upgrade.AppUpgradeHelper;
import com.trello.rxlifecycle3.components.support.RxAppCompatActivity;
import com.yizhuan.erban.ui.widget.lottery_dialog.LotteryDialogManager;
import com.yizhuan.erban.vip.VipUpgradeDialog;
import com.yizhuan.xchat_android_core.activity.bean.LotteryInfo;
import com.yizhuan.xchat_android_core.upgrade.event.ImPushUpdateAppEvent;
import com.yizhuan.xchat_android_core.utils.ActivityUtil;
import com.yizhuan.xchat_android_core.vip.VipUpgradeEvent;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -26,10 +27,6 @@ public class GlobalHandleManager {
}
private static final class Helper {
private static final GlobalHandleManager INSTANCE = new GlobalHandleManager();
}
public static GlobalHandleManager get() {
return Helper.INSTANCE;
}
@@ -56,7 +53,6 @@ public class GlobalHandleManager {
Activity activity = getActivity();
if (activity == null) return;
if (ActivityUtil.isCanShowAppCompatDialog(activity) && activity instanceof RxAppCompatActivity) {
// AppUpgradeHelper.checkAppUpgrade((RxAppCompatActivity) activity, false, true);
Beta.checkUpgrade();
}
}
@@ -68,4 +64,15 @@ public class GlobalHandleManager {
LotteryDialogManager.checkLotteryDialog(activity);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onVipUpgradeEvent(VipUpgradeEvent vipUpgradeEvent) {
Activity activity = getActivity();
if (activity == null) return;
VipUpgradeDialog.newInstance(vipUpgradeEvent.getVipInfo()).show(activity);
}
private static final class Helper {
private static final GlobalHandleManager INSTANCE = new GlobalHandleManager();
}
}

View File

@@ -1,5 +1,13 @@
package com.yizhuan.erban.base;
import static com.yizhuan.xchat_android_core.Constants.DEBUG_MAX_UID;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_HEAD_NOBLE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_OPENNOBLE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_RENEWNOBLE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_RED_PACKAGE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ALL_DIAMOND;
import static com.yizhuan.xchat_android_library.utils.UIUtils.getActivityByContext;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.content.ComponentName;
@@ -9,7 +17,6 @@ import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
@@ -54,7 +61,6 @@ import com.yizhuan.erban.common.permission.PermissionActivity;
import com.yizhuan.erban.common.widget.StatusLayout;
import com.yizhuan.erban.common.widget.dialog.DialogManager;
import com.yizhuan.erban.common.widget.dialog.DialogUiHelper;
import com.yizhuan.erban.common.widget.dialog.LoginPopupDialog;
import com.yizhuan.erban.reciever.ConnectiveChangedReceiver;
import com.yizhuan.erban.ui.im.avtivity.NimP2PMessageActivity;
import com.yizhuan.erban.ui.login.AddUserInfoActivity;
@@ -82,7 +88,6 @@ import com.yizhuan.xchat_android_core.room.model.AvRoomModel;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.rxbus.RxBus;
import com.yizhuan.xchat_android_library.utils.ImeUtil;
import com.yizhuan.xchat_android_library.utils.NetworkUtils;
import com.yizhuan.xchat_android_library.utils.SingleToastUtil;
import com.yizhuan.xchat_android_library.utils.UIUtils;
@@ -103,14 +108,6 @@ import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import static com.yizhuan.xchat_android_core.Constants.DEBUG_MAX_UID;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_HEAD_NOBLE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_OPENNOBLE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MESS_SUB_RENEWNOBLE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_RED_PACKAGE;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_SUB_RED_PACKAGE_RECEIVE_ALL_DIAMOND;
import static com.yizhuan.xchat_android_library.utils.UIUtils.getActivityByContext;
/**
* @author alvin hwang
@@ -145,8 +142,6 @@ public abstract class BaseActivity extends RxAppCompatActivity
if (needSteepStateBar()) {
setStatusBar();
}
registerNimBroadcastMessage(true);
mCompositeDisposable.add(IMNetEaseManager.get().getChatRoomEventObservable()
.subscribe(roomEvent -> {
if (roomEvent == null) return;

View File

@@ -327,7 +327,7 @@ public class MeFragment extends BaseFragment implements View.OnClickListener {
CommonWebViewActivity.start(mContext, UriProvider.getLinkRoomUrl());
break;
case R.id.me_item_vip:
VipMainActivity.start(mContext,0);
VipMainActivity.start(mContext);
break;
default:
break;

View File

@@ -43,9 +43,8 @@ class VipMainActivity : BaseViewBindingActivity<ActivityVipMainBinding>(),
companion object {
@JvmStatic
fun start(context: Context, roomUid: Long) {
fun start(context: Context) {
val starter = Intent(context, VipMainActivity::class.java)
starter.putExtra("roomUid", roomUid)
context.startActivity(starter)
}
@@ -65,6 +64,10 @@ class VipMainActivity : BaseViewBindingActivity<ActivityVipMainBinding>(),
}
})
binding.ivTimeHelp.setOnClickListener {
VipRemainTimeDialog.newInstance("desc").show(this)
}
rvDelegate = RVDelegate.Builder<VipAuthInfo>()
.setLayoutManager(GridLayoutManager(this, 3))
.setRecyclerView(binding.recyclerView)

View File

@@ -0,0 +1,27 @@
package com.yizhuan.erban.vip
import android.os.Bundle
import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.DialogRoomPkRuleBinding
import com.yizhuan.erban.databinding.DialogVipAuthDetailsBinding
import com.yizhuan.erban.databinding.DialogVipRemainTimeBinding
import com.yizhuan.erban.ui.utils.load
class VipRemainTimeDialog : BaseDialog<DialogVipRemainTimeBinding>() {
companion object {
@JvmStatic
fun newInstance(desc: String): VipRemainTimeDialog {
val args = Bundle()
args.putString("desc", desc)
val fragment = VipRemainTimeDialog()
fragment.arguments = args
return fragment
}
}
override fun init() {
binding.ivClose.setOnClickListener { dismissAllowingStateLoss() }
binding.tvDesc.text = requireArguments().getString("desc", "")
}
}

View File

@@ -0,0 +1,37 @@
package com.yizhuan.erban.vip
import android.annotation.SuppressLint
import android.os.Bundle
import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.DialogRoomPkRuleBinding
import com.yizhuan.erban.databinding.DialogVipAuthDetailsBinding
import com.yizhuan.erban.databinding.DialogVipRemainTimeBinding
import com.yizhuan.erban.databinding.DialogVipUpgradeBinding
import com.yizhuan.erban.ui.utils.load
import com.yizhuan.xchat_android_core.vip.VipInfo
class VipUpgradeDialog : BaseDialog<DialogVipUpgradeBinding>() {
companion object {
@JvmStatic
fun newInstance(vipInfo: VipInfo): VipUpgradeDialog {
val args = Bundle()
args.putSerializable("vipInfo", vipInfo)
val fragment = VipUpgradeDialog()
fragment.arguments = args
return fragment
}
}
private val vipInfo by lazy { requireArguments().getSerializable("vipInfo") as VipInfo }
@SuppressLint("SetTextI18n")
override fun init() {
binding.ivClose.setOnClickListener { dismissAllowingStateLoss() }
binding.tvGoVipMain.setOnClickListener {
VipMainActivity.start(requireContext())
dismissAllowingStateLoss()
}
binding.tvLevelDesc.text = "恭喜贵族等级提升到「${vipInfo.vipName}」!"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="300dp"
android:layout_height="286dp"
android:layout_gravity="center"
android:background="@drawable/bg_vip_dialog"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="剩余时间说明"
android:textColor="#ffffe3af"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_desc"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="12dp"
android:ellipsize="end"
android:textColor="#ffffe3af"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title"
tools:text="剩余时间说明剩余时间说明剩余时间明明铭剩余时间说明剩余时间说明剩余时间说明明剩余时间说明说明说明说明说明说明说明说" />
<ImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="9dp"
android:layout_marginEnd="14dp"
android:src="@drawable/ic_vip_dialog_close"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>

View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="300dp"
android:layout_height="286dp"
android:layout_gravity="center"
android:background="@drawable/bg_vip_dialog"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="升级啦!"
android:textColor="#ffffe3af"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_vip_icon"
android:layout_width="94dp"
android:layout_height="85dp"
android:layout_marginTop="16dp"
android:src="@drawable/default_cover"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title" />
<TextView
android:id="@+id/tv_level_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="恭喜贵族等级提升到「男爵」!"
android:textColor="#ffffe3af"
android:textSize="14sp"
app:layout_constraintBottom_toTopOf="@id/tv_hint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_vip_icon"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/tv_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="快去看看获得的专属权限吧!"
android:textColor="#ffbc9e66"
android:textSize="12sp"
app:layout_constraintBottom_toTopOf="@id/tv_go_vip_main"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_level_desc" />
<TextView
android:id="@+id/tv_go_vip_main"
android:layout_width="204dp"
android:layout_height="44dp"
android:layout_marginBottom="25dp"
android:background="@drawable/bg_vip_upgrade_btn"
android:gravity="center"
android:text="前往贵族中心"
android:textColor="@color/color_333333"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="9dp"
android:layout_marginEnd="14dp"
android:src="@drawable/ic_vip_dialog_close"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>

View File

@@ -347,6 +347,21 @@
</LinearLayout>
<TextView
android:id="@+id/me_item_vip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="13dp"
android:layout_marginEnd="15dp"
android:background="@drawable/bg_vip_me_entrance"
android:gravity="center_vertical|end"
android:onClick="@{click}"
android:paddingEnd="8dp"
android:text="开通贵族立享各项特权>>"
android:textColor="@color/white"
android:textSize="14sp" />
<androidx.gridlayout.widget.GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -665,26 +680,6 @@
android:textSize="13sp"
android:visibility="gone" />
<TextView
android:id="@+id/me_item_vip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_me_text_padding_to_icon"
android:drawableStart="@mipmap/icon_me_link_room"
android:drawableEnd="@drawable/arrow_right"
android:drawablePadding="13dp"
android:gravity="center_vertical"
android:onClick="@{click}"
android:paddingTop="@dimen/dp_15"
android:paddingEnd="15dp"
android:paddingBottom="@dimen/dp_15"
android:text="贵族中心"
android:textColor="@color/text_normal_c6c6e9"
android:textSize="13sp"
/>
</LinearLayout>
</LinearLayout>

View File

@@ -406,6 +406,14 @@ public class CustomAttachment implements MsgAttachment {
public static final int CUSTOM_MSG_SUB_ROOM_PK_FINISH = 835;
public static final int CUSTOM_MSG_SUB_ROOM_PK_NOTIFY = 836;
/**
* 贵族
*/
public static final int CUSTOM_MSG_VIP = 85;
public static final int CUSTOM_MSG_VIP_ROOM_OPEN_VIP = 851; // 开通贵族房内消息
public static final int CUSTOM_MSG_VIP_OPEN_VIP_SUCCESS = 852; // 开通贵族成功消息
public static final int CUSTOM_MSG_VIP_UPGRADE = 853; // 开通贵族成功消息
public CustomAttachment() {

View File

@@ -41,6 +41,8 @@ import com.yizhuan.xchat_android_core.pay.event.FirstRechargeEvent;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_core.user.UserModel;
import com.yizhuan.xchat_android_core.vip.VipInfo;
import com.yizhuan.xchat_android_core.vip.VipUpgradeEvent;
import org.greenrobot.eventbus.EventBus;
@@ -51,6 +53,8 @@ import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUS
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_ACCOUNT;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_HEADER_TYPE_WORLD_DYNAMIC;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_MINI_WORLD;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_VIP;
import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUSTOM_MSG_VIP_UPGRADE;
/**
* 云信系统通知管理类
@@ -62,10 +66,6 @@ public class IMSystemMsgManager {
private IMSystemMsgManager() {
}
private static final class Helper {
private static final IMSystemMsgManager INSTANCE = new IMSystemMsgManager();
}
public static IMSystemMsgManager get() {
return Helper.INSTANCE;
}
@@ -299,7 +299,21 @@ public class IMSystemMsgManager {
event.setFirstChargeRewardList(firstChargeGoods.getFirstChargeRewardList());
EventBus.getDefault().post(event);
}
break;
case CUSTOM_MSG_VIP:
if (subType == CUSTOM_MSG_VIP_UPGRADE) {
VipInfo vipInfo = data.toJavaObject(VipInfo.class);
EventBus.getDefault().post(new VipUpgradeEvent(vipInfo));
}
break;
default:
break;
}
}
}
private static final class Helper {
private static final IMSystemMsgManager INSTANCE = new IMSystemMsgManager();
}
}

View File

@@ -1,5 +1,7 @@
package com.yizhuan.xchat_android_core.vip
import java.io.Serializable
data class VipInfo(
val comingSoon: Int = 0,
val createTime: String = "",
@@ -15,7 +17,7 @@ data class VipInfo(
var currLevel: Int = 0,
var currScore: Int = 0,
var nextVipName: String? = null
) {
) : Serializable {
override fun equals(other: Any?): Boolean {
return other is VipInfo && other.vipLevel == vipLevel
}

View File

@@ -0,0 +1,3 @@
package com.yizhuan.xchat_android_core.vip
data class VipUpgradeEvent(val vipInfo: VipInfo)