feat:完成房间榜流水展示

This commit is contained in:
max
2024-06-17 15:34:09 +08:00
parent 94cebe457a
commit d1fc37aa24
12 changed files with 218 additions and 25 deletions

View File

@@ -12,6 +12,7 @@ import com.chwl.app.avroom.dialog.RoomTeamPKResultDialog;
import com.chwl.app.avroom.dialog.RoomTeamPkDialog;
import com.chwl.app.avroom.headline.RoomHeadlineWidget;
import com.chwl.app.avroom.online.RoomOnlineWidget;
import com.chwl.app.avroom.rank.RoomRankNumberWidget;
import com.chwl.app.music.widget.MusicPlayerView;
import com.chwl.app.ui.webview.DialogWebViewActivity;
import com.chwl.core.room.pk.event.PKDataUpdateEvent;
@@ -135,6 +136,7 @@ public class HomePartyRoomFragment extends BaseRoomFragment<IHomePartyView, Home
super.initWidget();
registerWidget(RoomOnlineWidget.class.getSimpleName(), gameBinding.onlineWidget);
registerWidget(RoomHeadlineWidget.class.getSimpleName(), gameBinding.headlineWidget);
registerWidget(RoomRankNumberWidget.class.getSimpleName(), gameBinding.rankNumberWidget);
}
@SuppressLint("CheckResult")

View File

@@ -0,0 +1,92 @@
package com.chwl.app.avroom.rank
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.databinding.DataBindingUtil
import com.chwl.core.support.room.FrameLayoutRoomWidget
import com.chwl.core.support.room.RoomWidget
import com.chwl.app.R
import com.chwl.app.databinding.RoomRankNumberWidgetBinding
import com.chwl.app.ui.webview.DialogWebViewActivity
import com.chwl.core.UriProvider
import com.chwl.core.im.custom.bean.RoomSerialValueChangedAttachment
import com.chwl.core.manager.AvRoomDataManager
import com.chwl.core.manager.IMNetEaseManager
import com.chwl.core.manager.RoomEvent
import com.chwl.core.support.room.RoomContext
import com.chwl.core.support.room.RoomView
import com.chwl.library.utils.FormatUtils
import com.example.lib_utils.ktx.singleClick
/**
* 房间榜单入口
*/
class RoomRankNumberWidget : FrameLayoutRoomWidget, RoomWidget {
private val binding: RoomRankNumberWidgetBinding =
DataBindingUtil.inflate(
LayoutInflater.from(
context
), R.layout.room_rank_number_widget, this, true
)
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
constructor(
context: Context,
attrs: AttributeSet?,
defStyleAttr: Int,
defStyleRes: Int
) : super(context, attrs, defStyleAttr, defStyleRes)
init {
this.singleClick {
DialogWebViewActivity.start(context, UriProvider.getRoomRanking())
}
}
override fun onInitialize(roomView: RoomView, roomContext: RoomContext) {
super.onInitialize(roomView, roomContext)
refreshData()
registerMemberChangedListener()
}
override fun onUnbindContext() {
super.onUnbindContext()
updateView(null)
}
private fun registerMemberChangedListener() {
getCompositeDisposable().add(IMNetEaseManager.get().chatRoomEventObservable.subscribe {
when (it.event) {
RoomEvent.SERIAL_VALUE_CHANGED -> {
val attachment =
it.chatRoomMessage.attachment as? RoomSerialValueChangedAttachment
attachment?.serialValue?.let {
updateView(attachment.serialValue)
}
}
}
})
}
private fun refreshData() {
val value = AvRoomDataManager.get().serialValue
updateView(value)
}
private fun updateView(value: Double?) {
if (value == null || value <= 0) {
binding.tvNumber.text = "0"
} else {
binding.tvNumber.text = FormatUtils.formatToShortKMHalfUp(value)
}
}
}

View File

@@ -101,32 +101,11 @@
android:textSize="@dimen/dp_10" />
</LinearLayout>
<LinearLayout
android:layout_marginEnd="@dimen/dp_5"
android:id="@+id/layout_room_rank"
<com.chwl.app.avroom.rank.RoomRankNumberWidget
android:id="@+id/rank_number_widget"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_16"
android:background="@drawable/room_bg_hour_rank"
android:gravity="center_vertical"
android:onClick="@{click}"
android:orientation="horizontal">
<ImageView
android:layout_width="@dimen/dp_14"
android:layout_height="@dimen/dp_14"
android:layout_marginStart="@dimen/dp_3"
android:scaleType="fitCenter"
android:src="@drawable/room_ic_rank" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_2"
android:layout_marginEnd="@dimen/dp_3"
android:text="@string/room_rank"
android:textColor="@color/white"
android:textSize="@dimen/dp_10" />
</LinearLayout>
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_5" />
<ImageView
android:id="@+id/iv_music"

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layout_room_rank"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_16"
android:background="@drawable/room_bg_hour_rank"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="@dimen/dp_14"
android:layout_height="@dimen/dp_14"
android:layout_marginStart="@dimen/dp_3"
android:scaleType="fitCenter"
android:src="@drawable/room_ic_rank" />
<TextView
android:id="@+id/tv_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_2"
android:gravity="center"
android:paddingHorizontal="@dimen/dp_5"
android:text="0"
android:textColor="@color/white"
android:textSize="@dimen/dp_10" />
</LinearLayout>
</layout>