parent
6bd5d26882
commit
d091c47a0c
|
@ -12,6 +12,7 @@ import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity
|
||||||
import kr.co.vividnext.sodalive.audio_content.main.new_content.AudioContentMainNewContentThemeAdapter
|
import kr.co.vividnext.sodalive.audio_content.main.new_content.AudioContentMainNewContentThemeAdapter
|
||||||
import kr.co.vividnext.sodalive.base.BaseActivity
|
import kr.co.vividnext.sodalive.base.BaseActivity
|
||||||
import kr.co.vividnext.sodalive.common.Constants
|
import kr.co.vividnext.sodalive.common.Constants
|
||||||
|
import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration
|
||||||
import kr.co.vividnext.sodalive.common.LoadingDialog
|
import kr.co.vividnext.sodalive.common.LoadingDialog
|
||||||
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentNewAllBinding
|
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentNewAllBinding
|
||||||
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
|
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
|
||||||
|
@ -108,22 +109,7 @@ class AudioContentNewAllActivity : BaseActivity<ActivityAudioContentNewAllBindin
|
||||||
)
|
)
|
||||||
|
|
||||||
binding.rvContent.layoutManager = GridLayoutManager(this, 3)
|
binding.rvContent.layoutManager = GridLayoutManager(this, 3)
|
||||||
|
binding.rvContent.addItemDecoration(GridSpacingItemDecoration(3, 13, true))
|
||||||
binding.rvContent.addItemDecoration(object : RecyclerView.ItemDecoration() {
|
|
||||||
override fun getItemOffsets(
|
|
||||||
outRect: Rect,
|
|
||||||
view: View,
|
|
||||||
parent: RecyclerView,
|
|
||||||
state: RecyclerView.State
|
|
||||||
) {
|
|
||||||
super.getItemOffsets(outRect, view, parent, state)
|
|
||||||
|
|
||||||
outRect.top = 16f.dpToPx().toInt()
|
|
||||||
outRect.bottom = 16f.dpToPx().toInt()
|
|
||||||
outRect.left = 4f.dpToPx().toInt()
|
|
||||||
outRect.right = 4f.dpToPx().toInt()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
binding.rvContent.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
binding.rvContent.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||||
|
|
|
@ -16,6 +16,7 @@ import kr.co.vividnext.sodalive.audio_content.all.AudioContentNewAllAdapter
|
||||||
import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity
|
import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity
|
||||||
import kr.co.vividnext.sodalive.base.BaseActivity
|
import kr.co.vividnext.sodalive.base.BaseActivity
|
||||||
import kr.co.vividnext.sodalive.common.Constants
|
import kr.co.vividnext.sodalive.common.Constants
|
||||||
|
import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration
|
||||||
import kr.co.vividnext.sodalive.common.LoadingDialog
|
import kr.co.vividnext.sodalive.common.LoadingDialog
|
||||||
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentAllByThemeBinding
|
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentAllByThemeBinding
|
||||||
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
|
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
|
||||||
|
@ -74,22 +75,7 @@ class AudioContentAllByThemeActivity : BaseActivity<ActivityAudioContentAllByThe
|
||||||
)
|
)
|
||||||
|
|
||||||
binding.rvContentAll.layoutManager = GridLayoutManager(this, 3)
|
binding.rvContentAll.layoutManager = GridLayoutManager(this, 3)
|
||||||
|
binding.rvContentAll.addItemDecoration(GridSpacingItemDecoration(3, 13, true))
|
||||||
binding.rvContentAll.addItemDecoration(object : RecyclerView.ItemDecoration() {
|
|
||||||
override fun getItemOffsets(
|
|
||||||
outRect: Rect,
|
|
||||||
view: View,
|
|
||||||
parent: RecyclerView,
|
|
||||||
state: RecyclerView.State
|
|
||||||
) {
|
|
||||||
super.getItemOffsets(outRect, view, parent, state)
|
|
||||||
|
|
||||||
outRect.top = 16f.dpToPx().toInt()
|
|
||||||
outRect.bottom = 16f.dpToPx().toInt()
|
|
||||||
outRect.left = 4f.dpToPx().toInt()
|
|
||||||
outRect.right = 4f.dpToPx().toInt()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
binding.rvContentAll.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
binding.rvContentAll.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||||
|
|
|
@ -17,6 +17,7 @@ import kr.co.vividnext.sodalive.audio_content.all.AudioContentNewAllAdapter
|
||||||
import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity
|
import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity
|
||||||
import kr.co.vividnext.sodalive.base.BaseActivity
|
import kr.co.vividnext.sodalive.base.BaseActivity
|
||||||
import kr.co.vividnext.sodalive.common.Constants
|
import kr.co.vividnext.sodalive.common.Constants
|
||||||
|
import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration
|
||||||
import kr.co.vividnext.sodalive.common.LoadingDialog
|
import kr.co.vividnext.sodalive.common.LoadingDialog
|
||||||
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentCurationBinding
|
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentCurationBinding
|
||||||
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
|
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
|
||||||
|
@ -73,22 +74,7 @@ class AudioContentCurationActivity : BaseActivity<ActivityAudioContentCurationBi
|
||||||
)
|
)
|
||||||
|
|
||||||
binding.rvCuration.layoutManager = GridLayoutManager(this, 3)
|
binding.rvCuration.layoutManager = GridLayoutManager(this, 3)
|
||||||
|
binding.rvCuration.addItemDecoration(GridSpacingItemDecoration(3, 13, true))
|
||||||
binding.rvCuration.addItemDecoration(object : RecyclerView.ItemDecoration() {
|
|
||||||
override fun getItemOffsets(
|
|
||||||
outRect: Rect,
|
|
||||||
view: View,
|
|
||||||
parent: RecyclerView,
|
|
||||||
state: RecyclerView.State
|
|
||||||
) {
|
|
||||||
super.getItemOffsets(outRect, view, parent, state)
|
|
||||||
|
|
||||||
outRect.top = 16f.dpToPx().toInt()
|
|
||||||
outRect.bottom = 16f.dpToPx().toInt()
|
|
||||||
outRect.left = 4f.dpToPx().toInt()
|
|
||||||
outRect.right = 4f.dpToPx().toInt()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
binding.rvCuration.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
binding.rvCuration.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
package kr.co.vividnext.sodalive.common
|
||||||
|
|
||||||
|
import android.graphics.Rect
|
||||||
|
import android.view.View
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import androidx.recyclerview.widget.RecyclerView.ItemDecoration
|
||||||
|
|
||||||
|
|
||||||
|
class GridSpacingItemDecoration(
|
||||||
|
private val spanCount: Int,
|
||||||
|
private val spacing: Int,
|
||||||
|
private val includeEdge: Boolean
|
||||||
|
) : ItemDecoration() {
|
||||||
|
override fun getItemOffsets(
|
||||||
|
outRect: Rect,
|
||||||
|
view: View,
|
||||||
|
parent: RecyclerView,
|
||||||
|
state: RecyclerView.State
|
||||||
|
) {
|
||||||
|
val position = parent.getChildAdapterPosition(view) // Item position
|
||||||
|
val column = position % spanCount // Current column
|
||||||
|
if (includeEdge) {
|
||||||
|
outRect.left = spacing - column * spacing / spanCount
|
||||||
|
outRect.right = (column + 1) * spacing / spanCount
|
||||||
|
if (position < spanCount) { // Top edge
|
||||||
|
outRect.top = spacing
|
||||||
|
}
|
||||||
|
outRect.bottom = spacing // Item bottom
|
||||||
|
} else {
|
||||||
|
outRect.left = column * spacing / spanCount
|
||||||
|
outRect.right = spacing - (column + 1) * spacing / spanCount
|
||||||
|
if (position >= spanCount) {
|
||||||
|
outRect.top = spacing // Item top
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,7 +2,6 @@ package kr.co.vividnext.sodalive.live.now.all
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.Rect
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
@ -12,13 +11,12 @@ import androidx.recyclerview.widget.RecyclerView
|
||||||
import kr.co.vividnext.sodalive.audio_content.AudioContentPlayService
|
import kr.co.vividnext.sodalive.audio_content.AudioContentPlayService
|
||||||
import kr.co.vividnext.sodalive.base.BaseActivity
|
import kr.co.vividnext.sodalive.base.BaseActivity
|
||||||
import kr.co.vividnext.sodalive.common.Constants
|
import kr.co.vividnext.sodalive.common.Constants
|
||||||
|
import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration
|
||||||
import kr.co.vividnext.sodalive.common.LoadingDialog
|
import kr.co.vividnext.sodalive.common.LoadingDialog
|
||||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
||||||
import kr.co.vividnext.sodalive.databinding.ActivityLiveNowAllBinding
|
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.extensions.moneyFormat
|
||||||
import kr.co.vividnext.sodalive.live.LiveViewModel
|
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.LiveRoomActivity
|
||||||
import kr.co.vividnext.sodalive.live.room.detail.LiveRoomDetailFragment
|
import kr.co.vividnext.sodalive.live.room.detail.LiveRoomDetailFragment
|
||||||
import kr.co.vividnext.sodalive.live.room.dialog.LivePaymentDialog
|
import kr.co.vividnext.sodalive.live.room.dialog.LivePaymentDialog
|
||||||
|
@ -66,21 +64,7 @@ class LiveNowAllActivity : BaseActivity<ActivityLiveNowAllBinding>(
|
||||||
}
|
}
|
||||||
|
|
||||||
recyclerView.layoutManager = GridLayoutManager(this, 3)
|
recyclerView.layoutManager = GridLayoutManager(this, 3)
|
||||||
recyclerView.addItemDecoration(object : RecyclerView.ItemDecoration() {
|
recyclerView.addItemDecoration(GridSpacingItemDecoration(3, 13, true))
|
||||||
override fun getItemOffsets(
|
|
||||||
outRect: Rect,
|
|
||||||
view: View,
|
|
||||||
parent: RecyclerView,
|
|
||||||
state: RecyclerView.State
|
|
||||||
) {
|
|
||||||
super.getItemOffsets(outRect, view, parent, state)
|
|
||||||
|
|
||||||
outRect.top = 16f.dpToPx().toInt()
|
|
||||||
outRect.bottom = 16f.dpToPx().toInt()
|
|
||||||
outRect.left = 4f.dpToPx().toInt()
|
|
||||||
outRect.right = 4f.dpToPx().toInt()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||||
|
|
|
@ -24,7 +24,6 @@ class LiveNowAllAdapter(
|
||||||
var items = mutableListOf<GetRoomListResponse>()
|
var items = mutableListOf<GetRoomListResponse>()
|
||||||
|
|
||||||
inner class ViewHolder(
|
inner class ViewHolder(
|
||||||
private val context: Context,
|
|
||||||
private val binding: ItemLiveNowAllBinding
|
private val binding: ItemLiveNowAllBinding
|
||||||
) : RecyclerView.ViewHolder(binding.root) {
|
) : RecyclerView.ViewHolder(binding.root) {
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
|
@ -70,6 +69,8 @@ class LiveNowAllAdapter(
|
||||||
transformations(CircleCropTransformation())
|
transformations(CircleCropTransformation())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (item.numberOfPeople - item.numberOfParticipate <= 2) {
|
||||||
|
binding.llRemainingParticipant.visibility = View.VISIBLE
|
||||||
if (item.numberOfPeople > item.numberOfParticipate) {
|
if (item.numberOfPeople > item.numberOfParticipate) {
|
||||||
binding.tvRemainingParticipantNumber.visibility = View.VISIBLE
|
binding.tvRemainingParticipantNumber.visibility = View.VISIBLE
|
||||||
binding.tvRemainingParticipant.text = "잔여"
|
binding.tvRemainingParticipant.text = "잔여"
|
||||||
|
@ -80,13 +81,15 @@ class LiveNowAllAdapter(
|
||||||
binding.tvRemainingParticipant.text = "Sold out"
|
binding.tvRemainingParticipant.text = "Sold out"
|
||||||
binding.tvRemainingParticipantNumber.text = ""
|
binding.tvRemainingParticipantNumber.text = ""
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
binding.llRemainingParticipant.visibility = View.GONE
|
||||||
|
}
|
||||||
|
|
||||||
binding.root.setOnClickListener { onClick(item) }
|
binding.root.setOnClickListener { onClick(item) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ViewHolder(
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ViewHolder(
|
||||||
parent.context,
|
|
||||||
ItemLiveNowAllBinding.inflate(
|
ItemLiveNowAllBinding.inflate(
|
||||||
LayoutInflater.from(parent.context),
|
LayoutInflater.from(parent.context),
|
||||||
parent,
|
parent,
|
||||||
|
|
|
@ -57,6 +57,7 @@
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/ll_remaining_participant"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="3.3dp"
|
android:layout_marginEnd="3.3dp"
|
||||||
|
|
Loading…
Reference in New Issue