Initial commit - v1.1.9

This commit is contained in:
2026-02-22 12:03:04 +09:00
commit 27339dc7b7
180 changed files with 12908 additions and 0 deletions

View File

@@ -0,0 +1,110 @@
<?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="@drawable/bg_mesh_gradient"
android:clipChildren="false"
android:clipToPadding="false">
<!-- Header / Info Section -->
<LinearLayout
android:id="@+id/headerContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="40dp"
android:paddingHorizontal="32dp"
android:paddingVertical="16dp">
<TextView
android:id="@+id/tvCurrentTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="오후 2:59"
android:textSize="88sp"
android:fontFamily="sans-serif-thin"
android:textColor="@color/white"
android:letterSpacing="0.02"/>
<TextView
android:id="@+id/tvDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2월 14일 토요일"
android:textSize="26sp"
android:textColor="@color/white"
android:alpha="0.5"
android:layout_marginTop="16dp"/>
<TextView
android:id="@+id/tvShiftType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="[주간] 근무 알람"
android:textSize="16sp"
android:textColor="@color/white"
android:alpha="0.4"
android:layout_marginTop="8dp"/>
</LinearLayout>
<!-- Center Control Area -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_below="@id/headerContainer"
android:paddingBottom="80dp"
android:clipChildren="false"
android:clipToPadding="false">
<!-- Snooze Button (Glass style) -->
<TextView
android:id="@+id/btnSnooze"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="48dp"
android:paddingVertical="18dp"
android:text="다시 울림"
android:textSize="22sp"
android:textColor="@color/white"
android:alpha="0.9"
android:background="@drawable/bg_glass_pill_v4"
android:clickable="true"
android:focusable="true"/>
<!-- Stop Button Container with Pulse -->
<FrameLayout
android:layout_width="320dp"
android:layout_height="320dp"
android:layout_marginTop="20dp"
android:clipChildren="false"
android:clipToPadding="false">
<!-- Glowing Pulse View -->
<View
android:id="@+id/pulseCircle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@drawable/bg_pulse_gradient"/>
<!-- Dismiss Button -->
<TextView
android:id="@+id/btnDismiss"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:gravity="center"
android:text="해제"
android:textSize="34sp"
android:textColor="@color/white"
android:background="@drawable/bg_dismiss_circle_v4"
android:clickable="true"
android:focusable="true"/>
</FrameLayout>
</LinearLayout>
</RelativeLayout>

View File

