v1.0.0 - ShiftRing 정식 첫 릴리즈\

This commit is contained in:
sanjeok77
2026-08-14 09:15:15 +09:00
commit 34c19ef6b0
217 changed files with 15517 additions and 0 deletions
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@color/primary" />
<item android:color="#20000000" /> <!-- Semi-transparent black instead of opaque gray -->
</selector>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:type="radial"
android:centerX="30%"
android:centerY="20%"
android:gradientRadius="800dp"
android:startColor="#6c4bb5"
android:centerColor="#120b2d"
android:endColor="#000000" />
</shape>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:type="radial"
android:centerX="30%"
android:centerY="20%"
android:gradientRadius="800dp"
android:startColor="#424242"
android:centerColor="#181818"
android:endColor="#000000" />
</shape>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:type="radial"
android:centerX="30%"
android:centerY="20%"
android:gradientRadius="800dp"
android:startColor="#B87C00"
android:centerColor="#3A2200"
android:endColor="#000000" />
</shape>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:type="radial"
android:centerX="30%"
android:centerY="20%"
android:gradientRadius="800dp"
android:startColor="#E65100"
android:centerColor="#3E1200"
android:endColor="#000000" />
</shape>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:type="radial"
android:centerX="30%"
android:centerY="20%"
android:gradientRadius="800dp"
android:startColor="#00796B"
android:centerColor="#002722"
android:endColor="#000000" />
</shape>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:type="radial"
android:centerX="30%"
android:centerY="20%"
android:gradientRadius="800dp"
android:startColor="#1A237E"
android:centerColor="#050B20"
android:endColor="#000000" />
</shape>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:type="radial"
android:centerX="30%"
android:centerY="20%"
android:gradientRadius="800dp"
android:startColor="#4A148C"
android:centerColor="#16032B"
android:endColor="#000000" />
</shape>
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#20000000">
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<stroke
android:width="0.8dp"
android:color="@color/btn_today_text" />
<corners android:radius="6dp" />
</shape>
</item>
</ripple>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#20007AFF">
<item>
<shape android:shape="rectangle">
<solid android:color="#0D007AFF" />
<stroke
android:width="1dp"
android:color="#1A007AFF" />
<corners android:radius="32dp" />
</shape>
</item>
</ripple>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<corners android:radius="24dp"/>
<stroke android:width="0dp" android:color="#00000000"/>
</shape>
+9
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="#20FFD60A" />
<corners android:radius="12dp" />
<stroke
android:width="0.5dp"
android:color="#40FFD60A" />
</shape>
+9
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="#20FF3B30" />
<corners android:radius="12dp" />
<stroke
android:width="0.5dp"
android:color="#40FF3B30" />
</shape>
+9
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="#200097A7" />
<corners android:radius="12dp" />
<stroke
android:width="0.5dp"
android:color="#400097A7" />
</shape>
+9
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="#15000000" />
<corners android:radius="12dp" />
<stroke
android:width="0.5dp"
android:color="#30000000" />
</shape>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/white" />
<size
android:width="44dp"
android:height="44dp" />
</shape>
@@ -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="#007AFF"/>
</shape>
@@ -0,0 +1,4 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#007AFF"/>
</shape>
@@ -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="#FF3B30"/>
</shape>
@@ -0,0 +1,4 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#FF3B30"/>
</shape>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 배경색: 다크모드에서도 잘 보이도록 surface 색상 사용 -->
<solid android:color="@color/surface_variant" />
<corners android:radius="16dp" />
<stroke
android:width="1dp"
android:color="@color/outline" />
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/glass_panel_bg"/>
<corners android:radius="8dp"/>
<stroke android:width="1dp" android:color="@color/glass_panel_stroke"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#E7F1FF"/>
<corners android:radius="8dp"/>
<stroke android:width="2dp" android:color="#0D6EFD"/>
</shape>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/glass_panel_bg"/>
<corners android:radius="12dp"/>
<stroke android:width="1dp" android:color="@color/glass_panel_stroke"/>
<gradient android:startColor="#10FFFFFF" android:endColor="#05FFFFFF" android:angle="45" />
</shape>
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- Today's date highlight: Primary color tint with stronger glass effect -->
<gradient
android:startColor="#400D6EFD"
android:endColor="#200D6EFD"
android:angle="135"/>
<corners android:radius="10dp"/>
<stroke
android:width="2dp"
android:color="#800D6EFD"/>
</shape>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Dialog background with more rounded corners for One UI 8 -->
<solid android:color="@color/dialog_bg"/>
<corners android:radius="28dp"/>
<stroke android:width="1dp" android:color="@color/glass_panel_stroke"/>
</shape>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="135"
android:startColor="#800381FE"
android:endColor="#805856D6"
android:type="linear"/>
<corners android:topLeftRadius="28dp" android:topRightRadius="28dp"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/dialog_bg"/>
<corners android:radius="32dp"/>
<stroke android:width="1dp" android:color="@color/grid_divider"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#0c091c" />
<stroke android:width="6dp" android:color="#998C6EFF" />
</shape>
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 눌렸을 때 -->
<item android:state_pressed="true">
<shape>
<solid android:color="#30FFFFFF"/>
<corners android:radius="28dp"/>
<stroke android:width="1dp" android:color="#50FFFFFF"/>
</shape>
</item>
<!-- 기본 -->
<item>
<shape>
<solid android:color="#00FFFFFF"/>
<corners android:radius="28dp"/>
<stroke android:width="0.5dp" android:color="#20FFFFFF"/>
</shape>
</item>
</selector>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#40FFFFFF"/>
<corners android:radius="28dp"/>
<stroke android:width="1dp" android:color="#30FFFFFF"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#605C6BC0"/>
<corners android:radius="28dp"/>
<stroke android:width="1dp" android:color="#40FFFFFF"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/button_glass_bg"/>
<corners android:radius="28dp"/>
<stroke android:width="1dp" android:color="@color/glass_panel_stroke"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#E6FFFFFF"/>
<corners android:radius="20dp"/>
<stroke android:width="1dp" android:color="#20000000"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#30FFFFFF"/>
<corners android:radius="24dp"/>
<stroke android:width="1dp" android:color="#25FFFFFF"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#33FFFFFF"/>
<stroke android:width="1dp" android:color="#4DFFFFFF"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/glass_panel_bg"/>
<corners android:radius="16dp"/>
<stroke android:width="1dp" android:color="@color/glass_panel_stroke"/>
</shape>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/glass_panel_bg"/>
<corners android:radius="32dp"/>
<stroke android:width="0.8dp" android:color="@color/glass_panel_stroke"/>
</shape>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- Glass Element: 20% Translucent White -->
<solid android:color="#33FFFFFF" />
<!-- Full Pill Shape -->
<corners android:radius="100dp" />
<!-- Subtle Border: 30% Translucent White -->
<stroke
android:width="1dp"
android:color="#4DFFFFFF" />
</shape>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="44dp" />
<solid android:color="#26FFFFFF" />
<stroke android:width="1.8dp" android:color="#4DFFFFFF" />
</shape>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#7C4DFF"
android:endColor="#5C6BC0"
android:angle="135"/>
<corners android:radius="16dp"/>
<stroke android:width="1dp" android:color="#40FFFFFF"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#20000000"/>
<corners android:radius="12dp"/>
<stroke android:width="1dp" android:color="#15000000"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#40FFFFFF"/>
<corners android:radius="40dp"/>
<stroke android:width="1.5dp" android:color="#501976D2"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#40FFFFFF"/>
<corners android:radius="40dp"/>
<stroke android:width="1.5dp" android:color="#50E53935"/>
</shape>
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="#B0FFFFFF"/>
<size android:width="64dp" android:height="64dp"/>
<stroke android:width="2dp" android:color="#801976D2"/>
</shape>
</item>
<item android:left="16dp" android:top="16dp" android:right="16dp" android:bottom="16dp">
<shape android:shape="oval">
<gradient
android:startColor="#1976D2"
android:endColor="#42A5F5"
android:angle="135"/>
<size android:width="32dp" android:height="32dp"/>
</shape>
</item>
</layer-list>
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="#B0FFFFFF"/>
<size android:width="64dp" android:height="64dp"/>
<stroke android:width="2dp" android:color="#80E53935"/>
</shape>
</item>
<item android:left="16dp" android:top="16dp" android:right="16dp" android:bottom="16dp">
<shape android:shape="oval">
<gradient
android:startColor="#E53935"
android:endColor="#EF5350"
android:angle="135"/>
<size android:width="32dp" android:height="32dp"/>
</shape>
</item>
</layer-list>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#C5E8F8"/>
<corners android:radius="12dp"/>
<stroke android:width="1dp" android:color="#60A5C8D8"/>
</shape>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/transparent" />
<stroke
android:width="0.5dp"
android:color="@color/grid_divider" />
</shape>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/bg_grid_cell_today"/>
<stroke android:width="1dp" android:color="@color/primary" />
</shape>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/bg_grid_cell_default" />
<stroke android:width="0.5dp" android:color="@color/grid_divider" />
</shape>
</item>
</layer-list>
+5
View File
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/group_header_bg"/>
<corners android:radius="16dp"/>
</shape>
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#1A000000"> <!-- Subtle dark gray for light theme ripple -->
<item android:id="@android:id/mask">
<shape>
<solid android:color="@color/white" />
<corners android:radius="28dp" />
</shape>
</item>
<item>
<selector>
<item android:state_pressed="true">
<shape>
<solid android:color="#0D000000" /> <!-- 5% gray overlay -->
<corners android:radius="28dp" />
</shape>
</item>
<item>
<shape>
<solid android:color="@color/glass_panel_bg" />
<corners android:radius="28dp" />
<stroke android:width="0.8dp" android:color="@color/glass_panel_stroke" />
</shape>
</item>
</selector>
</item>
</ripple>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="@color/glass_panel_bg"/>
<stroke android:width="1dp" android:color="@color/glass_panel_stroke"/>
<corners android:radius="28dp"/>
</shape>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="@color/background_mesh_start"
android:centerColor="@color/background_mesh_center"
android:endColor="@color/background_mesh_end"
android:type="linear"
android:angle="135"/>
<corners android:radius="0dp"/>
</shape>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="12dp" />
<solid android:color="#10000000" />
</shape>
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#33FFFFFF">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/primary"/>
<corners android:radius="24dp"/>
</shape>
</item>
</ripple>
+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Progress Bar Track (Unfilled Portion) -->
<item android:id="@android:id/background">
<shape android:shape="rectangle">
<corners android:radius="6dp"/>
<solid android:color="@color/divider_subtle"/>
</shape>
</item>
<!-- Progress Bar Fill (Active Portion) -->
<item android:id="@android:id/progress">
<scale android:scaleWidth="100%">
<shape android:shape="rectangle">
<corners android:radius="6dp"/>
<solid android:color="@color/primary"/>
</shape>
</scale>
</item>
</layer-list>
+9
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">
<corners android:radius="24dp" />
<solid android:color="@color/surface_elevated" />
<stroke
android:width="0.5dp"
android:color="@color/divider_subtle" />
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/surface"/> <!-- Theme-aware surface color -->
<corners android:radius="32dp"/>
<stroke android:width="1.2dp" android:color="#1A000000"/>
</shape>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#4DFFFFFF">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/primary" />
<corners android:radius="28dp" />
</shape>
</item>
</ripple>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/primary"/>
<corners android:radius="12dp"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/surface_variant"/>
<stroke android:width="1dp" android:color="@color/outline"/>
<corners android:radius="12dp"/>
</shape>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/primary"/>
<corners android:radius="20dp"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/button_glass_bg"/>
<corners android:radius="20dp"/>
<stroke android:width="1dp" android:color="@color/glass_panel_stroke"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#F2FFFFFF"/> <!-- 95% White -->
<corners android:radius="28dp"/>
<stroke android:width="0dp" android:color="@android:color/transparent"/>
</shape>
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<gradient
android:type="radial"
android:gradientRadius="140dp"
android:centerX="50%"
android:centerY="50%"
android:startColor="#CC8C6EFF"
android:centerColor="#40785AFF"
android:endColor="#00000000" />
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<corners android:radius="16dp"/>
<padding android:left="16dp" android:top="16dp" android:right="16dp" android:bottom="16dp"/>
</shape>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#E8F0FE"
android:endColor="#F5F7FF"
android:angle="135"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/white" />
<size android:width="32dp" android:height="32dp" />
</shape>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Left Half Vector -->
<item android:drawable="@drawable/ic_shift_half_red_vector" />
<!-- Full Circle Stroke Overlay -->
<item>
<shape android:shape="oval">
<stroke android:width="1.5dp" android:color="@color/shift_red"/>
<solid android:color="@android:color/transparent"/>
<size android:width="52dp" android:height="52dp"/>
</shape>
</item>
</layer-list>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/primary" />
<size android:width="52dp" android:height="52dp" />
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke android:width="1.5dp" android:color="@color/primary" />
<size android:width="52dp" android:height="52dp" />
</shape>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#401976D2" /> <!-- 25% Opacity Blue -->
<corners android:radius="36dp" />
</shape>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#40D32F2F" /> <!-- 25% Opacity Red -->
<corners android:radius="36dp" />
</shape>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#1565C0"
android:centerColor="#1976D2"
android:endColor="#42A5F5"
android:angle="135"/>
<corners android:radius="40dp"/>
</shape>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#C62828"
android:centerColor="#E53935"
android:endColor="#EF5350"
android:angle="135"/>
<corners android:radius="40dp"/>
</shape>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<corners android:radius="30dp"/>
<size android:width="60dp" android:height="60dp"/>
</shape>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="40dp" /> <!-- Fully rounded corners for pill shape -->
<solid android:color="#00000000" /> <!-- Transparent fill -->
<stroke android:width="1.5dp" android:color="#40FFFFFF" /> <!-- Glass border -->
</shape>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/primary_container">
<item>
<shape android:shape="rectangle">
<corners android:radius="12dp"/>
<solid android:color="@android:color/transparent"/>
</shape>
</item>
</ripple>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/primary_container">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/button_glass_bg"/>
<corners android:radius="14dp"/>
<stroke android:width="1dp" android:color="@color/glass_panel_stroke"/>
</shape>
</item>
</ripple>
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/surface"/>
<corners android:radius="20dp"/>
<stroke android:width="1dp" android:color="@color/glass_panel_stroke"/>
</shape>
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="#FFFFFF"/>
<size android:width="64dp" android:height="64dp"/>
</shape>
</item>
<item android:left="18dp" android:top="18dp" android:right="18dp" android:bottom="18dp">
<shape android:shape="oval">
<solid android:color="#1976D2"/>
<size android:width="28dp" android:height="28dp"/>
</shape>
</item>
</layer-list>
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="#FFFFFF"/>
<size android:width="64dp" android:height="64dp"/>
</shape>
</item>
<item android:left="18dp" android:top="18dp" android:right="18dp" android:bottom="18dp">
<shape android:shape="oval">
<solid android:color="#E53935"/>
<size android:width="28dp" android:height="28dp"/>
</shape>
</item>
</layer-list>
+30
View File
@@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,13m-8,0a8,8 0,1 1 16,0a8,8 0,1 1 -16,0"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M12,9v4l2,2"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M5,3L2,6"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M19,3L22,6"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
</vector>
@@ -0,0 +1,35 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:pathData="M0,0h108v108h-108z"
android:fillColor="#2196F3"/>
<group android:translateX="30" android:translateY="30" android:scaleX="2" android:scaleY="2">
<path
android:pathData="M12,13m-8,0a8,8 0,1 1 16,0a8,8 0,1 1 -16,0"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M12,9v4l2,2"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M5,3L2,6"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M19,3L22,6"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
</group>
</vector>
+18
View File
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M6,8a6,6 0,0 1 12,0c0,7 3,9 3,9H3s3,-2 3,-9"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M10.3,21a1.94,1.94 0,0 0 3.4,0"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
</vector>
+30
View File
@@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M8,2v4"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M16,2v4"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M5,4L19,4A2,2 0,0 1 21,6L21,20A2,2 0,0 1 19,22L5,22A2,2 0,0 1 3,20L3,6A2,2 0,0 1 5,4z"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M3,10h18"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
</vector>
+10
View File
@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="@color/secondary">
<path
android:fillColor="@android:color/white"
android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41-1.41z"/>
</vector>
+9
View File
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M10,6L8.59,7.41 13.17,12l-4.58,4.59L10,18l6,-6z"/>
</vector>
+9
View File
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6V19zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
</vector>
+18
View File
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M11,4H4a2,2 0,0 0 -2,2v14a2,2 0,0 0 2,2h14a2,2 0,0 0 2,-2v-7"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M18.5,2.5a2.121,2.121 0,0 1 3,3L12,15l-4,1 1,-4 9.5,-9.5z"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
</vector>
@@ -0,0 +1,24 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,12m-10,0a10,10 0,1 1 20,0a10,10 0,1 1 -20,0"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M8,12h8"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M12,8v8"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
</vector>
+18
View File
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12.22,2h-0.44a2,2 0,0 0 -2,2v0.18a2,2 0,0 1 -1,1.73l-0.43,0.25a2,2 0,0 1 -2,0l-0.15,-0.08a2,2 0,0 0 -2.73,0.73l-0.22,0.38a2,2 0,0 0 0.73,2.73l0.15,0.1a2,2 0,0 1 1,1.72v0.51a2,2 0,0 1 -1,1.74l-0.15,0.09a2,2 0,0 0 -0.73,2.73l0.22,0.38a2,2 0,0 0 2.73,0.73l0.15,-0.08a2,2 0,0 1 2,0l0.43,0.25a2,2 0,0 1 1,1.73V20a2,2 0,0 0 2,2h0.44a2,2 0,0 0 2,-2v-0.18a2,2 0,0 1 1,-1.73l0.43,-0.25a2,2 0,0 1 2,0l0.15,0.08a2,2 0,0 0 2.73,-0.73l0.22,-0.39a2,2 0,0 0 -0.73,-2.73l-0.15,-0.1a2,2 0,0 1 -1,-1.72v-0.51a2,2 0,0 1 1,-1.74l0.15,-0.09a2,2 0,0 0 0.73,-2.73l-0.22,-0.38a2,2 0,0 0 -2.73,-0.73l-0.15,0.08a2,2 0,0 1 -2,0l-0.43,-0.25a2,2 0,0 1 -1,-1.73V4a2,2 0,0 0 -2,-2z"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M12,12m-3,0a3,3 0,1 1 6,0a3,3 0,1 1 -6,0"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
</vector>
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="52dp"
android:height="52dp"
android:viewportWidth="52"
android:viewportHeight="52">
<!-- Left Half Red -->
<path
android:name="left_half"
android:fillColor="@color/shift_red"
android:pathData="M26,0 A26,26 0 0 0 26,52 L26,0 Z" />
</vector>
+18
View File
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M19,21v-2a4,4 0,0 0 -4,-4H9a4,4 0,0 0 -4,4v2"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
<path
android:pathData="M12,7m-4,0a4,4 0,1 1 8,0a4,4 0,1 1 -8,0"
android:strokeWidth="2"
android:strokeColor="#FFFFFF"
android:strokeLineCap="round"
android:strokeLineJoin="round"/>
</vector>
+110
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>
+344
View File
@@ -0,0 +1,344 @@
<?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="3dp"
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 | 내일: 15:00"
android:textSize="12sp"
android:textStyle="bold"
android:textColor="@color/text_primary"
android:singleLine="true"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/tvAnnualLeave"/>
<TextView
android:id="@+id/tvAnnualLeave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="연차: 0.0"
android:textSize="12sp"
android:textStyle="bold"
android:textColor="@color/primary"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toStartOf="@id/btnTideLocation"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<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>
<!-- Monthly Shift Summary Chip Bar (v2.2.0) -->
<LinearLayout
android:id="@+id/shiftSummaryBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="4dp"
android:paddingHorizontal="4dp"
app:layout_constraintTop_toBottomOf="@id/alarmInfoBar">
<TextView
android:id="@+id/chipJu"
android:layout_width="0dp"
android:layout_height="24dp"
android:layout_weight="1"
android:text="주간 0일"
android:textSize="10.5sp"
android:textStyle="bold"
android:gravity="center"
android:textColor="#B27B00"
android:background="@drawable/bg_chip_soft_ju"
android:layout_marginEnd="4dp"/>
<TextView
android:id="@+id/chipSeok"
android:layout_width="0dp"
android:layout_height="24dp"
android:layout_weight="1"
android:text="석간 0일"
android:textSize="10.5sp"
android:textStyle="bold"
android:gravity="center"
android:textColor="#006978"
android:background="@drawable/bg_chip_soft_seok"
android:layout_marginEnd="4dp"/>
<TextView
android:id="@+id/chipYa"
android:layout_width="0dp"
android:layout_height="24dp"
android:layout_weight="1"
android:text="야간 0일"
android:textSize="10.5sp"
android:textStyle="bold"
android:gravity="center"
android:textColor="@color/text_primary"
android:background="@drawable/bg_chip_soft_ya"
android:layout_marginEnd="4dp"/>
<TextView
android:id="@+id/chipOvertime"
android:layout_width="0dp"
android:layout_height="24dp"
android:layout_weight="1"
android:text="연장 0h"
android:textSize="10.5sp"
android:textStyle="bold"
android:gravity="center"
android:textColor="@color/shift_red"
android:background="@drawable/bg_chip_soft_overtime"/>
</LinearLayout>
<!-- Weekday Labels Header -->
<LinearLayout
android:id="@+id/weekdayLabels"
android:layout_width="match_parent"
android:layout_height="28dp"
android:orientation="horizontal"
android:layout_marginTop="6dp"
android:background="#08000000"
app:layout_constraintTop_toBottomOf="@id/shiftSummaryBar">
<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="3dp"
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>
@@ -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>
@@ -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>
@@ -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>

Some files were not shown because too many files have changed in this diff Show More