diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/widget/banner/BannerLayoutCalculator.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/widget/banner/BannerLayoutCalculator.kt new file mode 100644 index 00000000..cebcb394 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/widget/banner/BannerLayoutCalculator.kt @@ -0,0 +1,23 @@ +package kr.co.vividnext.sodalive.v2.widget.banner + +object BannerLayoutCalculator { + private const val SIDE_INSET_DP = 20 + private const val ITEM_SPACING_DP = 8 + + fun calculate(screenWidthDp: Int, density: Float): BannerLayoutSize { + val itemSizeDp = screenWidthDp - (SIDE_INSET_DP * 2) + return BannerLayoutSize( + itemWidthDp = itemSizeDp, + itemHeightDp = itemSizeDp, + sideInsetDp = SIDE_INSET_DP, + itemSpacingDp = ITEM_SPACING_DP + ) + } +} + +data class BannerLayoutSize( + val itemWidthDp: Int, + val itemHeightDp: Int, + val sideInsetDp: Int, + val itemSpacingDp: Int +) diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/widget/banner/BannerLayoutCalculatorTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/widget/banner/BannerLayoutCalculatorTest.kt new file mode 100644 index 00000000..02552473 --- /dev/null +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/widget/banner/BannerLayoutCalculatorTest.kt @@ -0,0 +1,40 @@ +package kr.co.vividnext.sodalive.v2.widget.banner + +import org.junit.Assert.assertEquals +import org.junit.Test + +class BannerLayoutCalculatorTest { + + @Test + fun `화면 폭 402dp이면 배너 아이템 크기는 362dp다`() { + val size = BannerLayoutCalculator.calculate( + screenWidthDp = 402, + density = 1f + ) + + assertEquals(362, size.itemWidthDp) + assertEquals(362, size.itemHeightDp) + } + + @Test + fun `화면 폭 360dp이면 배너 아이템 크기는 320dp다`() { + val size = BannerLayoutCalculator.calculate( + screenWidthDp = 360, + density = 1f + ) + + assertEquals(320, size.itemWidthDp) + assertEquals(320, size.itemHeightDp) + } + + @Test + fun `배너 레이아웃은 고정 좌우 여백과 아이템 간격을 사용한다`() { + val size = BannerLayoutCalculator.calculate( + screenWidthDp = 402, + density = 1f + ) + + assertEquals(20, size.sideInsetDp) + assertEquals(8, size.itemSpacingDp) + } +}