@@ -0,0 +1,265 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_mesh_gradient"
android:padding="0dp">
<!-- Compact Header Section -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/headerRoot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="12dp"
android:paddingBottom="8dp"
android:paddingHorizontal="20dp"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/appTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textSize="24sp"
android:textStyle="bold"
android:textColor="@color/text_primary"
android:letterSpacing="-0.03"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<TextView
android:id="@+id/todayStatusText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="오늘의 근무"
android:textSize="13sp"
android:textColor="@color/text_secondary"
android:fontFamily="sans-serif-medium"
android:layout_marginStart="12dp"
app:layout_constraintStart_toEndOf="@id/appTitle"
app:layout_constraintTop_toTopOf="@id/appTitle"
app:layout_constraintBottom_toBottomOf="@id/appTitle"
app:layout_constraintEnd_toStartOf="@id/btnSettings"/>
<ImageButton
android:id="@+id/btnSettings"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/ic_settings"
android:background="?attr/selectableItemBackgroundBorderless"
app:tint="@color/text_primary"
android:padding="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/appTitle"
app:layout_constraintBottom_toBottomOf="@id/appTitle" />
</androidx.constraintlayout.widget.ConstraintLayout>
<!-- Maximized Calendar Card -->
<androidx.cardview.widget.CardView
android:id="@+id/calendarCard"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginHorizontal="12dp"
android:layout_marginBottom="8dp"
app:cardCornerRadius="28dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
app:layout_constraintTop_toBottomOf="@id/headerRoot"
app:layout_constraintBottom_toTopOf="@id/otherTeamsCard"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/calendarContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_glass_panel_v3">
<!-- Compact Month Controls -->
<LinearLayout
android:id="@+id/monthControlBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:paddingVertical="4dp"
android:paddingHorizontal="16dp"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/prevMonth"
android:layout_width="44dp"
android:layout_height="44dp"
android:text="&lt;"
android:textColor="@color/text_primary"
android:textSize="18sp"
android:background="?attr/selectableItemBackgroundBorderless"
style="@style/Widget.Material3.Button.TextButton"/>
<TextView
android:id="@+id/monthTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="2026.02"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:textColor="@color/text_primary"
android:letterSpacing="-0.02"/>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnToday"
android:layout_width="56dp"
android:layout_height="28dp"
android:text="오늘"
android:textSize="12sp"
android:textStyle="bold"
android:textColor="@color/primary"
android:background="@drawable/bg_button_one_ui"
android:padding="0dp"
android:minWidth="0dp"
android:minHeight="0dp"
style="@style/Widget.Material3.Button.TextButton"/>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/nextMonth"
android:layout_width="44dp"
android:layout_height="44dp"
android:text="&gt;"
android:textColor="@color/text_primary"
android:textSize="18sp"
android:background="?attr/selectableItemBackgroundBorderless"
style="@style/Widget.Material3.Button.TextButton"/>
</LinearLayout>
<!-- Compact Alarm Info Bar -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/alarmInfoBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:paddingHorizontal="12dp"
android:paddingVertical="4dp"
android:clickable="true"
android:focusable="true"
app:layout_constraintTop_toBottomOf="@id/monthControlBar">
<TextView
android:id="@+id/alarmTimeText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="내 알람: 07:00"
android:textSize="12sp"
android:textStyle="bold"
android:textColor="@color/text_secondary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/btnTideLocation"/>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnTideLocation"
android:layout_width="wrap_content"
android:layout_height="24dp"
android:text="군산"
android:textSize="10sp"
android:textColor="@color/primary"
android:background="@drawable/bg_button_one_ui"
android:visibility="gone"
android:paddingHorizontal="8dp"
android:minWidth="0dp"
android:minHeight="0dp"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toStartOf="@id/cbShowHolidays"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<CheckBox
android:id="@+id/cbShowHolidays"
android:layout_width="wrap_content"
android:layout_height="24dp"
android:text="공휴일"
android:checked="false"
android:textSize="11sp"
android:textColor="@color/text_primary"
android:buttonTint="@color/primary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<!-- Weekday Labels Header -->
<LinearLayout
android:id="@+id/weekdayLabels"
android:layout_width="match_parent"
android:layout_height="28dp"
android:orientation="horizontal"
android:layout_marginTop="8dp"
android:background="#08000000"
app:layout_constraintTop_toBottomOf="@id/alarmInfoBar">
<TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="일" android:gravity="center" android:textColor="@color/shift_red" android:textSize="11sp" android:textStyle="bold"/>
<TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="월" android:gravity="center" android:textColor="@color/text_secondary" android:textSize="11sp" android:textStyle="bold"/>
<TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="화" android:gravity="center" android:textColor="@color/text_secondary" android:textSize="11sp" android:textStyle="bold"/>
<TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="수" android:gravity="center" android:textColor="@color/text_secondary" android:textSize="11sp" android:textStyle="bold"/>
<TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="목" android:gravity="center" android:textColor="@color/text_secondary" android:textSize="11sp" android:textStyle="bold"/>
<TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="금" android:gravity="center" android:textColor="@color/text_secondary" android:textSize="11sp" android:textStyle="bold"/>
<TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:text="토" android:gravity="center" android:textColor="@color/primary" android:textSize="11sp" android:textStyle="bold"/>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/calendarGrid"
android:layout_width="match_parent"
android:layout_height="0dp"
android:overScrollMode="never"
app:layout_constraintTop_toBottomOf="@id/weekdayLabels"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<!-- Other Teams Compact Section -->
<androidx.cardview.widget.CardView
android:id="@+id/otherTeamsCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:layout_marginBottom="16dp"
app:cardCornerRadius="20dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
app:layout_constraintBottom_toBottomOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/bg_glass_panel_v3"
android:paddingHorizontal="16dp"
android:paddingVertical="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="다른 반 근무"
android:textSize="13sp"
android:textColor="@color/text_primary"
android:textStyle="bold"
android:layout_marginBottom="8dp"
android:letterSpacing="-0.01"/>
<LinearLayout
android:id="@+id/otherTeamsContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
android:background="@drawable/bg_mesh_gradient">
<!-- Header Section (One UI 8 Style) -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="32dp"
android:paddingBottom="16dp"
android:paddingStart="24dp"
android:paddingEnd="12dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_alignParentStart="true"
android:layout_centerVertical="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="사용 설명서"
android:textSize="32sp"
android:textStyle="bold"
android:textColor="@color/text_primary"
android:letterSpacing="-0.03"/>
<TextView
android:id="@+id/manualVersionText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="교대링(Shiftring)"
android:textSize="14sp"
android:textColor="@color/text_secondary"
android:layout_marginTop="2dp"/>
</LinearLayout>
<ImageButton
android:id="@+id/btnCloseManual"
android:layout_width="48dp"
android:layout_height="48dp"
android:src="@drawable/ic_delete"
android:background="?attr/selectableItemBackgroundBorderless"
app:tint="@color/text_primary"
android:padding="12dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"/>
</RelativeLayout>
<!-- Content Card -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_marginHorizontal="8dp"
android:layout_marginBottom="16dp"
app:cardCornerRadius="28dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_glass_panel_v3"
android:padding="20dp"
android:fillViewport="true">
<TextView
android:id="@+id/manualContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="15sp"
android:textColor="@color/text_primary"
android:lineSpacingExtra="8dp"/>
</ScrollView>
</androidx.cardview.widget.CardView>
</LinearLayout>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
android:background="@drawable/bg_mesh_gradient">
<!-- Header Section (One UI 8 Style) -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="32dp"
android:paddingBottom="16dp"
android:paddingStart="24dp"
android:paddingEnd="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="업데이트 정보"
android:textSize="32sp"
android:textStyle="bold"
android:textColor="@color/text_primary"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:letterSpacing="-0.03"/>
<ImageButton
android:id="@+id/btnCloseNotice"
android:layout_width="48dp"
android:layout_height="48dp"
android:src="@drawable/ic_delete"
android:background="?attr/selectableItemBackgroundBorderless"
app:tint="@color/text_primary"
android:padding="12dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"/>
</RelativeLayout>
<!-- Content RecyclerView -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/noticeRecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:paddingBottom="16dp"
android:clipToPadding="false"/>
</LinearLayout>

