新增首页新用户打招呼弹窗

This commit is contained in:
huangjian
2022-06-02 18:44:37 +08:00
parent cd90bdb3aa
commit 96539bcb9b
16 changed files with 315 additions and 7 deletions

View File

@@ -60,6 +60,7 @@ import com.yizhuan.erban.community.publish.view.PublishActivity;
import com.yizhuan.erban.community.square.SquareFragment;
import com.yizhuan.erban.family.view.activity.FamilyHomeActivity;
import com.yizhuan.erban.home.HomeViewModel;
import com.yizhuan.erban.home.dialog.NewUserHelloDialog;
import com.yizhuan.erban.home.dialog.ProtocolUpdateDialog;
import com.yizhuan.erban.flutter.RouterConstants;
import com.yizhuan.erban.home.fragment.ContactsListFragment;
@@ -830,7 +831,6 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
/**
* 第一次加载到用户信息
* 跳转优先级 闪屏→linkedMe→渠道指定房间→邀请码
*/
@SuppressLint("CheckResult")
private void firstLoadedUserInfo() {
@@ -842,6 +842,11 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
handleChannelPageInfo();
if (BuildConfig.DEBUG){
//test
checkNewUserInRoom();
}
checkProtocolUpdate();
// 互动消息未读数量
@@ -871,7 +876,9 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
});
}
//闪屏→linkedme→渠道指定房间→邀请码
/**
* 跳转优先级 闪屏→linkedMe→邀请码→新用户打招呼引导→渠道指定房间
*/
@SuppressLint("CheckResult")
private void handleChannelPageInfo() {
@@ -905,15 +912,27 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
String.valueOf(inviteUserInfo.getInviteUid()));
}
} else {
checkChannelPageInRoom();
checkNewUserInRoom();
}
}, throwable -> checkChannelPageInRoom());
}, throwable -> checkNewUserInRoom());
AddUserInfoFragment.INVITE_USER_CODE = "";
} else {
checkChannelPageInRoom();
checkNewUserInRoom();
}
}
@SuppressLint("CheckResult")
private void checkNewUserInRoom() {
ChannelPageModel.get().checkNewUserInRoom()
.subscribe(newUserHelloInfo -> {
if (newUserHelloInfo.getSayHello()) {
NewUserHelloDialog.Companion.newInstance(newUserHelloInfo).show(context);
} else {
checkChannelPageInRoom();
}
}, throwable -> checkChannelPageInRoom());
}
/**
* 处理渠道落地页
*/
@@ -921,7 +940,11 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
private void checkChannelPageInRoom() {
GameHomeModel.get().getRoomShortcut()
.compose(bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(uid -> AVRoomActivity.start(context, StringUtils.toLong(uid)),
.subscribe(uid -> {
if (StringUtils.toLong(uid) != 0) {
AVRoomActivity.start(context, StringUtils.toLong(uid));
}
},
Throwable::printStackTrace);
}

View File

@@ -149,6 +149,7 @@ public class AVRoomActivity extends BaseMvpActivity<IAvRoomView, AvRoomPresenter
public static final int FROM_TYPE_ALL_RED = 5;//通过全服红包进房
public static final int FROM_TYPE_GAME_RECOMMEND = 8;//赛事详情进房
public static final int FROM_TYPE_ROOM_PK = 9;//跨房PK进房
public static final int FROM_TYPE_HELLO = 10;//新用户打招呼弹窗进房
private static final String TAG = "AVRoomActivity";
private static final int SHOW_RED_DIALOG_MAX = 10;
public static boolean isPKModel = false;

View File

@@ -0,0 +1,40 @@
package com.yizhuan.erban.home.dialog
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.WindowManager
import com.yizhuan.erban.avroom.activity.AVRoomActivity
import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.DialogHelloMessageBinding
import com.yizhuan.erban.databinding.DialogNewUserHelloBinding
import com.yizhuan.erban.ui.utils.load
import com.yizhuan.xchat_android_core.channel_page.bean.NewUserHelloInfo
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
class HelloMessageDialog : BaseDialog<DialogHelloMessageBinding>() {
companion object {
fun newInstance(newUserHelloInfo: NewUserHelloInfo): HelloMessageDialog {
val args = Bundle()
args.putSerializable("newUserHelloInfo", newUserHelloInfo)
val fragment = HelloMessageDialog()
fragment.arguments = args
return fragment
}
}
override var width: Int = WindowManager.LayoutParams.MATCH_PARENT
override var dimAmount: Float = 0f
private val newUserHelloInfo: NewUserHelloInfo by lazy {
requireArguments().getSerializable("newUserHelloInfo") as NewUserHelloInfo
}
@SuppressLint("CheckResult", "SetTextI18n")
override fun init() {
}
}

View File

@@ -0,0 +1,54 @@
package com.yizhuan.erban.home.dialog
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.WindowManager
import com.yizhuan.erban.avroom.activity.AVRoomActivity
import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.DialogNewUserHelloBinding
import com.yizhuan.erban.ui.utils.load
import com.yizhuan.xchat_android_core.channel_page.bean.NewUserHelloInfo
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
class NewUserHelloDialog : BaseDialog<DialogNewUserHelloBinding>() {
companion object {
fun newInstance(newUserHelloInfo: NewUserHelloInfo): NewUserHelloDialog {
val args = Bundle()
args.putSerializable("newUserHelloInfo", newUserHelloInfo)
val fragment = NewUserHelloDialog()
fragment.arguments = args
return fragment
}
}
override var width: Int = WindowManager.LayoutParams.MATCH_PARENT
override var dimAmount: Float = 0.8f
private val newUserHelloInfo: NewUserHelloInfo by lazy {
requireArguments().getSerializable("newUserHelloInfo") as NewUserHelloInfo
}
@SuppressLint("CheckResult", "SetTextI18n")
override fun init() {
binding.ivClose.setOnClickListener {
dismissAllowingStateLoss()
}
binding.ivAvatar.load(newUserHelloInfo.sayHelloUserAvatar)
binding.tvId.text = "ID:${newUserHelloInfo.sayHelloUserErbanNo}"
binding.tvNick.text = newUserHelloInfo.sayHelloUserNickname.subAndReplaceDot(8)
binding.tvGoRoom.setOnClickListener {
AVRoomActivity.startForFromType(
requireContext(),
newUserHelloInfo.roomUid,
AVRoomActivity.FROM_TYPE_USER,
newUserHelloInfo.sayHelloUserNickname,
newUserHelloInfo.sayHelloUserUid.toString()
)
dismissAllowingStateLoss()
}
}
}

View File

@@ -0,0 +1,51 @@
package com.yizhuan.erban.home.dialog
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.WindowManager
import com.yizhuan.erban.avroom.activity.AVRoomActivity
import com.yizhuan.erban.base.BaseDialog
import com.yizhuan.erban.databinding.DialogNewUserHelloBinding
import com.yizhuan.erban.ui.utils.load
import com.yizhuan.xchat_android_core.channel_page.bean.NewUserHelloInfo
import com.yizhuan.xchat_android_core.utils.subAndReplaceDot
class RoomHelloDialog : BaseDialog<DialogNewUserHelloBinding>() {
companion object {
fun newInstance(newUserHelloInfo: NewUserHelloInfo): RoomHelloDialog {
val args = Bundle()
args.putSerializable("newUserHelloInfo", newUserHelloInfo)
val fragment = RoomHelloDialog()
fragment.arguments = args
return fragment
}
}
override var width: Int = WindowManager.LayoutParams.MATCH_PARENT
override var height: Int = WindowManager.LayoutParams.WRAP_CONTENT
private val newUserHelloInfo: NewUserHelloInfo by lazy {
requireArguments().getSerializable("newUserHelloInfo") as NewUserHelloInfo
}
@SuppressLint("CheckResult", "SetTextI18n")
override fun init() {
binding.ivClose.setOnClickListener {
dismissAllowingStateLoss()
}
binding.ivAvatar.load(newUserHelloInfo.sayHelloUserAvatar)
binding.tvId.text = "ID:${newUserHelloInfo.sayHelloUserErbanNo}"
binding.tvNick.text = newUserHelloInfo.sayHelloUserNickname.subAndReplaceDot(8)
binding.tvGoRoom.setOnClickListener {
AVRoomActivity.startForFromType(
requireContext(),
newUserHelloInfo.roomUid,
AVRoomActivity.FROM_TYPE_HELLO
)
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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_vertical"
android:orientation="vertical"
tools:background="#af000000">
</LinearLayout>

View File

@@ -0,0 +1,97 @@
<?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="match_parent"
tools:background="#af000000">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginEnd="52dp"
android:src="@drawable/new_user_hello_ic_close" />
<FrameLayout
android:layout_width="253dp"
android:layout_height="220dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="32dp">
<com.yizhuan.erban.common.widget.CircleImageView
android:id="@+id/iv_avatar"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="10dp"
android:scaleType="centerCrop"
android:src="@drawable/default_cover"
app:cborder_color="@color/white"
app:cborder_width="2dp" />
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/new_user_hello_bg_avatar" />
</FrameLayout>
<TextView
android:id="@+id/tv_nick"
android:layout_width="165dp"
android:layout_height="28dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="4dp"
android:background="@drawable/new_user_hello_bg_nick"
android:gravity="center"
android:textColor="@color/white"
android:textSize="14sp"
tools:text="大鹅可可鸭大鹅可..." />
<TextView
android:id="@+id/tv_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="7dp"
android:textColor="@color/white"
android:textSize="12sp"
tools:text="ID:123456" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="15dp"
android:background="@drawable/new_user_hello_bg_content"
android:gravity="center"
android:text="欢迎来到大鹅开黑Ta已经等待你很\n久啦快来一起玩吧~"
android:textColor="#ffa00bbb"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_go_room"
android:layout_width="240dp"
android:layout_height="48dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="35dp"
android:includeFontPadding="false"
android:background="@drawable/new_user_hello_bg_go_room"
android:gravity="center"
android:text="开启浪漫之旅"
android:textColor="@color/white"
android:textSize="20sp" />
</LinearLayout>
</FrameLayout>

View File

@@ -56,7 +56,7 @@ public class GameHomeModel extends BaseModel {
return api.apiRoomShortcut(String.valueOf(AuthModel.get().getCurrentUid()),
CommunityConstant.VERSION_VALID_TYPE,
AuthModel.get().getTicket())
.compose(RxHelper.handleBeanData())
.compose(RxHelper.handleStringData())
.compose(RxHelper.handleSchedulers());
}

View File

@@ -0,0 +1,13 @@
package com.yizhuan.xchat_android_core.channel_page.bean
import java.io.Serializable
data class NewUserHelloInfo(
val roomUid: Long = 0L,
val sayHello: Boolean = false,
val sayHelloMsg: String = "",
val sayHelloUserUid: Long = 0L,
val sayHelloUserAvatar: String = "",
val sayHelloUserErbanNo: Int = 0,
val sayHelloUserNickname: String = ""
) : Serializable

View File

@@ -3,6 +3,7 @@ package com.yizhuan.xchat_android_core.channel_page.model;
import com.yizhuan.xchat_android_core.base.BaseModel;
import com.yizhuan.xchat_android_core.bean.response.ServiceResult;
import com.yizhuan.xchat_android_core.channel_page.bean.ChannelPageInfo;
import com.yizhuan.xchat_android_core.channel_page.bean.NewUserHelloInfo;
import com.yizhuan.xchat_android_core.user.bean.InviteUserInfo;
import com.yizhuan.xchat_android_core.utils.net.RxHelper;
import com.yizhuan.xchat_android_library.net.rxnet.RxNet;
@@ -66,6 +67,13 @@ public class ChannelPageModel extends BaseModel implements IChannelPageModel {
.compose(RxHelper.handleSchAndExce());
}
@Override
public Single<NewUserHelloInfo> checkNewUserInRoom() {
return api.checkNewUserInRoom()
.compose(RxHelper.handleBeanData())
.compose(RxHelper.handleSchAndExce());
}
/**
*
*/
@@ -130,6 +138,12 @@ public class ChannelPageModel extends BaseModel implements IChannelPageModel {
@GET("/user/v2/checkInviteUserInRoom")
Single<ServiceResult<InviteUserInfo>> checkInviteUserInRoom(@Query("inviteCode") String inviteCode);
/**
* 新用户推荐房间弹窗
*/
@GET("/newUserStart/indexSayHello")
Single<ServiceResult<NewUserHelloInfo>> checkNewUserInRoom();
/**
* 字节跳动推广接口
*/

View File

@@ -1,6 +1,7 @@
package com.yizhuan.xchat_android_core.channel_page.model;
import com.yizhuan.xchat_android_core.channel_page.bean.ChannelPageInfo;
import com.yizhuan.xchat_android_core.channel_page.bean.NewUserHelloInfo;
import com.yizhuan.xchat_android_core.user.bean.InviteUserInfo;
import io.reactivex.Single;
@@ -15,6 +16,8 @@ public interface IChannelPageModel {
Single<InviteUserInfo> checkInviteUserInRoom(String inviteCode);
Single<NewUserHelloInfo> checkNewUserInRoom();
void checkAd();
void checkByteDanceAd(String evenType);