新用户打招呼弹窗UI修改

This commit is contained in:
huangjian
2022-11-25 15:54:48 +08:00
parent c248da1486
commit 3db895ecc7
10 changed files with 183 additions and 68 deletions

View File

@@ -484,7 +484,7 @@ public class BaseRoomPresenter<V extends IBaseRoomView> extends BaseMvpPresenter
.takeWhile(aBoolean -> !aBoolean && getMvpView() != null)
.doOnNext(aBoolean -> getMvpView().noFollow())
//个人主播房新加的关注提醒弹窗,以后还会不会有呢???
.takeWhile(aBoolean -> AvRoomDataManager.get().isSingleRoom())
.takeWhile(aBoolean -> !AvRoomDataManager.get().isSingleRoom())
.delay(4, TimeUnit.MINUTES)
.single(false)
.flatMap(aBoolean -> PraiseModel.get().isPraised(AuthModel.get().getCurrentUid(), uid))

View File

@@ -2,13 +2,21 @@ package com.mango.moshen.home.dialog
import android.annotation.SuppressLint
import android.os.Bundle
import android.text.TextUtils
import android.view.WindowManager
import com.mango.moshen.avroom.activity.AVRoomActivity
import com.mango.moshen.base.BaseDialog
import com.mango.moshen.databinding.DialogNewUserHelloBinding
import com.mango.moshen.ui.utils.load
import com.mango.core.channel_page.bean.NewUserHelloInfo
import com.mango.core.statistic.StatisticManager
import com.mango.core.statistic.protocol.StatisticsProtocol
import com.mango.core.utils.subAndReplaceDot
import com.mango.moshen.R
import com.mango.moshen.audio.helper.AudioPlayerHelper
import com.mango.moshen.audio.helper.OnPlayListener
import com.mango.xchat_android_library.utils.ListUtils
import com.mango.xchat_android_library.utils.SingleToastUtil
class NewUserHelloDialog : BaseDialog<DialogNewUserHelloBinding>() {
@@ -25,7 +33,8 @@ class NewUserHelloDialog : BaseDialog<DialogNewUserHelloBinding>() {
}
override var width: Int = WindowManager.LayoutParams.MATCH_PARENT
override var dimAmount: Float = 0.8f
override var dimAmount: Float = 0.3f
private var audioPlaying = false
private val newUserHelloInfo: NewUserHelloInfo by lazy {
requireArguments().getSerializable("newUserHelloInfo") as NewUserHelloInfo
@@ -33,13 +42,10 @@ class NewUserHelloDialog : BaseDialog<DialogNewUserHelloBinding>() {
@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 {
binding.tvContent.text = newUserHelloInfo.sayHelloMsg
binding.ivGoRoom.setOnClickListener {
AVRoomActivity.startForFromType(
requireContext(),
newUserHelloInfo.roomUid,
@@ -49,6 +55,52 @@ class NewUserHelloDialog : BaseDialog<DialogNewUserHelloBinding>() {
)
dismissAllowingStateLoss()
}
binding.llAudio.setOnClickListener { toggleAudio(newUserHelloInfo.voiceCard?.propVals) }
}
private fun toggleAudio(list: List<String>?) {
if (list.isNullOrEmpty()) return
val url: String? = list.findLast { it == "http" }
if (TextUtils.isEmpty(url)) return
if (!audioPlaying) {
playAudio(url)
} else {
stopAudio()
}
}
private fun playAudio(url: String?) {
if (audioPlaying) return
audioPlaying = true
binding.ivAudioControl.setImageResource(R.drawable.ic_skill_play)
AudioPlayerHelper.get().playInThread(url, object : OnPlayListener {
override fun onError(error: String) {
SingleToastUtil.showToast("播放出错,请重试")
stopAudio()
}
override fun onPrepared() {}
override fun onPlaying(currDuration: Long) {}
override fun onCompletion() {
stopAudio()
}
})
StatisticManager.Instance()
.onEvent(StatisticsProtocol.EVENT_PERSONALSHOW_TOP_CARD_VOICE_CLICK, "个播展示卡片播放语音点击")
}
private fun stopAudio() {
if (!audioPlaying) return
audioPlaying = false
binding.ivAudioControl.setImageResource(R.drawable.ic_skill_pause)
AudioPlayerHelper.get().endPlay()
}
override fun onDestroyView() {
stopAudio()
super.onDestroyView()
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 819 B

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#80ffffff" />
<corners android:radius="24dp" />
</shape>
</item>
<item
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp">
<shape android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="#3BE4FF"
android:startColor="#7BFFD9" />
<corners android:radius="20dp" />
</shape>
</item>
</layer-list>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="180"
android:endColor="#F3F4ED"
android:startColor="#DFF8FC"
android:type="linear"
android:useLevel="true" />
<corners android:radius="20dp" />
</shape>

View File

@@ -1,5 +1,4 @@
<?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"
@@ -14,84 +13,107 @@
android:orientation="vertical">
<ImageView
android:id="@+id/iv_close"
android:id="@+id/iv_title"
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" />
android:layout_gravity="center_horizontal"
android:src="@drawable/new_user_hello_bg_title" />
<FrameLayout
android:layout_width="253dp"
android:layout_height="220dp"
android:layout_width="250dp"
android:layout_height="290dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="32dp">
android:layout_marginTop="6dp"
android:background="@drawable/shape_new_user_avatar_bg">
<com.mango.moshen.common.widget.CircleImageView
<ImageView
android:id="@+id/iv_avatar"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="10dp"
android:layout_width="232dp"
android:layout_height="272dp"
android:layout_gravity="center"
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" />
<LinearLayout
android:id="@+id/ll_audio"
android:layout_width="wrap_content"
android:layout_height="21dp"
android:layout_gravity="end"
android:layout_marginTop="17dp"
android:layout_marginEnd="14dp"
android:background="@drawable/shape_new_user_voice_bg"
android:gravity="center"
android:orientation="horizontal"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:visibility="gone"
tools:visibility="visible">
</FrameLayout>
<ImageView
android:id="@+id/iv_audio_control"
android:layout_width="@dimen/dp_14"
android:layout_height="@dimen/dp_14"
android:src="@drawable/ic_skill_pause" />
<ImageView
android:id="@+id/liv_user"
android:layout_width="20dp"
android:layout_height="10dp"
android:layout_marginStart="2dp"
android:background="@color/transparent"
android:scaleType="fitXY"
android:src="@drawable/new_user_hello_voice" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginStart="9dp"
android:layout_marginEnd="9dp"
android:layout_marginBottom="9dp"
android:background="@drawable/bg_single_anchor_more_bottom"
android:orientation="vertical">
<TextView
android:id="@+id/tv_nick"
android:layout_width="165dp"
android:layout_height="28dp"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
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:id="@+id/tv_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="7dp"
android:layout_marginStart="6dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="6dp"
android:maxLines="2"
android:layout_marginBottom="8dp"
android:text="欢迎来到魔力Ta已经等待你很久啦快来一起玩吧~"
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>
<ImageView
android:id="@+id/iv_go_room"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="28dp"
android:src="@drawable/new_user_hello_bg_go_room" />
</LinearLayout>
</FrameLayout>

View File

@@ -1,5 +1,7 @@
package com.mango.core.user.bean
import java.io.Serializable
/**
* {
"code": 0,
@@ -23,4 +25,4 @@ data class UserInfoSkillEntity(
val id: Int,
val name: String,
val propVals: List<String>
)
) : Serializable

View File

@@ -1,5 +1,6 @@
package com.mango.core.channel_page.bean
import com.mango.core.user.bean.UserInfoSkillEntity
import java.io.Serializable
data class NewUserHelloInfo(
@@ -9,5 +10,6 @@ data class NewUserHelloInfo(
val sayHelloUserUid: Long = 0L,
val sayHelloUserAvatar: String = "",
val sayHelloUserErbanNo: Int = 0,
val sayHelloUserNickname: String = ""
val sayHelloUserNickname: String = "",
val voiceCard: UserInfoSkillEntity? = null
) : Serializable