View File

@@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_mesh_gradient"
android:id="@+id/settings_root">
<LinearLayout
android:id="@+id/settingsHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingTop="32dp"
android:paddingBottom="16dp"
android:paddingStart="24dp"
android:paddingEnd="24dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:id="@+id/settingsTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="설정"
android:textColor="@color/text_primary"
android:textSize="32sp"
android:textStyle="bold"
android:letterSpacing="-0.03"/>
</LinearLayout>
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
app:tabIndicatorHeight="3dp"
app:tabIndicatorFullWidth="false"
app:tabIndicatorColor="@color/primary"
app:tabSelectedTextColor="@color/primary"
app:tabTextColor="@color/text_secondary"
app:tabRippleColor="@android:color/transparent"
app:tabMode="fixed"
android:background="@android:color/transparent"
app:layout_constraintTop_toBottomOf="@id/settingsHeader"/>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@id/tabLayout"
app:layout_constraintBottom_toTopOf="@id/bottomActionLayout"/>
<LinearLayout
android:id="@+id/bottomActionLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"
android:background="@android:color/transparent"
app:layout_constraintBottom_toBottomOf="parent">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnSave"
android:layout_width="match_parent"
android:layout_height="58dp"
android:text="닫기"
android:textSize="17sp"
android:textStyle="bold"
android:textColor="#FFFFFF"
app:cornerRadius="29dp"
android:backgroundTint="@color/primary"
android:elevation="6dp"
android:stateListAnimator="@null"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="300dp"
android:layout_height="wrap_content"
app:cardCornerRadius="28dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/bg_dialog_glass"
android:padding="24dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="사용자 알람 추가"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="@color/text_primary"
android:gravity="center"
android:layout_marginBottom="20dp"/>
<!-- Time Selection -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="알람 시간"
android:textColor="@color/text_secondary"
android:textSize="12sp"
android:layout_marginBottom="8dp"/>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnSelectTime"
android:layout_width="match_parent"
android:layout_height="56dp"
android:text="07:00"
android:textSize="24sp"
android:textStyle="bold"
android:textColor="@color/text_primary"
android:background="@drawable/bg_glass_button_light"
android:layout_marginBottom="16dp"/>
<!-- Shift Type Selection -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="근무 유형"
android:textColor="@color/text_secondary"
android:textSize="12sp"
android:layout_marginBottom="8dp"/>
<Spinner
android:id="@+id/spinnerShiftType"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@drawable/bg_glass_button_light"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:layout_marginBottom="24dp"/>
<!-- Buttons -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btnCancel"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="취소"
android:textColor="@color/text_secondary"/>
<Button
android:id="@+id/btnSave"
style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="저장"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>

View File

