From 3028288bb39924fe0df2b7bdbf37e8c7689c0cce Mon Sep 17 00:00:00 2001 From: klaus Date: Tue, 2 Jun 2026 17:28:40 +0900 Subject: [PATCH] =?UTF-8?q?feat(home):=20=EC=B5=9C=EA=B7=BC=20=EB=8D=B0?= =?UTF-8?q?=EB=B7=94=20=ED=81=AC=EB=A6=AC=EC=97=90=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EC=B9=B4=EB=93=9C=EB=A5=BC=20=EC=A0=95=EB=A6=AC=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home/ui/HomeRecentDebutCreatorAdapter.kt | 9 ++++- .../drawable/bg_home_recent_debut_card.xml | 5 +++ .../bg_home_recent_debut_dim_gradient.xml | 10 ++++++ .../layout/item_home_recent_debut_creator.xml | 30 ++++++++++------ .../main/home/HomeMainFragmentLayoutTest.kt | 34 +++++++++++++++++-- 5 files changed, 74 insertions(+), 14 deletions(-) create mode 100644 app/src/main/res/drawable/bg_home_recent_debut_card.xml create mode 100644 app/src/main/res/drawable/bg_home_recent_debut_dim_gradient.xml diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeRecentDebutCreatorAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeRecentDebutCreatorAdapter.kt index 28cc5763..66a64c5f 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeRecentDebutCreatorAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/main/home/ui/HomeRecentDebutCreatorAdapter.kt @@ -20,7 +20,7 @@ class HomeRecentDebutCreatorAdapter : RecyclerView.Adapter + + + + diff --git a/app/src/main/res/drawable/bg_home_recent_debut_dim_gradient.xml b/app/src/main/res/drawable/bg_home_recent_debut_dim_gradient.xml new file mode 100644 index 00000000..4d9744e9 --- /dev/null +++ b/app/src/main/res/drawable/bg_home_recent_debut_dim_gradient.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/app/src/main/res/layout/item_home_recent_debut_creator.xml b/app/src/main/res/layout/item_home_recent_debut_creator.xml index bffd713e..922bccc9 100644 --- a/app/src/main/res/layout/item_home_recent_debut_creator.xml +++ b/app/src/main/res/layout/item_home_recent_debut_creator.xml @@ -1,30 +1,38 @@ - + android:layout_width="205dp" + android:layout_height="259dp" + android:background="@drawable/bg_home_recent_debut_card" + android:outlineProvider="background"> + + - + diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt index 5d13822b..396afd96 100644 --- a/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/main/home/HomeMainFragmentLayoutTest.kt @@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.v2.main.home import android.app.Application import android.content.Context import android.graphics.drawable.ColorDrawable +import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -16,6 +17,7 @@ import androidx.test.core.app.ApplicationProvider import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationLiveUiModel import kr.co.vividnext.sodalive.v2.main.home.ui.HomeLiveAdapter +import kr.co.vividnext.sodalive.v2.main.home.ui.HomeRecentDebutCreatorAdapter import kr.co.vividnext.sodalive.v2.widget.TextTabBarView import kr.co.vividnext.sodalive.v2.widget.banner.BannerView import org.junit.Assert.assertEquals @@ -116,6 +118,34 @@ class HomeMainFragmentLayoutTest { assertEquals(52.dpToPx(), profileImage.layoutParams.height) } + @Test + fun `recent debut creator item matches figma card dimensions`() { + val recentDebut = inflateViewWithParent(R.layout.item_home_recent_debut_creator) + val profileImage = recentDebut.findViewById(R.id.iv_home_recent_debut_creator_profile) + val nicknameText = recentDebut.findViewById(R.id.tv_home_recent_debut_creator_nickname) + + assertEquals(205.dpToPx(), recentDebut.layoutParams.width) + assertEquals(259.dpToPx(), recentDebut.layoutParams.height) + assertEquals(205.dpToPx(), profileImage.layoutParams.width) + assertEquals(259.dpToPx(), profileImage.layoutParams.height) + assertEquals(24f, nicknameText.textSize / nicknameText.resources.displayMetrics.scaledDensity) + assertEquals(Gravity.CENTER, nicknameText.gravity) + } + + @Test + fun `home recent debut section matches figma list spacing`() { + val root = inflateView(R.layout.fragment_v2_main_home) + val recentDebutList = root.findViewById(R.id.rv_home_recent_debut_creators) + val context = ApplicationProvider.getApplicationContext() + val parent = RecyclerView(context) + parent.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false) + val viewHolder = HomeRecentDebutCreatorAdapter().onCreateViewHolder(parent, 0) + val layoutParams = viewHolder.itemView.layoutParams as ViewGroup.MarginLayoutParams + + assertEquals(14.dpToPx(), recentDebutList.paddingStart) + assertEquals(4.dpToPx(), layoutParams.marginEnd) + } + @Test fun `popular community section is hidden until phase7 binding is implemented`() { val root = inflateView(R.layout.fragment_v2_main_home) @@ -125,12 +155,12 @@ class HomeMainFragmentLayoutTest { } @Test - fun `home live section matches figma row dimensions`() { + fun `home live section height follows its items`() { val root = inflateView(R.layout.fragment_v2_main_home) val liveList = root.findViewById(R.id.rv_home_lives) assertNotNull(liveList) - assertEquals(102.dpToPx(), liveList.layoutParams.height) + assertEquals(ViewGroup.LayoutParams.WRAP_CONTENT, liveList.layoutParams.height) assertEquals(20.dpToPx(), liveList.paddingStart) }