feat: 메인 홈

- 라이브 UI 추가
This commit is contained in:
2025-07-15 05:04:21 +09:00
parent e3121fc49b
commit 388770889f
30 changed files with 1229 additions and 2 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/color_3bb9f1" />
</shape>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#2A339D" />
<stroke
android:width="1dp"
android:color="@color/white" />
<corners android:radius="999dp" />
</shape>

View File

@@ -14,4 +14,20 @@
android:font="@font/gmarket_sans_medium"
app:font="@font/gmarket_sans_medium" />
<font
android:font="@font/pretendard_bold"
app:font="@font/pretendard_bold" />
<font
android:font="@font/pretendard_light"
app:font="@font/pretendard_light" />
<font
android:font="@font/pretendard_medium"
app:font="@font/pretendard_medium" />
<font
android:font="@font/pretendard_regular"
app:font="@font/pretendard_regular" />
</font-family>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,415 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_131313">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingVertical="13.3dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="24dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:contentDescription="@null"
android:src="@drawable/img_text_logo" />
<LinearLayout
android:id="@+id/ll_short_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:orientation="horizontal"
android:visibility="gone">
<ImageView
android:id="@+id/iv_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@null"
android:src="@drawable/ic_search_white" />
<ImageView
android:id="@+id/iv_charge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:contentDescription="@null"
android:src="@drawable/ic_can_circle" />
<ImageView
android:id="@+id/iv_storage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@null"
android:src="@drawable/ic_storage" />
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:id="@+id/ll_live"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:id="@+id/tv_live_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:fontFamily="@font/pretendard_bold"
android:text="지금 라이브 중"
android:textColor="@color/white"
android:textSize="26sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_live"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:clipToPadding="false"
android:paddingHorizontal="24dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_famous_creator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:id="@+id/tv_famous_creator_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:fontFamily="@font/pretendard_bold"
android:text="인기 크리에이터"
android:textColor="@color/white"
android:textSize="26sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_famous_creator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:clipToPadding="false"
android:paddingHorizontal="24dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_new_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:orientation="vertical"
android:visibility="gone">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="24dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/pretendard_bold"
android:text="최신 콘텐츠"
android:textColor="@color/color_eeeeee"
android:textSize="26sp" />
<TextView
android:id="@+id/tv_new_content_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:fontFamily="@font/pretendard_regular"
android:text="전체보기"
android:textColor="@color/color_607d8b" />
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_new_content_theme"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:clipToPadding="false"
android:paddingHorizontal="24dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_new_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:clipToPadding="false"
android:paddingHorizontal="24dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_banner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:orientation="vertical"
android:visibility="gone">
<com.zhpan.bannerview.BannerViewPager
android:id="@+id/event_banner_slider"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<com.zhpan.indicator.IndicatorView
android:id="@+id/indicator_event_banner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="6.7dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_series_original"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:id="@+id/tv_series_original"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:fontFamily="@font/pretendard_bold"
android:text="오직 보이스온에서만"
android:textColor="@color/white"
android:textSize="26sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_series_original"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:clipToPadding="false"
android:paddingHorizontal="24dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_audition"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:orientation="vertical"
android:visibility="gone">
<com.zhpan.bannerview.BannerViewPager
android:id="@+id/audition_slider"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<com.zhpan.indicator.IndicatorView
android:id="@+id/indicator_audition"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="6.7dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_series_day_of_week"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:id="@+id/tv_series_day_of_week"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:fontFamily="@font/pretendard_bold"
android:text="요일별 시리즈"
android:textColor="@color/white"
android:textSize="26sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_series_day_of_week_day"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:clipToPadding="false"
android:paddingHorizontal="24dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_series_day_of_week"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:clipToPadding="false"
android:paddingHorizontal="24dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_weekly_chart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:id="@+id/tv_weekly_chart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:fontFamily="@font/pretendard_bold"
android:text="보온 주간 차트"
android:textColor="@color/white"
android:textSize="26sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_weekly_chart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:clipToPadding="false"
android:paddingHorizontal="24dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_recommend_channel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:id="@+id/tv_recommend_channel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:fontFamily="@font/pretendard_bold"
android:text="추천 채널"
android:textColor="@color/white"
android:textSize="26sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_recommend_channel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:clipToPadding="false"
android:paddingHorizontal="24dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_free_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:id="@+id/tv_free_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:fontFamily="@font/pretendard_bold"
android:text="무료 콘텐츠"
android:textColor="@color/white"
android:textSize="26sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_free_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:clipToPadding="false"
android:paddingHorizontal="24dp" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_curation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:visibility="gone" />
<io.github.glailton.expandabletextview.ExpandableTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="48dp"
android:fontFamily="@font/pretendard_regular"
android:text="
- 회사명 : 주식회사 소다라이브\n\n
- 대표자 : 이재형\n\n
- 주소 : 경기도 성남시 분당구 황새울로335번길 10, 5층 563A호\n\n
- 사업자등록번호 : 870-81-03220\n\n
- 통신판매업신고 : 제2024-성남분당B-1012호\n\n
- 고객센터 : 02.2055.1477(이용시간 10:00~19:00)\n\n
- 대표 이메일 : sodalive.official@gmail.com"
android:textColor="@color/color_777777"
android:textSize="11sp"
app:animDuration="500"
app:collapsedLines="5"
app:ellipsizeTextColor="@color/color_777777"
app:expandType="layout"
app:isExpanded="false"
app:readLessText="간략히"
app:readMoreText="더보기"
app:textMode="line" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<LinearLayout
android:id="@+id/ll_upload_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="16.7dp"
android:layout_marginBottom="16.7dp"
android:background="@drawable/bg_round_corner_44_3bb9f1"
android:orientation="horizontal"
android:padding="13.3dp"
android:visibility="gone">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginEnd="5dp"
android:contentDescription="@null"
android:src="@drawable/ic_thumb_play" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/pretendard_bold"
android:text="콘텐츠 업로드"
android:textColor="@color/white"
android:textSize="13.3sp" />
</LinearLayout>
</RelativeLayout>

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="282dp"
android:layout_height="wrap_content"
android:background="@drawable/live_button_background"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingHorizontal="14dp"
android:paddingVertical="10dp">
<!-- 프로필 이미지 컨테이너 -->
<FrameLayout
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_marginEnd="16dp"
android:background="@drawable/circle_background">
<!-- 프로필 이미지 -->
<ImageView
android:id="@+id/iv_profile"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@drawable/circle_background"
android:contentDescription="@null"
android:scaleType="centerCrop" />
<!-- LIVE 배지 -->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:contentDescription="@null"
android:src="@drawable/img_live" />
</FrameLayout>
<!-- 텍스트 컨테이너 -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_nickname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:fontFamily="@font/pretendard_regular"
android:maxLines="2"
android:textColor="@android:color/white"
android:textSize="18sp"
tools:text="네대로 마자로" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:ellipsize="end"
android:fontFamily="@font/pretendard_regular"
android:maxLines="2"
android:textColor="@android:color/white"
android:textSize="16sp"
tools:text="네대로 마자로" />
</LinearLayout>
</LinearLayout>

View File

@@ -5,6 +5,7 @@
<color name="color_80d8ff">#80D8FF</color>
<color name="color_1313bc">#1313BC</color>
<color name="color_131313">#131313</color>
<color name="color_9970ff">#9970FF</color>
<color name="color_eeeeee">#EEEEEE</color>
<color name="color_777777">#777777</color>
@@ -130,4 +131,5 @@
<color name="color_cc777777">#CC777777</color>
<color name="color_ec3aa6">#EC3AA6</color>
<color name="color_7849bc">#7849BC</color>
<color name="color_607d8b">#607D8B</color>
</resources>