@@ -0,0 +1,229 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
android:background="@color/dialog_bg">
<!-- Header / Full Screen Style -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<TextView
android:id="@+id/btnCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="취소"
android:textColor="@color/text_primary"
android:textSize="16sp"
android:padding="8dp"
android:layout_alignParentStart="true"/>
<TextView
android:id="@+id/dialogTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="알람 추가"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="@color/black"
android:layout_centerInParent="true"/>
<TextView
android:id="@+id/btnSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="저장"
android:textColor="@color/primary"
android:textStyle="bold"
android:textSize="16sp"
android:padding="8dp"
android:layout_alignParentEnd="true"/>
</RelativeLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="24dp">
<!-- High-Impact Time Picker Area -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="240dp"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginBottom="24dp">
<!-- Native TimePicker but Styled via Code to match One UI as much as possible -->
<!-- If native is too limited, we'd use NumberPickers. For now, let's keep it but maximize size -->
<TimePicker
android:id="@+id/timePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:timePickerMode="spinner"
android:theme="@style/OneUITimePickerTheme"/>
</LinearLayout>
<!-- Shift Selection (Custom only) -->
<androidx.cardview.widget.CardView
android:id="@+id/cardShiftSelector"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@color/white"
android:layout_marginBottom="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="근무 타입"
android:textSize="14sp"
android:textColor="@color/text_secondary"
android:layout_marginBottom="12dp"
android:textStyle="bold"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<TextView android:id="@+id/btnShiftJu" android:layout_width="44dp" android:layout_height="44dp" android:text="주" android:gravity="center" android:textStyle="bold" android:layout_marginEnd="8dp" android:background="@drawable/bg_shift_stroke_v4"/>
<TextView android:id="@+id/btnShiftSeok" android:layout_width="44dp" android:layout_height="44dp" android:text="석" android:gravity="center" android:textStyle="bold" android:layout_marginEnd="8dp" android:background="@drawable/bg_shift_stroke_v4"/>
<TextView android:id="@+id/btnShiftYa" android:layout_width="44dp" android:layout_height="44dp" android:text="야" android:gravity="center" android:textStyle="bold" android:layout_marginEnd="8dp" android:background="@drawable/bg_shift_stroke_v4"/>
<TextView android:id="@+id/btnShiftYaMat" android:layout_width="44dp" android:layout_height="44dp" android:text="야맞" android:gravity="center" android:textStyle="bold" android:layout_marginEnd="8dp" android:background="@drawable/bg_shift_stroke_v4" android:textSize="12sp"/>
<TextView android:id="@+id/btnShiftEtc" android:layout_width="44dp" android:layout_height="44dp" android:text="기타" android:gravity="center" android:textStyle="bold" android:background="@drawable/bg_shift_stroke_v4" android:textSize="12sp"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Sound Selection -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@color/white"
android:layout_marginBottom="16dp">
<LinearLayout
android:id="@+id/btnSelectSound"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="20dp"
android:gravity="center_vertical"
android:background="?attr/selectableItemBackground">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_alarm"
app:tint="@color/primary"
android:layout_marginEnd="16dp"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="알람음"
android:textSize="16sp"
android:textColor="@color/text_primary"
android:textStyle="bold"/>
<TextView
android:id="@+id/tvSoundName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="기본 알람음"
android:textSize="13sp"
android:textColor="@color/text_secondary"
android:layout_marginTop="2dp"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Snooze (Frequency/Repeat) Section -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@color/white"
android:layout_marginBottom="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="다시 울림 간격"
android:textSize="14sp"
android:textColor="@color/text_secondary"
android:textStyle="bold"
android:layout_marginBottom="12dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginBottom="24dp">
<TextView android:id="@+id/snooze5" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="5분" android:gravity="center" android:layout_marginEnd="4dp" android:background="@drawable/bg_pill_rect_unselected"/>
<TextView android:id="@+id/snooze10" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="10분" android:gravity="center" android:layout_marginEnd="4dp" android:background="@drawable/bg_pill_rect_unselected"/>
<TextView android:id="@+id/snooze15" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="15분" android:gravity="center" android:layout_marginEnd="4dp" android:background="@drawable/bg_pill_rect_unselected"/>
<TextView android:id="@+id/snooze30" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="30분" android:gravity="center" android:background="@drawable/bg_pill_rect_unselected"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="반복 횟수"
android:textSize="14sp"
android:textColor="@color/text_secondary"
android:textStyle="bold"
android:layout_marginBottom="12dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<TextView android:id="@+id/repeat3" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="3회" android:gravity="center" android:layout_marginEnd="4dp" android:background="@drawable/bg_pill_rect_unselected"/>
<TextView android:id="@+id/repeat5" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="5회" android:gravity="center" android:layout_marginEnd="4dp" android:background="@drawable/bg_pill_rect_unselected"/>
<TextView android:id="@+id/repeatForever" android:layout_width="0dp" android:layout_height="44dp" android:layout_weight="1" android:text="계속" android:gravity="center" android:background="@drawable/bg_pill_rect_unselected"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Delete Button (Only for Custom) -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnDelete"
android:layout_width="match_parent"
android:layout_height="56dp"
android:text="알람 삭제"
android:textColor="@color/warning_red"
android:background="@drawable/bg_glass_panel_v3"
android:layout_marginBottom="40dp"
android:visibility="gone"/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>

View File

