diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4395447..d3ff09f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,6 +3,9 @@
xmlns:tools="http://schemas.android.com/tools">
+
@@ -30,6 +33,13 @@
+
+
diff --git a/core/designsystem/build.gradle.kts b/core/designsystem/build.gradle.kts
index e4938e8..0b667c8 100644
--- a/core/designsystem/build.gradle.kts
+++ b/core/designsystem/build.gradle.kts
@@ -12,4 +12,7 @@ android {
}
dependencies {
implementation(project(":core:ui"))
+
+ // Splash
+ implementation(libs.androidx.core.splashscreen)
}
diff --git a/core/designsystem/src/main/ic_launcher-playstore.png b/core/designsystem/src/main/ic_launcher-playstore.png
new file mode 100644
index 0000000..c32cfb6
Binary files /dev/null and b/core/designsystem/src/main/ic_launcher-playstore.png differ
diff --git a/core/designsystem/src/main/res/drawable/ic_launcher_foreground.xml b/core/designsystem/src/main/res/drawable/ic_launcher_foreground.xml
index 2b068d1..11490a4 100644
--- a/core/designsystem/src/main/res/drawable/ic_launcher_foreground.xml
+++ b/core/designsystem/src/main/res/drawable/ic_launcher_foreground.xml
@@ -1,30 +1,64 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+ android:viewportWidth="146"
+ android:viewportHeight="146">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/designsystem/src/main/res/drawable/ic_splash.xml b/core/designsystem/src/main/res/drawable/ic_splash.xml
new file mode 100644
index 0000000..d0c822e
--- /dev/null
+++ b/core/designsystem/src/main/res/drawable/ic_splash.xml
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/designsystem/src/main/res/mipmap-anydpi/ic_launcher.xml b/core/designsystem/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
similarity index 56%
rename from core/designsystem/src/main/res/mipmap-anydpi/ic_launcher.xml
rename to core/designsystem/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
index 6f3b755..7353dbd 100644
--- a/core/designsystem/src/main/res/mipmap-anydpi/ic_launcher.xml
+++ b/core/designsystem/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -1,6 +1,5 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/core/designsystem/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/core/designsystem/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
similarity index 56%
rename from core/designsystem/src/main/res/mipmap-anydpi/ic_launcher_round.xml
rename to core/designsystem/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
index 6f3b755..7353dbd 100644
--- a/core/designsystem/src/main/res/mipmap-anydpi/ic_launcher_round.xml
+++ b/core/designsystem/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -1,6 +1,5 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/core/designsystem/src/main/res/mipmap-hdpi/ic_launcher.webp b/core/designsystem/src/main/res/mipmap-hdpi/ic_launcher.webp
index c209e78..a48126d 100644
Binary files a/core/designsystem/src/main/res/mipmap-hdpi/ic_launcher.webp and b/core/designsystem/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/core/designsystem/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/core/designsystem/src/main/res/mipmap-hdpi/ic_launcher_round.webp
index b2dfe3d..4e844be 100644
Binary files a/core/designsystem/src/main/res/mipmap-hdpi/ic_launcher_round.webp and b/core/designsystem/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/core/designsystem/src/main/res/mipmap-mdpi/ic_launcher.webp b/core/designsystem/src/main/res/mipmap-mdpi/ic_launcher.webp
index 4f0f1d6..b0cb32b 100644
Binary files a/core/designsystem/src/main/res/mipmap-mdpi/ic_launcher.webp and b/core/designsystem/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/core/designsystem/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/core/designsystem/src/main/res/mipmap-mdpi/ic_launcher_round.webp
index 62b611d..16d10b5 100644
Binary files a/core/designsystem/src/main/res/mipmap-mdpi/ic_launcher_round.webp and b/core/designsystem/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/core/designsystem/src/main/res/mipmap-xhdpi/ic_launcher.webp b/core/designsystem/src/main/res/mipmap-xhdpi/ic_launcher.webp
index 948a307..26617a1 100644
Binary files a/core/designsystem/src/main/res/mipmap-xhdpi/ic_launcher.webp and b/core/designsystem/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/core/designsystem/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/core/designsystem/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
index 1b9a695..0e46063 100644
Binary files a/core/designsystem/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and b/core/designsystem/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/core/designsystem/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/core/designsystem/src/main/res/mipmap-xxhdpi/ic_launcher.webp
index 28d4b77..750efef 100644
Binary files a/core/designsystem/src/main/res/mipmap-xxhdpi/ic_launcher.webp and b/core/designsystem/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/core/designsystem/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/core/designsystem/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
index 9287f50..c8e52ef 100644
Binary files a/core/designsystem/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and b/core/designsystem/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/core/designsystem/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/core/designsystem/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
index aa7d642..3a97e4f 100644
Binary files a/core/designsystem/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and b/core/designsystem/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/core/designsystem/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/core/designsystem/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
index 9126ae3..6ee2cfe 100644
Binary files a/core/designsystem/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and b/core/designsystem/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/core/designsystem/src/main/res/values/ic_launcher_background.xml b/core/designsystem/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 0000000..2f5e088
--- /dev/null
+++ b/core/designsystem/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #FEC44D
+
\ No newline at end of file
diff --git a/core/designsystem/src/main/res/values/strings.xml b/core/designsystem/src/main/res/values/strings.xml
index 94eab90..0c06268 100644
--- a/core/designsystem/src/main/res/values/strings.xml
+++ b/core/designsystem/src/main/res/values/strings.xml
@@ -1,5 +1,8 @@
- TelePigeon
+ 텔레피죤
+
+
+ 카카오 로그인
메인
@@ -41,6 +44,13 @@
완료하기
적용
확인하기
+
+
+ 생존신고를 보내려면 꼭 필요해요!
+ \'텔레피죤\'에서 알림을 보내고자 합니다.
+ 알람 기능이 꺼져있으면 기능 사용이 어려워요
+ 허용 안함
+ 허용
홈
diff --git a/core/designsystem/src/main/res/values/themes.xml b/core/designsystem/src/main/res/values/themes.xml
index 09c9d6a..55527ea 100644
--- a/core/designsystem/src/main/res/values/themes.xml
+++ b/core/designsystem/src/main/res/values/themes.xml
@@ -93,4 +93,15 @@
- @style/Theme.TelePigeon.BottomSheet
+
+
+
\ No newline at end of file
diff --git a/feature/build.gradle.kts b/feature/build.gradle.kts
index 2ff3504..170fbae 100644
--- a/feature/build.gradle.kts
+++ b/feature/build.gradle.kts
@@ -31,4 +31,7 @@ dependencies {
// Navigation
implementation(libs.androidx.navigation.fragment)
implementation(libs.androidx.navigation.ui)
+
+ // Splash
+ implementation(libs.androidx.core.splashscreen)
}
diff --git a/feature/src/main/java/com/dongguk/telepigeon/feature/login/LoginFragment.kt b/feature/src/main/java/com/dongguk/telepigeon/feature/login/LoginFragment.kt
new file mode 100644
index 0000000..3681048
--- /dev/null
+++ b/feature/src/main/java/com/dongguk/telepigeon/feature/login/LoginFragment.kt
@@ -0,0 +1,29 @@
+package com.dongguk.telepigeon.feature.login
+
+import android.os.Bundle
+import android.view.View
+import androidx.navigation.fragment.findNavController
+import com.dongguk.telepigeon.feature.R
+import com.dongguk.telepigeon.feature.databinding.FragmentLoginBinding
+import com.dongguk.telpigeon.core.ui.base.BindingFragment
+
+class LoginFragment : BindingFragment({ FragmentLoginBinding.inflate(it) }) {
+ override fun onViewCreated(
+ view: View,
+ savedInstanceState: Bundle?,
+ ) {
+ super.onViewCreated(view, savedInstanceState)
+
+ setLayoutLoginKakaoClickListener()
+ }
+
+ private fun setLayoutLoginKakaoClickListener() {
+ binding.layoutLoginKakao.setOnClickListener {
+ navigateToNotification()
+ }
+ }
+
+ private fun navigateToNotification() {
+ findNavController().navigate(R.id.action_login_to_notification)
+ }
+}
diff --git a/feature/src/main/java/com/dongguk/telepigeon/feature/notification/NotificationFragment.kt b/feature/src/main/java/com/dongguk/telepigeon/feature/notification/NotificationFragment.kt
new file mode 100644
index 0000000..4256156
--- /dev/null
+++ b/feature/src/main/java/com/dongguk/telepigeon/feature/notification/NotificationFragment.kt
@@ -0,0 +1,57 @@
+package com.dongguk.telepigeon.feature.notification
+
+import android.Manifest
+import android.content.pm.PackageManager
+import android.os.Build
+import android.os.Bundle
+import android.view.View
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.core.content.ContextCompat
+import androidx.navigation.fragment.findNavController
+import com.dongguk.telepigeon.feature.R
+import com.dongguk.telepigeon.feature.databinding.FragmentNotificationBinding
+import com.dongguk.telpigeon.core.ui.base.BindingFragment
+
+class NotificationFragment : BindingFragment({ FragmentNotificationBinding.inflate(it) }) {
+ private val postNotificationPermissionRequest =
+ registerForActivityResult(
+ ActivityResultContracts.RequestPermission(),
+ ) {
+ navigateToHome()
+ }
+
+ override fun onViewCreated(
+ view: View,
+ savedInstanceState: Bundle?,
+ ) {
+ super.onViewCreated(view, savedInstanceState)
+
+ initLayout()
+ setBtnNotificationNoApplyClickListener()
+ setBtnNotificationApplyClickListener()
+ }
+
+ private fun initLayout() {
+ if (ContextCompat.checkSelfPermission(requireContext().applicationContext, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
+ navigateToHome()
+ }
+ }
+
+ private fun setBtnNotificationNoApplyClickListener() {
+ binding.btnNotificationNoApply.setOnClickListener {
+ navigateToHome()
+ }
+ }
+
+ private fun setBtnNotificationApplyClickListener() {
+ binding.btnNotificationApply.setOnClickListener {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ postNotificationPermissionRequest.launch(Manifest.permission.POST_NOTIFICATIONS)
+ }
+ }
+ }
+
+ private fun navigateToHome() {
+ findNavController().navigate(R.id.action_notification_to_home)
+ }
+}
diff --git a/feature/src/main/java/com/dongguk/telepigeon/feature/splash/SplashActivity.kt b/feature/src/main/java/com/dongguk/telepigeon/feature/splash/SplashActivity.kt
new file mode 100644
index 0000000..5037325
--- /dev/null
+++ b/feature/src/main/java/com/dongguk/telepigeon/feature/splash/SplashActivity.kt
@@ -0,0 +1,37 @@
+package com.dongguk.telepigeon.feature.splash
+
+import android.content.Intent
+import android.os.Bundle
+import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
+import androidx.lifecycle.lifecycleScope
+import com.dongguk.telepigeon.feature.MainActivity
+import com.dongguk.telepigeon.feature.databinding.ActivitySplashBinding
+import com.dongguk.telpigeon.core.ui.base.BindingActivity
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
+
+class SplashActivity : BindingActivity({ ActivitySplashBinding.inflate(it) }) {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ installSplashScreen()
+ super.onCreate(savedInstanceState)
+ loadSplashScreen()
+ }
+
+ private fun loadSplashScreen() {
+ lifecycleScope.launch {
+ delay(SPLASH_SCREEN_DELAY_TIME)
+ navigateToMain()
+ }
+ }
+
+ private fun navigateToMain() {
+ Intent(this@SplashActivity, MainActivity::class.java).apply {
+ startActivity(this)
+ finish()
+ }
+ }
+
+ companion object {
+ const val SPLASH_SCREEN_DELAY_TIME = 1500L
+ }
+}
diff --git a/feature/src/main/res/layout/activity_splash.xml b/feature/src/main/res/layout/activity_splash.xml
new file mode 100644
index 0000000..4f8ba02
--- /dev/null
+++ b/feature/src/main/res/layout/activity_splash.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/feature/src/main/res/layout/fragment_login.xml b/feature/src/main/res/layout/fragment_login.xml
new file mode 100644
index 0000000..2f92202
--- /dev/null
+++ b/feature/src/main/res/layout/fragment_login.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/feature/src/main/res/layout/fragment_notification.xml b/feature/src/main/res/layout/fragment_notification.xml
new file mode 100644
index 0000000..155043f
--- /dev/null
+++ b/feature/src/main/res/layout/fragment_notification.xml
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/feature/src/main/res/navigation/nav_all.xml b/feature/src/main/res/navigation/nav_all.xml
index c2d8233..ec3484c 100644
--- a/feature/src/main/res/navigation/nav_all.xml
+++ b/feature/src/main/res/navigation/nav_all.xml
@@ -3,7 +3,30 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_all"
- app:startDestination="@id/menu_home">
+ app:startDestination="@id/menu_login">
+
+
+
+
+
+
+
+
+
+ tools:layout="@layout/fragment_calendar">