Skip to content

Commit 220ef75

Browse files
committed
Ui: 기본 화면 추가 및 네비게이션 설정
- 기본 화면(로그인, 홈) 추가 - 임시 네비게이션 로직 구현
1 parent bbc1c33 commit 220ef75

9 files changed

Lines changed: 171 additions & 32 deletions

File tree

app/src/main/java/com/threegap/bitnagil/MainActivity.kt

Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,47 +4,18 @@ import android.os.Bundle
44
import androidx.activity.ComponentActivity
55
import androidx.activity.compose.setContent
66
import androidx.activity.enableEdgeToEdge
7-
import androidx.compose.foundation.layout.fillMaxSize
8-
import androidx.compose.foundation.layout.padding
9-
import androidx.compose.material3.Scaffold
10-
import androidx.compose.material3.Text
11-
import androidx.compose.runtime.Composable
12-
import androidx.compose.ui.Modifier
13-
import androidx.compose.ui.tooling.preview.Preview
147
import com.threegap.bitnagil.designsystem.BitnagilTheme
8+
import dagger.hilt.android.AndroidEntryPoint
159

10+
@AndroidEntryPoint
1611
class MainActivity : ComponentActivity() {
1712
override fun onCreate(savedInstanceState: Bundle?) {
1813
super.onCreate(savedInstanceState)
1914
enableEdgeToEdge()
2015
setContent {
2116
BitnagilTheme {
22-
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
23-
Greeting(
24-
name = "Android",
25-
modifier = Modifier.padding(innerPadding),
26-
)
27-
}
17+
MainScreen()
2818
}
2919
}
3020
}
3121
}
32-
33-
@Composable
34-
fun Greeting(
35-
name: String,
36-
modifier: Modifier = Modifier,
37-
) {
38-
Text(
39-
text = "Hello $name!",
40-
modifier = modifier,
41-
)
42-
}
43-
44-
@Preview(showBackground = true)
45-
@Composable
46-
fun GreetingPreview() {
47-
BitnagilTheme {
48-
Greeting("Android")
49-
}
50-
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.threegap.bitnagil
2+
3+
import androidx.compose.runtime.Composable
4+
import androidx.compose.ui.Modifier
5+
import androidx.navigation.compose.NavHost
6+
import androidx.navigation.compose.composable
7+
import com.threegap.bitnagil.presentation.home.HomeScreen
8+
import com.threegap.bitnagil.presentation.login.LoginScreen
9+
10+
@Composable
11+
fun MainNavHost(
12+
navigator: MainNavigator,
13+
modifier: Modifier = Modifier,
14+
) {
15+
NavHost(
16+
navController = navigator.navController,
17+
startDestination = navigator.startDestination,
18+
modifier = modifier,
19+
) {
20+
composable<Route.Login> {
21+
LoginScreen(
22+
onLoginClick = { navigator.navController.navigate(Route.Home) },
23+
)
24+
}
25+
26+
composable<Route.Home> {
27+
HomeScreen()
28+
}
29+
}
30+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.threegap.bitnagil
2+
3+
import androidx.compose.runtime.Composable
4+
import androidx.compose.runtime.remember
5+
import androidx.navigation.NavHostController
6+
import androidx.navigation.compose.rememberNavController
7+
8+
class MainNavigator(
9+
val navController: NavHostController,
10+
) {
11+
val startDestination = Route.Login
12+
}
13+
14+
@Composable
15+
fun rememberMainNavigator(navController: NavHostController = rememberNavController()): MainNavigator =
16+
remember(navController) {
17+
MainNavigator(navController)
18+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.threegap.bitnagil
2+
3+
import androidx.compose.foundation.layout.fillMaxSize
4+
import androidx.compose.foundation.layout.padding
5+
import androidx.compose.material3.Scaffold
6+
import androidx.compose.runtime.Composable
7+
import androidx.compose.ui.Modifier
8+
9+
@Composable
10+
fun MainScreen(
11+
modifier: Modifier = Modifier,
12+
navigator: MainNavigator = rememberMainNavigator(),
13+
) {
14+
Scaffold(
15+
modifier = modifier.fillMaxSize(),
16+
) { innerPadding ->
17+
MainNavHost(
18+
navigator = navigator,
19+
modifier = Modifier.padding(innerPadding),
20+
)
21+
}
22+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.threegap.bitnagil
2+
3+
import kotlinx.serialization.Serializable
4+
5+
sealed interface Route {
6+
@Serializable
7+
data object Login : Route
8+
9+
@Serializable
10+
data object Home : Route
11+
}

presentation/src/main/java/com/threegap/bitnagil/presentation/home/.gitkeep

Whitespace-only changes.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.threegap.bitnagil.presentation.home
2+
3+
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.layout.Arrangement
5+
import androidx.compose.foundation.layout.Column
6+
import androidx.compose.foundation.layout.fillMaxSize
7+
import androidx.compose.material3.Text
8+
import androidx.compose.runtime.Composable
9+
import androidx.compose.ui.Alignment
10+
import androidx.compose.ui.Modifier
11+
import androidx.compose.ui.graphics.Color
12+
import androidx.compose.ui.tooling.preview.Preview
13+
import com.threegap.bitnagil.designsystem.BitnagilTheme
14+
15+
@Composable
16+
fun HomeScreen(modifier: Modifier = Modifier) {
17+
Column(
18+
verticalArrangement = Arrangement.Center,
19+
horizontalAlignment = Alignment.CenterHorizontally,
20+
modifier =
21+
modifier
22+
.fillMaxSize()
23+
.background(Color.White),
24+
) {
25+
Text(text = "여긴 홈 화면")
26+
}
27+
}
28+
29+
@Preview
30+
@Composable
31+
private fun HomeScreenPreview() {
32+
BitnagilTheme {
33+
HomeScreen()
34+
}
35+
}

presentation/src/main/java/com/threegap/bitnagil/presentation/login/.gitkeep

Whitespace-only changes.
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.threegap.bitnagil.presentation.login
2+
3+
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.layout.Arrangement
5+
import androidx.compose.foundation.layout.Column
6+
import androidx.compose.foundation.layout.Spacer
7+
import androidx.compose.foundation.layout.fillMaxSize
8+
import androidx.compose.foundation.layout.height
9+
import androidx.compose.material3.Button
10+
import androidx.compose.material3.Text
11+
import androidx.compose.runtime.Composable
12+
import androidx.compose.ui.Alignment
13+
import androidx.compose.ui.Modifier
14+
import androidx.compose.ui.graphics.Color
15+
import androidx.compose.ui.tooling.preview.Preview
16+
import androidx.compose.ui.unit.dp
17+
import com.threegap.bitnagil.designsystem.BitnagilTheme
18+
19+
@Composable
20+
fun LoginScreen(
21+
onLoginClick: () -> Unit,
22+
modifier: Modifier = Modifier,
23+
) {
24+
Column(
25+
verticalArrangement = Arrangement.Center,
26+
horizontalAlignment = Alignment.CenterHorizontally,
27+
modifier =
28+
modifier
29+
.fillMaxSize()
30+
.background(Color.White),
31+
) {
32+
Text(text = "여긴 로그인 화면")
33+
34+
Spacer(modifier = Modifier.height(10.dp))
35+
36+
Button(
37+
onClick = onLoginClick,
38+
) {
39+
Text("로그인 버튼 눌러보던가")
40+
}
41+
}
42+
}
43+
44+
@Preview
45+
@Composable
46+
private fun LoginScreenPreview() {
47+
BitnagilTheme {
48+
LoginScreen(
49+
onLoginClick = {},
50+
)
51+
}
52+
}

0 commit comments

Comments
 (0)