@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="340dp"
android:layout_height="wrap_content"
app:cardCornerRadius="32dp"
app:cardElevation="8dp"
app:cardBackgroundColor="@android:color/transparent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/bg_dialog_solid_v4"
android:padding="20dp">
<!-- Header: Date and Shift -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:paddingTop="8dp"
android:paddingBottom="20dp">
<TextView
android:id="@+id/dialogSubtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="내일의 근무"
android:textSize="14sp"
android:textColor="@color/text_secondary"
android:layout_marginBottom="4dp"/>
<TextView
android:id="@+id/dialogTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2월 12일 (주간)"
android:textSize="22sp"
android:textStyle="bold"
android:textColor="@color/text_primary"
android:letterSpacing="-0.02"/>
</LinearLayout>
<!-- 5-Column Grid Refactored -->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Row 1 -->
<TextView android:id="@+id/btnJu" style="@style/ShiftCircleButton" android:text="주" android:textColor="@color/shift_ju"/>
<TextView android:id="@+id/btnSeok" style="@style/ShiftCircleButton" android:text="석" android:textColor="@color/shift_seok"/>
<TextView android:id="@+id/btnYa" style="@style/ShiftCircleButton" android:text="야" android:textColor="@color/shift_ya"/>
<TextView android:id="@+id/btnJuMat" style="@style/ShiftCircleButton" android:text="주맞" android:textSize="13sp" android:textColor="@color/shift_jumat"/>
<TextView android:id="@+id/btnYaMat" style="@style/ShiftCircleButton" android:text="야맞" android:textSize="13sp" android:textColor="@color/shift_yamat"/>
<!-- Row 2 -->
<TextView android:id="@+id/btnOff" style="@style/ShiftCircleButton" android:text="휴" android:textColor="@color/shift_off"/>
<TextView android:id="@+id/btnWolcha" style="@style/ShiftCircleButton" android:text="월차" android:textSize="13sp" android:textColor="@color/secondary"/>
<TextView android:id="@+id/btnYeoncha" style="@style/ShiftCircleButton" android:text="연차" android:textSize="13sp" android:textColor="@color/secondary"/>
<TextView android:id="@+id/btnBanwol" style="@style/ShiftCircleButton" android:text="반월" android:textSize="13sp" android:textColor="@color/shift_red"/>
<TextView android:id="@+id/btnBannyeon" style="@style/ShiftCircleButton" android:text="반년" android:textSize="13sp" android:textColor="@color/shift_red"/>
<!-- Row 3 -->
<TextView android:id="@+id/btnEdu" style="@style/ShiftCircleButton" android:text="교육" android:textSize="13sp" android:textColor="@color/primary"/>
<TextView android:id="@+id/btnReset" style="@style/ShiftCircleButton" android:text="초기" android:textSize="13sp" android:textColor="@color/text_secondary"/>
<TextView android:id="@+id/btnManual" style="@style/ShiftCircleButton" android:text="직접" android:textSize="14sp" android:textColor="@color/shift_gray"/>
<androidx.constraintlayout.helper.widget.Flow
android:id="@+id/gridFlow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:constraint_referenced_ids="btnJu,btnSeok,btnYa,btnJuMat,btnYaMat, btnOff,btnWolcha,btnYeoncha,btnBanwol,btnBannyeon, btnEdu,btnReset,btnManual"
app:flow_wrapMode="aligned"
app:flow_maxElementsWrap="5"
app:flow_horizontalStyle="packed"
app:flow_horizontalGap="8dp"
app:flow_verticalGap="12dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<View
android:id="@+id/memoDivider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/grid_divider"
android:layout_marginTop="20dp"/>
<!-- Memo Section -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="16dp"
android:background="@drawable/bg_glass_button_light"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginBottom="12dp">
<TextView
android:id="@+id/memoTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="하루 메모"
android:textSize="15sp"
android:textStyle="bold"
android:textColor="@color/text_primary"/>
<ImageView
android:id="@+id/btnClearMemo"
android:layout_width="28dp"
android:layout_height="28dp"
android:src="@drawable/ic_delete"
app:tint="@color/shift_red"
android:padding="6dp"
android:background="?attr/selectableItemBackgroundBorderless"/>
</LinearLayout>
<EditText
android:id="@+id/etMemo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="여기에 메모를 입력하세요"
android:inputType="textMultiLine|textNoSuggestions"
android:minLines="2"
android:maxLines="4"
android:gravity="top|start"
android:textSize="15sp"
android:textColor="@color/text_primary"
android:background="@android:color/transparent"
android:padding="0dp"/>
</LinearLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnClose"
android:layout_width="match_parent"
android:layout_height="56dp"
android:text="저장 및 닫기"
android:layout_marginTop="24dp"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="#FFFFFF"
app:cornerRadius="28dp"
android:backgroundTint="@color/primary"
android:elevation="2dp"/>
</LinearLayout>
</androidx.cardview.widget.CardView>

View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView 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="wrap_content"
app:cardCornerRadius="32dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="32dp"
android:background="@drawable/bg_opaque_glass_dialog">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="날짜 이동"
android:textSize="24sp"
android:textStyle="bold"
android:textColor="@color/black"
android:layout_marginBottom="32dp"
android:layout_gravity="center_horizontal"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginBottom="24dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:gravity="center">
<NumberPicker
android:id="@+id/yearPicker"
android:layout_width="wrap_content"
android:layout_height="180dp"
android:theme="@style/AppNumberPickerStyle"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="년"
android:textSize="18sp"
android:textColor="@color/text_secondary"
android:layout_marginStart="8dp"/>
</LinearLayout>
<View
android:layout_width="1.5dp"
android:layout_height="80dp"
android:background="#1A000000"
android:layout_marginHorizontal="20dp"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:gravity="center">
<NumberPicker
android:id="@+id/monthPicker"
android:layout_width="wrap_content"
android:layout_height="180dp"
android:theme="@style/AppNumberPickerStyle"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="월"
android:textSize="18sp"
android:textColor="@color/text_secondary"
android:layout_marginStart="8dp"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>

View File

