fix(content): 콘텐츠 랭킹 rank 간격을 보정한다
This commit is contained in:
@@ -123,6 +123,7 @@ open class ContentRankingGridCardView @JvmOverloads constructor(
|
|||||||
requireNotNull(rankText).apply {
|
requireNotNull(rankText).apply {
|
||||||
textSize = 54f
|
textSize = 54f
|
||||||
layoutParams = LayoutParams((55 * scale).roundToInt(), (75 * scale).roundToInt())
|
layoutParams = LayoutParams((55 * scale).roundToInt(), (75 * scale).roundToInt())
|
||||||
|
setPadding(0, 0, 0, (6 * scale).roundToInt())
|
||||||
}
|
}
|
||||||
requireNotNull(titleText).textSize = 22f
|
requireNotNull(titleText).textSize = 22f
|
||||||
placeDelta(left = 10, top = 70, scale = scale)
|
placeDelta(left = 10, top = 70, scale = scale)
|
||||||
@@ -136,6 +137,7 @@ open class ContentRankingGridCardView @JvmOverloads constructor(
|
|||||||
layoutParams = LayoutParams((42 * scale).roundToInt(), (56 * scale).roundToInt()).apply {
|
layoutParams = LayoutParams((42 * scale).roundToInt(), (56 * scale).roundToInt()).apply {
|
||||||
leftMargin = (8 * scale).roundToInt()
|
leftMargin = (8 * scale).roundToInt()
|
||||||
}
|
}
|
||||||
|
setPadding(0, 0, 0, (5 * scale).roundToInt())
|
||||||
}
|
}
|
||||||
requireNotNull(titleText).textSize = 14f
|
requireNotNull(titleText).textSize = 14f
|
||||||
placeDelta(left = 10, top = 49, scale = scale)
|
placeDelta(left = 10, top = 49, scale = scale)
|
||||||
|
|||||||
@@ -122,6 +122,11 @@ class ContentRankingHorizontalCardView @JvmOverloads constructor(
|
|||||||
leftMargin = (14 * scale).roundToInt()
|
leftMargin = (14 * scale).roundToInt()
|
||||||
topMargin = (14 * scale).roundToInt()
|
topMargin = (14 * scale).roundToInt()
|
||||||
}
|
}
|
||||||
|
requireNotNull(rankText).layoutParams = android.widget.LinearLayout.LayoutParams(
|
||||||
|
(48 * scale).roundToInt(),
|
||||||
|
(52 * scale).roundToInt()
|
||||||
|
)
|
||||||
|
requireNotNull(rankText).setPadding(0, 0, 0, (4 * scale).roundToInt())
|
||||||
requireNotNull(rankText).applyContentRankingRankGradient()
|
requireNotNull(rankText).applyContentRankingRankGradient()
|
||||||
imageView().layoutParams = LayoutParams((80 * scale).roundToInt(), (80 * scale).roundToInt()).apply {
|
imageView().layoutParams = LayoutParams((80 * scale).roundToInt(), (80 * scale).roundToInt()).apply {
|
||||||
leftMargin = (77 * scale).roundToInt()
|
leftMargin = (77 * scale).roundToInt()
|
||||||
|
|||||||
@@ -120,6 +120,7 @@ class ContentRankingLargeCardView @JvmOverloads constructor(
|
|||||||
private fun positionViews(size: ContentRankingCardSize) {
|
private fun positionViews(size: ContentRankingCardSize) {
|
||||||
val scale = size.widthPx / FIGMA_WIDTH.toFloat()
|
val scale = size.widthPx / FIGMA_WIDTH.toFloat()
|
||||||
requireNotNull(rankText).layoutParams = LayoutParams((91 * scale).roundToInt(), (114 * scale).roundToInt())
|
requireNotNull(rankText).layoutParams = LayoutParams((91 * scale).roundToInt(), (114 * scale).roundToInt())
|
||||||
|
requireNotNull(rankText).setPadding(0, 0, 0, (10 * scale).roundToInt())
|
||||||
contentImageView().layoutParams = LayoutParams((155 * scale).roundToInt(), (154 * scale).roundToInt()).apply {
|
contentImageView().layoutParams = LayoutParams((155 * scale).roundToInt(), (154 * scale).roundToInt()).apply {
|
||||||
leftMargin = ((size.widthPx - (155 * scale)) / 2f).roundToInt()
|
leftMargin = ((size.widthPx - (155 * scale)) / 2f).roundToInt()
|
||||||
topMargin = (14 * scale).roundToInt()
|
topMargin = (14 * scale).roundToInt()
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fontFamily="@font/pattaya_regular"
|
android:fontFamily="@font/pattaya_regular"
|
||||||
|
android:gravity="center"
|
||||||
android:includeFontPadding="false"
|
android:includeFontPadding="false"
|
||||||
android:shadowColor="#7A000000"
|
android:shadowColor="#7A000000"
|
||||||
android:shadowRadius="4"
|
android:shadowRadius="4"
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fontFamily="@font/pattaya_regular"
|
android:fontFamily="@font/pattaya_regular"
|
||||||
|
android:gravity="center"
|
||||||
android:includeFontPadding="false"
|
android:includeFontPadding="false"
|
||||||
android:shadowColor="#7A000000"
|
android:shadowColor="#7A000000"
|
||||||
android:shadowRadius="4"
|
android:shadowRadius="4"
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fontFamily="@font/pattaya_regular"
|
android:fontFamily="@font/pattaya_regular"
|
||||||
|
android:gravity="center"
|
||||||
android:includeFontPadding="false"
|
android:includeFontPadding="false"
|
||||||
android:shadowColor="#7A000000"
|
android:shadowColor="#7A000000"
|
||||||
android:shadowRadius="4"
|
android:shadowRadius="4"
|
||||||
|
|||||||
@@ -2,8 +2,11 @@ package kr.co.vividnext.sodalive.v2.widget.contentranking
|
|||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.view.Gravity
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.TextView
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import kr.co.vividnext.sodalive.R
|
import kr.co.vividnext.sodalive.R
|
||||||
import kr.co.vividnext.sodalive.v2.widget.ranking.RankingChangeType.Increase
|
import kr.co.vividnext.sodalive.v2.widget.ranking.RankingChangeType.Increase
|
||||||
@@ -17,6 +20,77 @@ import org.robolectric.annotation.Config
|
|||||||
@Config(sdk = [28], application = Application::class)
|
@Config(sdk = [28], application = Application::class)
|
||||||
class ContentRankingCardViewTest {
|
class ContentRankingCardViewTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `large card 순위 숫자는 폰트 padding 없이 하단 보정 padding을 가진다`() {
|
||||||
|
val view = inflateView<ContentRankingLargeCardView>(R.layout.view_content_ranking_large_card)
|
||||||
|
|
||||||
|
view.setCardSize(ContentRankingCardSize(widthPx = 374, heightPx = 268))
|
||||||
|
|
||||||
|
assertRankTextBox(
|
||||||
|
view = view.findViewById(R.id.tv_content_ranking_rank),
|
||||||
|
expectedWidth = 91,
|
||||||
|
expectedHeight = 114,
|
||||||
|
expectedLeft = 0,
|
||||||
|
expectedTop = 0,
|
||||||
|
expectedBottomPadding = 10
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `medium grid card 순위 숫자는 폰트 padding 없이 하단 보정 padding을 가진다`() {
|
||||||
|
val view = inflateView<ContentRankingMediumGridCardView>(R.layout.view_content_ranking_medium_grid_card)
|
||||||
|
|
||||||
|
view.setCardSize(ContentRankingCardSize(widthPx = 185, heightPx = 185))
|
||||||
|
|
||||||
|
assertRankTextBox(
|
||||||
|
view = view.findViewById(R.id.tv_content_ranking_rank),
|
||||||
|
expectedWidth = 55,
|
||||||
|
expectedHeight = 75,
|
||||||
|
expectedLeft = 0,
|
||||||
|
expectedTop = 0,
|
||||||
|
expectedBottomPadding = 6
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `small grid card 순위 숫자는 폰트 padding 없이 하단 보정 padding을 가진다`() {
|
||||||
|
val view = inflateView<ContentRankingSmallGridCardView>(R.layout.view_content_ranking_small_grid_card)
|
||||||
|
|
||||||
|
view.setCardSize(ContentRankingCardSize(widthPx = 122, heightPx = 122))
|
||||||
|
|
||||||
|
assertRankTextBox(
|
||||||
|
view = view.findViewById(R.id.tv_content_ranking_rank),
|
||||||
|
expectedWidth = 42,
|
||||||
|
expectedHeight = 56,
|
||||||
|
expectedLeft = 8,
|
||||||
|
expectedTop = 0,
|
||||||
|
expectedBottomPadding = 5
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `horizontal card 순위 숫자는 폰트 padding 없이 하단 보정 padding을 가진다`() {
|
||||||
|
val view = inflateView<ContentRankingHorizontalCardView>(R.layout.view_content_ranking_horizontal_card)
|
||||||
|
|
||||||
|
view.setCardSize(ContentRankingCardSize(widthPx = 374, heightPx = 100))
|
||||||
|
|
||||||
|
val rankGroup = view.findViewById<View>(R.id.ll_content_ranking_rank_group)
|
||||||
|
val rankGroupParams = rankGroup.layoutParams as ViewGroup.MarginLayoutParams
|
||||||
|
assertEquals(49, rankGroupParams.width)
|
||||||
|
assertEquals(ViewGroup.LayoutParams.WRAP_CONTENT, rankGroupParams.height)
|
||||||
|
assertEquals(14, rankGroupParams.leftMargin)
|
||||||
|
assertEquals(14, rankGroupParams.topMargin)
|
||||||
|
|
||||||
|
assertRankTextBox(
|
||||||
|
view = view.findViewById(R.id.tv_content_ranking_rank),
|
||||||
|
expectedWidth = 48,
|
||||||
|
expectedHeight = 52,
|
||||||
|
expectedLeft = 0,
|
||||||
|
expectedTop = 0,
|
||||||
|
expectedBottomPadding = 4
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `large card는 showRankChange가 false이면 rank num을 숨긴다`() {
|
fun `large card는 showRankChange가 false이면 rank num을 숨긴다`() {
|
||||||
val view = inflateView<ContentRankingLargeCardView>(R.layout.view_content_ranking_large_card)
|
val view = inflateView<ContentRankingLargeCardView>(R.layout.view_content_ranking_large_card)
|
||||||
@@ -67,6 +141,24 @@ class ContentRankingCardViewTest {
|
|||||||
return LayoutInflater.from(context).inflate(layoutResId, null, false) as T
|
return LayoutInflater.from(context).inflate(layoutResId, null, false) as T
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun assertRankTextBox(
|
||||||
|
view: TextView,
|
||||||
|
expectedWidth: Int,
|
||||||
|
expectedHeight: Int,
|
||||||
|
expectedLeft: Int,
|
||||||
|
expectedTop: Int,
|
||||||
|
expectedBottomPadding: Int
|
||||||
|
) {
|
||||||
|
val params = view.layoutParams as ViewGroup.MarginLayoutParams
|
||||||
|
assertEquals(expectedWidth, params.width)
|
||||||
|
assertEquals(expectedHeight, params.height)
|
||||||
|
assertEquals(expectedLeft, params.leftMargin)
|
||||||
|
assertEquals(expectedTop, params.topMargin)
|
||||||
|
assertEquals(Gravity.CENTER, view.gravity)
|
||||||
|
assertEquals(false, view.includeFontPadding)
|
||||||
|
assertEquals(expectedBottomPadding, view.paddingBottom)
|
||||||
|
}
|
||||||
|
|
||||||
private fun sampleItem(
|
private fun sampleItem(
|
||||||
rank: Int = 1,
|
rank: Int = 1,
|
||||||
showRankChange: Boolean = true
|
showRankChange: Boolean = true
|
||||||
|
|||||||
Reference in New Issue
Block a user