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

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>