@@ -0,0 +1,365 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView 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:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@color/surface"
android:padding="16dp">
<!-- Header Section -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginBottom="20dp">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_plus_circle"
app:tint="@color/section_title"
android:layout_marginEnd="12dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="부가 기능 및 테마"
android:textSize="17sp"
android:textStyle="bold"
android:textColor="@color/section_title"/>
</LinearLayout>
<!-- Tide Section (Moved Up) -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
android:layout_marginBottom="24dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:background="@drawable/bg_glass_panel_v3"
android:padding="20dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="물때 정보 표시"
android:textColor="@color/text_primary"
android:textSize="14sp"
android:textStyle="bold"
android:layout_marginBottom="4dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="군산, 변산, 여수, 태안 물때 표시"
android:textSize="12sp"
android:textColor="@color/text_secondary"/>
</LinearLayout>
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/switchTide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Backup/Restore Section (Moved Up) -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
android:layout_marginBottom="24dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/bg_glass_panel_v3"
android:padding="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="데이터 백업 및 복구"
android:textColor="@color/text_secondary"
android:textSize="13sp"
android:textStyle="bold"
android:layout_marginBottom="12dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnBackup"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
android:text="백업하기"
android:textColor="@color/text_primary"
android:textStyle="bold"
android:background="@drawable/bg_glass_button_light"
android:layout_marginEnd="4dp"/>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnRestore"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
android:text="복구하기"
android:textColor="@color/text_primary"
android:textStyle="bold"
android:background="@drawable/bg_glass_button_light"
android:layout_marginStart="4dp"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="근무 변경 내역, 메모, 환경 설정이 저장됩니다."
android:textSize="11sp"
android:textColor="@color/text_tertiary"
android:layout_marginTop="8dp"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Sharing Section (Moved Up) -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
android:layout_marginBottom="24dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/bg_glass_panel_v3"
android:paddingVertical="8dp">
<LinearLayout
android:id="@+id/btnShareApp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingHorizontal="20dp"
android:paddingVertical="16dp"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/ic_plus_circle"
app:tint="@color/primary"
android:layout_marginEnd="16dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="교대링 앱 친구에게 공유하기"
android:textColor="@color/text_primary"
android:textSize="16sp"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Theme Section -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
android:layout_marginBottom="24dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/bg_glass_panel_v3"
android:padding="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="화면 테마 설정"
android:textColor="@color/text_secondary"
android:textSize="13sp"
android:textStyle="bold"
android:layout_marginBottom="12dp"/>
<Spinner
android:id="@+id/themeSpinner"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@drawable/bg_glass_button_light"
android:paddingStart="12dp"
android:paddingEnd="12dp"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Info & Support Section -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="정보 및 지원"
android:textColor="@color/text_secondary"
android:textSize="13sp"
android:textStyle="bold"
android:layout_marginBottom="8dp"
android:layout_marginStart="12dp"/>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
android:layout_marginBottom="24dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/bg_glass_panel_v3"
android:paddingVertical="8dp">
<!-- Manual -->
<LinearLayout
android:id="@+id/btnManual"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingHorizontal="20dp"
android:paddingVertical="16dp"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/ic_memo"
app:tint="@color/text_primary"
android:layout_marginEnd="16dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="사용 설명서"
android:textColor="@color/text_primary"
android:textSize="16sp"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/glass_panel_stroke"
android:layout_marginHorizontal="20dp"/>
<!-- Notice -->
<LinearLayout
android:id="@+id/btnNotice"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingHorizontal="20dp"
android:paddingVertical="16dp"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/ic_bell"
app:tint="@color/text_primary"
android:layout_marginEnd="16dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="업데이트 정보"
android:textColor="@color/text_primary"
android:textSize="16sp"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Reset Section (Very Bottom) -->
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
android:layout_marginBottom="24dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/bg_glass_panel_v3"
android:padding="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="데이터 초기화"
android:textColor="@color/shift_red"
android:textSize="13sp"
android:textStyle="bold"
android:layout_marginBottom="12dp"/>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnResetOverrides"
android:layout_width="match_parent"
android:layout_height="48dp"
android:text="개별 근무/알람 설정 전체 삭제"
android:textColor="@color/shift_red"
android:background="@drawable/bg_glass_button_light"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="달력에서 개별적으로 바꾼 근무와 알람 시간이 모두 초기 설정으로 복구됩니다."
android:textSize="11sp"
android:textColor="@color/text_tertiary"
android:layout_marginTop="8dp"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView 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:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@color/surface"
android:padding="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingHorizontal="8dp"
android:layout_marginBottom="8dp">
<TextView
android:id="@+id/tvMasterStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="전체 알람 켜짐"
android:textSize="13sp"
android:textStyle="bold"
android:textColor="@color/primary"
android:background="@drawable/bg_glass_pill_v4"
android:backgroundTint="#F2F2F7"
android:paddingHorizontal="12dp"
android:paddingVertical="6dp"
android:clickable="true"
android:focusable="true"/>
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
<!-- Unified Alarm List Container (Background removed as items are now individual cards) -->
<LinearLayout
android:id="@+id/alarmListContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="16dp"/>
<!-- Add Custom Alarm Button (Premium Solid Style) -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnAddCustomAlarm"
android:layout_width="match_parent"
android:layout_height="56dp"
android:text="+ 알람 추가"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold"
android:background="@drawable/bg_pill_button_primary"
android:foreground="?attr/selectableItemBackground"
android:layout_marginBottom="24dp"
android:elevation="4dp"/>
<!-- Test Action -->
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnTestAlarm"
android:layout_width="match_parent"
android:layout_height="56dp"
android:text="🔔 알람 사운드 테스트"
android:textColor="@color/text_secondary"
android:textSize="14sp"
android:background="@drawable/bg_glass_panel_v3"
android:foreground="?attr/selectableItemBackground"
android:layout_marginBottom="40dp"/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -0,0 +1,342 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView 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="@android:color/transparent"
android:overScrollMode="never">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
<!-- Company & Team Section -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="소속 및 반 설정"
android:textColor="@color/section_title"
android:textSize="13sp"
android:textStyle="bold"
android:layout_marginBottom="8dp"
android:layout_marginStart="12dp"/>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
android:layout_marginBottom="24dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/bg_glass_panel_v3"
android:padding="20dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginBottom="16dp">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="근무 회사"
android:textColor="@color/text_primary"
android:textSize="16sp"/>
<Spinner
android:id="@+id/factorySpinner"
android:layout_width="140dp"
android:layout_height="40dp"
android:entries="@array/factory_array"
android:background="@drawable/bg_glass_button_light"
android:paddingStart="12dp"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/glass_panel_stroke"
android:layout_marginBottom="16dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="나의 근무 반"
android:textColor="@color/text_primary"
android:textSize="16sp"/>
<Spinner
android:id="@+id/teamSpinner"
android:layout_width="140dp"
android:layout_height="40dp"
android:background="@drawable/bg_glass_button_light"
android:paddingStart="12dp"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- App Stability (Permissions) -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="앱 안정성 설정 (필수)"
android:textColor="@color/shift_red"
android:textSize="13sp"
android:textStyle="bold"
android:layout_marginBottom="8dp"
android:layout_marginStart="12dp"/>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
android:layout_marginBottom="24dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/bg_glass_panel_v3"
android:paddingVertical="8dp">
<!-- Battery Optimization -->
<LinearLayout
android:id="@+id/btnBatteryOptimize"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="20dp"
android:paddingVertical="12dp"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="배터리 최적화 제외 (필수)"
android:textColor="@color/text_primary"
android:textSize="16sp"/>
<TextView
android:id="@+id/tvBatteryStatus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="삼성/LG 폰 알람 누락 방지"
android:textColor="@color/text_secondary"
android:textSize="12sp"
android:layout_marginTop="2dp"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/glass_panel_stroke"
android:layout_marginHorizontal="20dp"/>
<!-- Exact Alarm -->
<LinearLayout
android:id="@+id/btnExactAlarm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="20dp"
android:paddingVertical="12dp"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="정확한 알람 허용"
android:textColor="@color/text_primary"
android:textSize="16sp"/>
<TextView
android:id="@+id/tvExactStatus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="정해진 시간에 정확히 알람 울림"
android:textColor="@color/text_secondary"
android:textSize="12sp"
android:layout_marginTop="2dp"/>
</LinearLayout>
<View
android:id="@+id/dividerExact"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/glass_panel_stroke"
android:layout_marginHorizontal="20dp"/>
<!-- Overlay Permission -->
<LinearLayout
android:id="@+id/btnOverlayPermission"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="20dp"
android:paddingVertical="12dp"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="다른 앱 위에 표시"
android:textColor="@color/text_primary"
android:textSize="16sp"/>
<TextView
android:id="@+id/tvOverlayStatus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="잠금 화면 위로 알람창 표시"
android:textColor="@color/text_secondary"
android:textSize="12sp"
android:layout_marginTop="2dp"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/glass_panel_stroke"
android:layout_marginHorizontal="20dp"/>
<!-- Full Screen Intent (Android 14+) -->
<LinearLayout
android:id="@+id/btnFullScreenIntent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingHorizontal="20dp"
android:paddingVertical="12dp"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="전체화면 알림 허용"
android:textColor="@color/text_primary"
android:textSize="16sp"/>
<TextView
android:id="@+id/tvFullScreenStatus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="안드로이드 14 이상 잠금화면 필수 권한"
android:textColor="@color/text_secondary"
android:textSize="12sp"
android:layout_marginTop="2dp"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="@color/glass_panel_stroke"
android:layout_marginHorizontal="20dp"/>
<!-- System Details Launcher -->
<LinearLayout
android:id="@+id/btnPermissionSettings"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingHorizontal="20dp"
android:paddingVertical="12dp"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="시스템 전체 권한 설정"
android:textColor="@color/text_primary"
android:textSize="16sp"/>
<ImageView
android:layout_width="16dp"
android:layout_height="16dp"
android:src="@drawable/ic_settings"
app:tint="@color/text_tertiary"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- Info & Support -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="앱 정보"
android:textColor="@color/text_secondary"
android:textSize="13sp"
android:layout_marginBottom="8dp"
android:layout_marginStart="12dp"/>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent"
android:layout_marginBottom="24dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/bg_glass_panel_v3"
android:paddingVertical="8dp">
<LinearLayout
android:id="@+id/btnCheckUpdate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingHorizontal="20dp"
android:paddingVertical="16dp"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/ic_settings"
app:tint="@color/primary"
android:layout_marginEnd="16dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="최신 버전 확인"
android:textColor="@color/primary"
android:textSize="16sp"
android:textStyle="bold"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/versionInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Ver. 1.0.0"
android:gravity="center"
android:textColor="@color/text_tertiary"
android:textSize="12sp"
android:layout_marginBottom="40dp"/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
android:padding="24dp"
android:gravity="center">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/ic_settings"
app:tint="@color/text_tertiary"
android:layout_marginBottom="16dp"
android:alpha="0.5"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="실험실 기능 준비 중"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="@color/text_secondary"
android:layout_marginBottom="8dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="더욱 편리한 기능을 개발하고 있습니다.\n다음 업데이트를 기대해 주세요!"
android:textSize="14sp"
android:textColor="@color/text_tertiary"
android:gravity="center"
android:lineSpacingExtra="4dp"/>
</LinearLayout>

