fix(content): 전체 탭 grid 간격을 보정한다
This commit is contained in:
@@ -4,6 +4,7 @@ import android.graphics.Rect
|
||||
import android.view.View
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
fun RecyclerView.addContentHorizontalItemSpacing() {
|
||||
if (itemDecorationCount == 0) addItemDecoration(ContentHorizontalItemDecoration())
|
||||
@@ -28,10 +29,10 @@ private class ContentGridItemDecoration(
|
||||
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
|
||||
val position = parent.getChildAdapterPosition(view)
|
||||
if (position == RecyclerView.NO_POSITION) return
|
||||
val isLeftColumn = position % spanCount == 0
|
||||
val halfGap = GRID_ITEM_GAP_DP.dpToPx().toInt() / 2
|
||||
outRect.left = if (isLeftColumn) 0 else halfGap
|
||||
outRect.right = if (isLeftColumn) halfGap else 0
|
||||
val columnIndex = position % spanCount
|
||||
val gap = GRID_ITEM_GAP_DP.dpToPx()
|
||||
outRect.left = (columnIndex * gap / spanCount).roundToInt()
|
||||
outRect.right = (gap - (columnIndex + 1) * gap / spanCount).roundToInt()
|
||||
if (position >= spanCount) outRect.top = GRID_ITEM_VERTICAL_GAP_DP.dpToPx().toInt()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,6 +219,21 @@ class ContentMainFragmentSourceTest {
|
||||
assertSourceContains(source, "binding.tvContentAllTotalCount.text")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `content grid item spacing은 span count 기반으로 열 간격을 계산한다`() {
|
||||
val source = projectFile(
|
||||
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/content/ui/ContentRecyclerItemLayoutParams.kt"
|
||||
).readText()
|
||||
|
||||
assertSourceContains(source, "val columnIndex = position % spanCount")
|
||||
assertSourceContains(source, "outRect.left = (columnIndex * gap / spanCount).roundToInt()")
|
||||
assertSourceContains(source, "outRect.right = (gap - (columnIndex + 1) * gap / spanCount).roundToInt()")
|
||||
assertFalse(
|
||||
"3열 grid spacing은 left column 여부만으로 계산하면 인접 열 간격이 불균형해진다.",
|
||||
source.contains("isLeftColumn")
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `content 추천 source는 오디오와 시리즈 routing extra를 사용한다`() {
|
||||
val source = projectFile(
|
||||
|
||||
Reference in New Issue
Block a user