From 6bd5d268827640e1ffd2452dcf870f6e4e3cdeb5 Mon Sep 17 00:00:00 2001 From: klaus Date: Thu, 14 Mar 2024 17:37:05 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A7=80=EA=B8=88=20=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=EB=B8=8C=20=EC=A4=91=20=EC=A0=84=EC=B2=B4=EB=B3=B4=EA=B8=B0=20?= =?UTF-8?q?-=20UI=20=ED=91=9C=EC=8B=9C=20=EB=B0=A9=EC=8B=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20-=201=EC=A4=84=EC=97=90=201=EA=B0=9C=20=EB=B3=B4?= =?UTF-8?q?=EC=9D=B4=EB=8D=98=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EB=B0=A9?= =?UTF-8?q?=EC=8B=9D=EC=97=90=EC=84=9C=201=EC=A4=84=EC=97=90=203=EA=B0=9C?= =?UTF-8?q?=EC=94=A9=20=ED=91=9C=EC=8B=9C=ED=95=98=EB=8A=94=20=EA=B7=B8?= =?UTF-8?q?=EB=A6=AC=EB=93=9C=20=EB=B0=A9=EC=8B=9D=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../live/now/all/LiveNowAllActivity.kt | 33 +--- .../live/now/all/LiveNowAllAdapter.kt | 66 ++++--- .../main/res/layout/activity_live_now_all.xml | 1 + app/src/main/res/layout/item_live_now_all.xml | 180 ++++++++++++------ 4 files changed, 166 insertions(+), 114 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/now/all/LiveNowAllActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/now/all/LiveNowAllActivity.kt index 06b0d00..577457e 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/now/all/LiveNowAllActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/now/all/LiveNowAllActivity.kt @@ -6,6 +6,7 @@ import android.graphics.Rect import android.os.Bundle import android.view.View import android.widget.Toast +import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import kr.co.vividnext.sodalive.audio_content.AudioContentPlayService @@ -17,6 +18,7 @@ import kr.co.vividnext.sodalive.databinding.ActivityLiveNowAllBinding import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.moneyFormat import kr.co.vividnext.sodalive.live.LiveViewModel +import kr.co.vividnext.sodalive.live.now.LiveNowAdapter import kr.co.vividnext.sodalive.live.room.LiveRoomActivity import kr.co.vividnext.sodalive.live.room.detail.LiveRoomDetailFragment import kr.co.vividnext.sodalive.live.room.dialog.LivePaymentDialog @@ -63,12 +65,7 @@ class LiveNowAllActivity : BaseActivity( ) } - recyclerView.layoutManager = LinearLayoutManager( - applicationContext, - LinearLayoutManager.VERTICAL, - false - ) - + recyclerView.layoutManager = GridLayoutManager(this, 3) recyclerView.addItemDecoration(object : RecyclerView.ItemDecoration() { override fun getItemOffsets( outRect: Rect, @@ -78,27 +75,13 @@ class LiveNowAllActivity : BaseActivity( ) { super.getItemOffsets(outRect, view, parent, state) - when (parent.getChildAdapterPosition(view)) { - 0 -> { - outRect.top = 0.dpToPx().toInt() - outRect.bottom = 6.7f.dpToPx().toInt() - } - - adapter.itemCount - 1 -> { - outRect.top = 6.7f.dpToPx().toInt() - outRect.bottom = 0.dpToPx().toInt() - } - - else -> { - outRect.top = 6.7f.dpToPx().toInt() - outRect.bottom = 6.7f.dpToPx().toInt() - } - } + outRect.top = 16f.dpToPx().toInt() + outRect.bottom = 16f.dpToPx().toInt() + outRect.left = 4f.dpToPx().toInt() + outRect.right = 4f.dpToPx().toInt() } }) - recyclerView.adapter = adapter - recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() { override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { super.onScrolled(recyclerView, dx, dy) @@ -113,6 +96,8 @@ class LiveNowAllActivity : BaseActivity( } }) + recyclerView.adapter = adapter + binding.swipeRefreshLayout.setOnRefreshListener { adapter.clear() viewModel.page = 1 diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/now/all/LiveNowAllAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/now/all/LiveNowAllAdapter.kt index d104168..00a997e 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/now/all/LiveNowAllAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/now/all/LiveNowAllAdapter.kt @@ -8,10 +8,12 @@ import android.view.ViewGroup import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import coil.load +import coil.transform.CircleCropTransformation import coil.transform.RoundedCornersTransformation import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.databinding.ItemLiveNowAllBinding import kr.co.vividnext.sodalive.extensions.dpToPx +import kr.co.vividnext.sodalive.extensions.loadUrl import kr.co.vividnext.sodalive.extensions.moneyFormat import kr.co.vividnext.sodalive.live.GetRoomListResponse @@ -27,48 +29,56 @@ class LiveNowAllAdapter( ) : RecyclerView.ViewHolder(binding.root) { @SuppressLint("SetTextI18n") fun bind(item: GetRoomListResponse) { - binding.ivCover.load(item.coverImageUrl) { + binding.ivCover.loadUrl(item.coverImageUrl) { crossfade(true) - placeholder(R.drawable.bg_placeholder) + placeholder(R.drawable.ic_place_holder) transformations(RoundedCornersTransformation(4.7f.dpToPx())) } - binding.tvNickname.text = item.creatorNickname - binding.tvTitle.text = item.title binding.ivLock.visibility = if (item.isPrivateRoom) { View.VISIBLE } else { View.GONE } - if (item.numberOfPeople > item.numberOfParticipate) { - binding.tvAvailableParticipate.text = "참여가능" - binding.tvAvailableParticipate.setTextColor( - ContextCompat.getColor( - context, - R.color.color_3bb9f1 - ) - ) - } else { - binding.tvAvailableParticipate.text = "Sold out" - binding.tvAvailableParticipate.setTextColor( - ContextCompat.getColor( - context, - R.color.color_ffd300 - ) - ) - } - - if (item.price < 1) { - binding.tvPrice.text = "무료" - binding.tvPrice.setCompoundDrawables(null, null, null, null) - } else { - binding.tvPrice.text = item.price.moneyFormat() + if (item.price > 0) { + binding.tvPrice.text = "${item.price}" binding.tvPrice.setCompoundDrawablesWithIntrinsicBounds( + R.drawable.ic_can_white, 0, 0, - R.drawable.ic_can, 0 ) + binding.tvPrice.setBackgroundResource(R.drawable.bg_round_corner_13_3_dd4500) + } else { + binding.tvPrice.text = "무료" + binding.tvPrice.setCompoundDrawables(null, null, null, null) + binding.tvPrice.setBackgroundResource(R.drawable.bg_round_corner_13_3_111111) + } + + if (item.tags.isNotEmpty()) { + binding.tvTags.visibility = View.VISIBLE + binding.tvTags.text = item.tags.joinToString(" ") { "#$it" } + } else { + binding.tvTags.visibility = View.GONE + } + + binding.tvTitle.text = item.title + binding.tvNickname.text = item.creatorNickname + binding.ivProfile.loadUrl(item.creatorProfileImage) { + crossfade(true) + placeholder(R.drawable.ic_place_holder) + transformations(CircleCropTransformation()) + } + + if (item.numberOfPeople > item.numberOfParticipate) { + binding.tvRemainingParticipantNumber.visibility = View.VISIBLE + binding.tvRemainingParticipant.text = "잔여" + binding.tvRemainingParticipantNumber.text = + "${item.numberOfPeople - item.numberOfParticipate}" + } else { + binding.tvRemainingParticipantNumber.visibility = View.GONE + binding.tvRemainingParticipant.text = "Sold out" + binding.tvRemainingParticipantNumber.text = "" } binding.root.setOnClickListener { onClick(item) } diff --git a/app/src/main/res/layout/activity_live_now_all.xml b/app/src/main/res/layout/activity_live_now_all.xml index 20ed613..6e0bec1 100644 --- a/app/src/main/res/layout/activity_live_now_all.xml +++ b/app/src/main/res/layout/activity_live_now_all.xml @@ -2,6 +2,7 @@ + tools:src="@drawable/ic_launcher_background" /> + + + + - + android:layout_marginEnd="3.3dp" + android:layout_marginBottom="11dp" + android:background="@drawable/bg_round_corner_13_3_b3333333" + android:gravity="center" + android:orientation="horizontal" + android:paddingHorizontal="4dp" + android:paddingVertical="3dp" + app:layout_constraintBottom_toTopOf="@+id/tv_title" + app:layout_constraintEnd_toEndOf="parent"> + + + + + - - - - + android:textSize="12sp" + app:layout_constraintEnd_toEndOf="@+id/iv_cover" + app:layout_constraintStart_toStartOf="@+id/iv_cover" + app:layout_constraintTop_toBottomOf="@+id/iv_cover" + tools:text="test" /> - + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_constraintEnd_toEndOf="@+id/tv_title" + app:layout_constraintStart_toStartOf="@+id/tv_title" + app:layout_constraintTop_toBottomOf="@+id/tv_title"> + + + + + + + + +