View File

@@ -0,0 +1,139 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView 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="wrap_content"
android:layout_marginHorizontal="4dp"
android:layout_marginVertical="6dp"
app:cardCornerRadius="24dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@android:color/transparent">
<LinearLayout
android:id="@+id/rowContents"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:background="@drawable/bg_item_ripple_oneui"
android:clickable="true"
android:focusable="true"
android:paddingVertical="4dp"
android:paddingHorizontal="4dp">
<!-- Time & Info Area -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"
android:gravity="center_vertical"
android:paddingVertical="12dp"
android:paddingHorizontal="12dp"
android:background="@android:color/transparent">
<!-- Shift Indicator Circle (Pill style) -->
<TextView
android:id="@+id/shiftIndicator"
android:layout_width="48dp"
android:layout_height="48dp"
android:gravity="center"
android:text="주"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="@color/black"
android:background="@drawable/bg_shift_stroke_v4"
android:layout_marginEnd="16dp"/>
<!-- Vertical Container for Text Info -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center_vertical"
android:layout_marginStart="16dp">
<!-- Time Row -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="bottom">
<TextView
android:id="@+id/tvTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="07:00"
android:textSize="28sp"
android:textStyle="bold"
android:textColor="@color/black"
android:letterSpacing="-0.03"
android:includeFontPadding="false"/>
<TextView
android:id="@+id/tvAmPm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="오전"
android:textSize="12sp"
android:textColor="@color/text_secondary"
android:layout_marginStart="4dp"
android:layout_marginBottom="6dp"/>
</LinearLayout>
<!-- Interval & Count Info -->
<TextView
android:id="@+id/tvSummary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5분, 3회"
android:textSize="13sp"
android:textColor="@color/text_secondary"
android:layout_marginTop="2dp"/>
<!-- Sound Name Info -->
<TextView
android:id="@+id/tvSoundName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="기본음"
android:textSize="13sp"
android:textColor="@color/primary"
android:layout_marginTop="2dp"
android:singleLine="true"
android:ellipsize="end"/>
</LinearLayout>
</LinearLayout>
<!-- Vertical Divider -->
<View
android:layout_width="1dp"
android:layout_height="40dp"
android:background="@color/glass_panel_stroke"
android:alpha="0.2"/>
<!-- Separate Toggle Area -->
<LinearLayout
android:id="@+id/layoutAlarmSwitch"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:paddingHorizontal="16dp"
android:clickable="true"
android:focusable="true">
<com.google.android.material.materialswitch.MaterialSwitch
android:id="@+id/alarmSwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:thumbTint="@color/white"
app:trackTint="@color/sl_switch_track"
app:thumbIcon="@null"
app:thumbIconSize="24dp"
android:clickable="false"
android:focusable="false"/>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>

