diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a65934a..8004036 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,6 +12,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.NoBet"
tools:targetApi="31">
+
diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/login/LoginActivity.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/login/LoginActivity.kt
new file mode 100644
index 0000000..60bb619
--- /dev/null
+++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/login/LoginActivity.kt
@@ -0,0 +1,44 @@
+package kr.hs.anu.nobet.presentation.screen.login
+
+import android.os.Bundle
+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.ActivityLoginBinding
+import kr.hs.anu.nobet.utils.openPage
+
+class LoginActivity : AppCompatActivity() {
+
+ private val viewModel: LoginViewModel by viewModels()
+ private lateinit var binding: ActivityLoginBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ binding = ActivityLoginBinding.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
+ }
+
+ // logo 누르면 홈으로 이동
+ binding.ivTopbarLogo.setOnClickListener {
+ finish()
+ }
+
+ // 로그인 -> 처리는 viewModel
+ binding.btnLogin.setOnClickListener {
+ viewModel.do_login()
+ }
+
+ // 온라인 상담 바로가기
+ binding.tvMobile.setOnClickListener {
+ this.openPage()
+ }
+ }
+}
diff --git a/app/src/main/java/kr/hs/anu/nobet/presentation/screen/login/LoginViewModel.kt b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/login/LoginViewModel.kt
new file mode 100644
index 0000000..61e5d0e
--- /dev/null
+++ b/app/src/main/java/kr/hs/anu/nobet/presentation/screen/login/LoginViewModel.kt
@@ -0,0 +1,11 @@
+package kr.hs.anu.nobet.presentation.screen.login
+
+import androidx.lifecycle.ViewModel
+
+class LoginViewModel : ViewModel() {
+ // TODO 로그인 로직 + 데이터 처리
+
+ fun do_login() {
+ // TODO 로그인 로직 (카카오)
+ }
+}
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 2b8f746..86cc5cb 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
@@ -1,5 +1,6 @@
package kr.hs.anu.nobet.presentation.screen.main
+import android.content.Intent
import android.graphics.Color
import android.graphics.PorterDuff
import android.os.Bundle
@@ -18,6 +19,7 @@ import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import kr.hs.anu.nobet.R
import kr.hs.anu.nobet.databinding.ActivityMainBinding
+import kr.hs.anu.nobet.presentation.screen.login.LoginActivity
class MainActivity : AppCompatActivity() {
@@ -96,8 +98,8 @@ class MainActivity : AppCompatActivity() {
// TODO 이동 처리는 다음 branch 에서 화면 만들고 거기서 이어줄 예정
popupMenu.findViewById(R.id.menu_login).setOnClickListener {
- // TODO 로그인 화면으로 이동
- Toast.makeText(anchor.context, "로그인 클릭됨", Toast.LENGTH_SHORT).show()
+ val intent = Intent(this, LoginActivity::class.java)
+ startActivity(intent)
popupWindow.dismiss()
}
diff --git a/app/src/main/java/kr/hs/anu/nobet/utils/IntentExtensions.kt b/app/src/main/java/kr/hs/anu/nobet/utils/IntentExtensions.kt
new file mode 100644
index 0000000..e472a01
--- /dev/null
+++ b/app/src/main/java/kr/hs/anu/nobet/utils/IntentExtensions.kt
@@ -0,0 +1,17 @@
+package kr.hs.anu.nobet.utils
+
+import android.content.Context
+import android.content.Intent
+import android.widget.Toast
+import androidx.core.net.toUri
+
+// 온라인 상담 바로가기 구현
+fun Context.openPage() {
+ val url = "https://www.kcgp.or.kr/portal/main/main.do"
+ try {
+ val intent = Intent(Intent.ACTION_VIEW, url.toUri())
+ startActivity(intent)
+ } catch (e: Exception) {
+ Toast.makeText(this, "페이지를 열 수 없습니다.", Toast.LENGTH_SHORT).show()
+ }
+}
diff --git a/app/src/main/res/drawable/login_btn_background.xml b/app/src/main/res/drawable/login_btn_background.xml
new file mode 100644
index 0000000..1e4d8c8
--- /dev/null
+++ b/app/src/main/res/drawable/login_btn_background.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
new file mode 100644
index 0000000..162f212
--- /dev/null
+++ b/app/src/main/res/layout/activity_login.xml
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 061053e..dd6deed 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -91,6 +91,7 @@
android:layout_marginTop="5dp"
android:fontFamily="@font/pretendard_medium"
android:text="@string/off_view_title"
+ android:textColor="@color/black"
android:textSize="@dimen/body_2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"