diff --git a/app/src/main/java/com/chwl/app/avroom/fragment/HomePartyFragment.java b/app/src/main/java/com/chwl/app/avroom/fragment/HomePartyFragment.java index 406d38175..8bdae69ac 100644 --- a/app/src/main/java/com/chwl/app/avroom/fragment/HomePartyFragment.java +++ b/app/src/main/java/com/chwl/app/avroom/fragment/HomePartyFragment.java @@ -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(); diff --git a/app/src/main/java/com/chwl/app/avroom/fragment/SingleRoomFragment.kt b/app/src/main/java/com/chwl/app/avroom/fragment/SingleRoomFragment.kt new file mode 100644 index 000000000..2a78d34f7 --- /dev/null +++ b/app/src/main/java/com/chwl/app/avroom/fragment/SingleRoomFragment.kt @@ -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, 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 { + 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 { + 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) + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_single_room.xml b/app/src/main/res/layout/fragment_single_room.xml new file mode 100644 index 000000000..3df85be26 --- /dev/null +++ b/app/src/main/res/layout/fragment_single_room.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file