View File

@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/dayRoot"
android:layout_width="match_parent"
android:layout_height="92dp"
android:background="@drawable/bg_grid_cell_v4">
<!-- Day Number (top-left) -->
<TextView
android:id="@+id/dayNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:text="12"
android:textColor="@color/text_primary"
android:textSize="14sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!-- Tide Text (top-right) -->
<TextView
android:id="@+id/tvTide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:layout_marginTop="4dp"
android:text="08:20"
android:textColor="@color/text_tertiary"
android:textSize="9sp"
android:visibility="visible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!-- Shift Abbreviation Circular Indicator (Center) -->
<TextView
android:id="@+id/shiftChar"
android:layout_width="40dp"
android:layout_height="40dp"
android:gravity="center"
android:text="주"
android:textSize="15sp"
android:textStyle="bold"
android:textColor="@color/text_primary"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintVertical_bias="0.45"/>
<!-- Memo Content Text (Below Shift) - Replacing icon logic for visibility -->
<TextView
android:id="@+id/memoContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:text="메모내용"
android:textSize="10sp"
android:textColor="@color/secondary"
android:maxLines="1"
android:ellipsize="end"
android:visibility="gone"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:paddingHorizontal="2dp"
app:layout_constraintTop_toBottomOf="@id/shiftChar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/memoIndicator"/>
<!-- Holiday Name Small (Bottom) -->
<TextView
android:id="@+id/holidayNameSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="설날"
android:textSize="9sp"
android:textColor="@color/shift_red"
android:layout_marginBottom="2dp"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/memoIndicator"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<!-- Memo Indicator (bottom-right) -->
<ImageView
android:id="@+id/memoIndicator"
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_marginEnd="4dp"
android:layout_marginBottom="4dp"
android:src="@drawable/ic_memo"
app:tint="@color/secondary"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView 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="wrap_content"
android:layout_marginBottom="16dp"
app:cardCornerRadius="12dp"
app:cardElevation="4dp"
app:cardBackgroundColor="@color/background_mesh_center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:id="@+id/noticeTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="공지사항 제목"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="@color/text_primary"
android:layout_marginBottom="4dp"/>
<TextView
android:id="@+id/noticeDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2026-02-07"
android:textSize="12sp"
android:textColor="@color/text_tertiary"
android:layout_marginBottom="12dp"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/glass_panel_stroke"
android:layout_marginBottom="12dp"/>
<TextView
android:id="@+id/noticeContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="공지사항 내용"
android:textSize="14sp"
android:lineSpacingExtra="4dp"
android:textColor="@color/text_secondary"/>
</LinearLayout>
</androidx.cardview.widget.CardView>