diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 3ca7183..562e154 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -49,4 +49,7 @@ dependencies {
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
+
+ // 스플래시
+ implementation(libs.androidx.core.splashscreen)
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d1a5da8..7ce6462 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,6 +12,18 @@
android:supportsRtl="true"
android:theme="@style/Theme.NoBet"
tools:targetApi="31">
+
+
+
+
+
+
+
+
@@ -23,13 +35,7 @@
android:exported="false" />
-
-
-
-
-
-
+ android:exported="false" />
\ No newline at end of file
diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/main/MainActivity.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/main/MainActivity.kt
index 3505b9c..7a5db66 100644
--- a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/main/MainActivity.kt
+++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/main/MainActivity.kt
@@ -8,7 +8,6 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.PopupWindow
-import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
@@ -22,6 +21,7 @@ import kr.hs.anu.nobet.databinding.ActivityMainBinding
import kr.hs.anu.nobet.presentation.screen.allow.AllowActivity
import kr.hs.anu.nobet.presentation.screen.blockList.BlockListActivity
import kr.hs.anu.nobet.presentation.screen.login.LoginActivity
+import kr.hs.anu.nobet.presentation.screen.report.ReportActivity
import kr.hs.anu.nobet.utils.openPage
class MainActivity : AppCompatActivity() {
@@ -124,7 +124,8 @@ class MainActivity : AppCompatActivity() {
}
popupMenu.findViewById(R.id.menu_report).setOnClickListener {
- Toast.makeText(anchor.context, "문제 신고", Toast.LENGTH_SHORT).show()
+ val intent = Intent(this, ReportActivity::class.java)
+ startActivity(intent)
popupWindow.dismiss()
}
}
diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/report/ReportActivity.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/report/ReportActivity.kt
new file mode 100644
index 0000000..1f7aa9b
--- /dev/null
+++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/report/ReportActivity.kt
@@ -0,0 +1,54 @@
+package kr.hs.anu.nobet.presentation.screen.report
+
+import android.os.Bundle
+import android.view.View
+import androidx.activity.enableEdgeToEdge
+import androidx.activity.viewModels
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import kr.hs.anu.nobet.R
+import kr.hs.anu.nobet.databinding.ActivityReportBinding
+import kr.hs.anu.nobet.utils.openPage
+
+class ReportActivity : AppCompatActivity() {
+
+ private val viewModel: ReportViewModel by viewModels()
+ private lateinit var binding: ActivityReportBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ binding = ActivityReportBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
+ val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
+ insets
+ }
+
+ viewModel.spinnerState.observe(this) { spinnerState ->
+ binding.layoutReportMenu.visibility = if (spinnerState) View.VISIBLE else View.INVISIBLE
+ }
+
+ // 로고 클릭시 메인으로
+ binding.ivTopbarLogo.setOnClickListener {
+ finish()
+ }
+
+ // 온라인 상담
+ binding.tvMobile.setOnClickListener {
+ this.openPage()
+ }
+
+ binding.layoutSpinner.setOnClickListener {
+ viewModel.toggle()
+ }
+
+ binding.ivDrop.setOnClickListener {
+ viewModel.toggle()
+ }
+
+ // TODO menu 값 클릭했을때 선택값으로 텍스트 변경 및 데이터 처리
+ }
+}
diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/report/ReportViewModel.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/report/ReportViewModel.kt
new file mode 100644
index 0000000..bfe4d7e
--- /dev/null
+++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/report/ReportViewModel.kt
@@ -0,0 +1,17 @@
+package kr.hs.anu.nobet.presentation.screen.report
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+
+class ReportViewModel : ViewModel() {
+
+ // spinner 상태
+ private val _spinnerState = MutableLiveData(false)
+ val spinnerState: LiveData = _spinnerState
+
+ // spinner 상태 관리
+ fun toggle() {
+ _spinnerState.value = !(_spinnerState.value ?: false)
+ }
+}
diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/splash/SplashActivity.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/splash/SplashActivity.kt
new file mode 100644
index 0000000..1bb0b9c
--- /dev/null
+++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/splash/SplashActivity.kt
@@ -0,0 +1,28 @@
+package kr.hs.anu.nobet.presentation.screen.splash
+
+import android.content.Intent
+import android.os.Build
+import android.os.Bundle
+import android.os.Handler
+import android.os.Looper
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
+import kr.hs.anu.nobet.R
+import kr.hs.anu.nobet.presentation.screen.main.MainActivity
+
+class SplashActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ installSplashScreen().setKeepOnScreenCondition { false }
+ }
+
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_splash)
+
+ // 딜레이 후 메인으로 이동
+ Handler(Looper.getMainLooper()).postDelayed({
+ startActivity(Intent(this, MainActivity::class.java))
+ finish()
+ }, 1500)
+ }
+}
diff --git a/app/src/main/res/drawable/ic_down_arrow.xml b/app/src/main/res/drawable/ic_down_arrow.xml
new file mode 100644
index 0000000..6958979
--- /dev/null
+++ b/app/src/main/res/drawable/ic_down_arrow.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/logo.png b/app/src/main/res/drawable/logo.png
new file mode 100644
index 0000000..8bc579b
Binary files /dev/null and b/app/src/main/res/drawable/logo.png differ
diff --git a/app/src/main/res/drawable/report_background.xml b/app/src/main/res/drawable/report_background.xml
new file mode 100644
index 0000000..304f1eb
--- /dev/null
+++ b/app/src/main/res/drawable/report_background.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/report_btn_background.xml b/app/src/main/res/drawable/report_btn_background.xml
new file mode 100644
index 0000000..9aecf37
--- /dev/null
+++ b/app/src/main/res/drawable/report_btn_background.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_report.xml b/app/src/main/res/layout/activity_report.xml
new file mode 100644
index 0000000..4f9363b
--- /dev/null
+++ b/app/src/main/res/layout/activity_report.xml
@@ -0,0 +1,285 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml
new file mode 100644
index 0000000..e243887
--- /dev/null
+++ b/app/src/main/res/layout/activity_splash.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-v31/themes.xml b/app/src/main/res/values-v31/themes.xml
new file mode 100644
index 0000000..ba33dae
--- /dev/null
+++ b/app/src/main/res/values-v31/themes.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 8c06691..f1b64d4 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -3,7 +3,10 @@
+
+
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 40d247c..094bd87 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,5 +1,6 @@
[versions]
agp = "8.10.1"
+coreSplashscreen = "1.0.1"
kotlin = "2.0.21"
coreKtx = "1.16.0"
junit = "4.13.2"
@@ -12,6 +13,7 @@ constraintlayout = "2.2.1"
[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
+androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "coreSplashscreen" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }