恢复个播房

This commit is contained in:
max
2024-04-15 19:07:59 +08:00
parent f95f8fb0f5
commit 70b9e5cbdd
3 changed files with 291 additions and 5 deletions

View File

@@ -356,11 +356,11 @@ public class HomePartyFragment extends BaseFragment implements View.OnClickListe
// tempFragment = GameRoomFragment.newInstance();
// }
// break;
// case RoomInfo.ROOM_TYPE_SINGLE:
// if (!(tempFragment instanceof SingleRoomFragment)) {
// tempFragment = SingleRoomFragment.newInstance();
// }
// break;
case RoomInfo.ROOM_TYPE_SINGLE:
if (!(tempFragment instanceof SingleRoomFragment)) {
tempFragment = SingleRoomFragment.newInstance();
}
break;
default:
if (!(tempFragment instanceof HomePartyRoomFragment)) {
tempFragment = HomePartyRoomFragment.newInstance();

View File

@@ -0,0 +1,142 @@
package com.chwl.app.avroom.fragment
import android.annotation.SuppressLint
import android.os.Bundle
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.databinding.DataBindingUtil
import com.chwl.library.base.factory.CreatePresenter
import com.netease.nim.uikit.common.util.sys.ScreenUtil
import com.chwl.app.R
import com.chwl.app.avroom.adapter.OnMicroItemClickListener
import com.chwl.app.avroom.adapter.SingleAnchorMicroViewAdapter
import com.chwl.app.avroom.adapter.SingleRoomPKMicroViewAdapter
import com.chwl.app.avroom.dialog.RequestUpMicDialog
import com.chwl.app.avroom.presenter.SingleRoomPresenter
import com.chwl.app.avroom.singleroompk.SingleRoomPkFinishDialog
import com.chwl.app.avroom.singleroompk.SingleRoomPkForceFinishDialog
import com.chwl.app.avroom.singleroompk.SingleRoomPkReceivedDialog
import com.chwl.app.avroom.view.ISingleRoomView
import com.chwl.app.databinding.FragmentSingleRoomBinding
import com.chwl.app.music.widget.MusicPlayerView
import com.chwl.core.im.custom.bean.RequestUpmicAttachment
import com.chwl.core.im.custom.bean.RoomPKAttachment
import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.manager.RoomEvent
import com.chwl.core.user.bean.UserInfo
/**
* 個播房間
*
* @author chenran
* @date 2017/7/26
*/
@CreatePresenter(SingleRoomPresenter::class)
class SingleRoomFragment : BaseRoomFragment<ISingleRoomView?, SingleRoomPresenter?>(),
ISingleRoomView, OnMicroItemClickListener {
companion object {
@JvmStatic
fun newInstance(): SingleRoomFragment {
val roomFragment = SingleRoomFragment()
val bundle = Bundle()
roomFragment.arguments = bundle
return roomFragment
}
}
private lateinit var gameBinding: FragmentSingleRoomBinding
private lateinit var upMicDialog: RequestUpMicDialog
override fun getRootLayoutId(): Int {
return R.layout.fragment_single_room
}
override fun onFindViews() {
super.onFindViews()
gameBinding = DataBindingUtil.bind(mView)!!
gameBinding.lifecycleOwner = this
gameBinding.click = this
}
@SuppressLint("CheckResult")
override fun initiate() {
super.initiate()
}
override fun onReceiveRoomEvent(roomEvent: RoomEvent?) {
super.onReceiveRoomEvent(roomEvent)
if (roomEvent == null) return
when (roomEvent.event) {
RoomEvent.REQUEST_UP_MIC -> {
(roomEvent.chatRoomMessage?.attachment as? RequestUpmicAttachment)?.userInfo?.let {
showInviteDialog(it)
}
}
RoomEvent.ROOM_PK_INVITE ->
SingleRoomPkReceivedDialog.newInstance((roomEvent.chatRoomMessage.attachment as RoomPKAttachment).roomPkBean)
.show(mContext)
RoomEvent.ROOM_PK_FINISH -> {
val roomPkBean =
(roomEvent.chatRoomMessage.attachment as RoomPKAttachment).roomPkBean
if (roomPkBean.isForce) {
SingleRoomPkForceFinishDialog.newInstance(roomPkBean).show(mContext)
} else {
SingleRoomPkFinishDialog.newInstance(roomPkBean).show(mContext)
}
gameBinding.microView.adapter?.notifyDataSetChanged()
}
}
}
//顯示請求上麥彈窗
private fun showInviteDialog(userInfo: UserInfo) {
if (!this::upMicDialog.isInitialized) {
upMicDialog = RequestUpMicDialog(requireContext())
}
if (!upMicDialog.isShowing) {
upMicDialog.openDialog()
upMicDialog.setUser(userInfo)
}
}
override fun onSetListener() {
super.onSetListener()
bottomView.setBottomViewListener(BaseRoomBottomViewWrapper())
}
override fun onEnterRoom() {
super.onEnterRoom()
}
override fun updateView() {
super.updateView()
if (AvRoomDataManager.get().isOpenAnotherPKMode && gameBinding.microView.adapter !is SingleRoomPKMicroViewAdapter) {
gameBinding.microView.bindAdapter(SingleRoomPKMicroViewAdapter(context))
gameBinding.viewPkBoard.isVisible = true
gameBinding.microView.updateLayoutParams<ConstraintLayout.LayoutParams> {
topMargin = ScreenUtil.dip2px(140f)
}
} else if (!AvRoomDataManager.get().isOpenAnotherPKMode && gameBinding.microView.adapter !is SingleAnchorMicroViewAdapter) {
gameBinding.microView.bindAdapter(SingleAnchorMicroViewAdapter(context))
gameBinding.viewPkBoard.isVisible = false
gameBinding.microView.updateLayoutParams<ConstraintLayout.LayoutParams> {
topMargin = ScreenUtil.dip2px(110f)
}
} else {
gameBinding.microView.adapter?.notifyDataSetChanged()
}
}
override fun initWidget() {
super.initWidget()
}
override fun onInitMusicPlayerView(view: MusicPlayerView) {
super.onInitMusicPlayerView(view)
view.linkIconView(gameBinding.ivMusic, gameBinding.ivMusic)
}
}

View File

@@ -0,0 +1,144 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.yizhuan.erban.avroom.fragment.SingleRoomFragment">
<data>
<variable
name="click"
type="android.view.View.OnClickListener" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.chwl.app.avroom.widget.MicroView
android:id="@+id/micro_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="110dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:background="@color/color_red" />
<com.chwl.app.avroom.singleroompk.SingleRoomPKBoardView
android:id="@+id/view_pk_board"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/micro_view" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier_micro"
android:layout_width="0dp"
android:layout_height="0dp"
app:barrierDirection="bottom"
app:constraint_referenced_ids="view_pk_board,micro_view" />
<ImageView
android:layout_marginStart="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_95"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:id="@+id/iv_music"
android:layout_width="@dimen/dp_22"
android:layout_height="@dimen/dp_22"
android:src="@drawable/room_ic_music"
android:visibility="gone"
tools:visibility="visible" />
<ViewStub
android:id="@+id/vs_music_player"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="@dimen/dp_8"
android:layout="@layout/avroom_music_player_layout"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_music" />
<com.chwl.app.avroom.widget.BottomView
android:id="@+id/bottom_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<com.chwl.app.avroom.widget.MessageView
android:id="@+id/message_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="12dp"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="90dp"
android:layout_marginBottom="@dimen/dp_10"
app:layout_constraintBottom_toTopOf="@id/bottom_view"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/barrier_micro" />
<RelativeLayout
android:id="@+id/input_layout"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:background="@android:color/white"
android:gravity="center_vertical"
android:orientation="horizontal">
<EditText
android:id="@+id/input_edit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@android:color/white"
android:hint="@string/layout_fragment_single_room_08"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textColor="#888889"
android:textColorHint="#c8c8c8"
android:textSize="12sp" />
<ImageView
android:id="@+id/input_send"
android:layout_width="50dp"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:background="@drawable/click_white_gray_selector"
android:scaleType="center"
android:src="@android:drawable/ic_menu_send" />
</LinearLayout>
</RelativeLayout>
<com.chwl.app.vip.view.VipBroadcastView
android:id="@+id/vip_broadcast_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="100dp"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/micro_view" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>