Skip to content

Commit 094c8ed

Browse files
committed
feat: main init
1 parent 15b02fd commit 094c8ed

7 files changed

Lines changed: 112 additions & 35 deletions

File tree

1.79 KB
Loading

composeApp/src/wasmJsMain/kotlin/io/github/kimmandoo/App.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import androidx.compose.ui.layout.Layout
1010
import androidx.compose.ui.layout.Measurable
1111
import androidx.compose.ui.layout.Placeable
1212
import androidx.compose.ui.unit.Constraints
13-
import io.github.kimmandoo.screen.MainScreen
13+
import io.github.kimmandoo.screen.main.MainScreen
1414
import io.github.kimmandoo.ui.MandooTheme
1515
import io.github.kimmandoo.ui.adaptive.LocalScreenSize
1616
import io.github.kimmandoo.ui.adaptive.LocalThemeMode

composeApp/src/wasmJsMain/kotlin/io/github/kimmandoo/screen/MainScreen.kt

Lines changed: 0 additions & 33 deletions
This file was deleted.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package io.github.kimmandoo.screen.main
2+
3+
import androidx.compose.foundation.Image
4+
import androidx.compose.foundation.layout.*
5+
import androidx.compose.foundation.lazy.rememberLazyListState
6+
import androidx.compose.foundation.onClick
7+
import androidx.compose.material3.*
8+
import androidx.compose.runtime.Composable
9+
import androidx.compose.ui.Alignment
10+
import androidx.compose.ui.Modifier
11+
import androidx.compose.ui.unit.dp
12+
import io.github.kimmandoo.screen.main.component.GreetingAnimation
13+
import io.github.kimmandoo.ui.adaptive.ThemeMode
14+
import io.github.kimmandoo.ui.adaptive.rememberDeviceState
15+
import kimmandoo_porfolio.composeapp.generated.resources.Res
16+
import kimmandoo_porfolio.composeapp.generated.resources.img_android
17+
import org.jetbrains.compose.resources.painterResource
18+
19+
@Composable
20+
fun MainScreen(
21+
modifier: Modifier = Modifier,
22+
onThemeChanged: (ThemeMode) -> Unit,
23+
){
24+
val deviceState = rememberDeviceState()
25+
val listState = rememberLazyListState()
26+
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
27+
28+
Row(modifier = modifier.height(IntrinsicSize.Max), horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically) {
29+
GreetingAnimation()
30+
Image(
31+
modifier = Modifier.height(100.dp),
32+
painter = painterResource(
33+
resource = Res.drawable.img_android,
34+
),
35+
contentDescription = "버그로이드"
36+
)
37+
}
38+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package io.github.kimmandoo.screen.main.component
2+
3+
import androidx.compose.animation.core.animateFloatAsState
4+
import androidx.compose.animation.core.tween
5+
import androidx.compose.foundation.layout.*
6+
import androidx.compose.material3.Text
7+
import androidx.compose.runtime.*
8+
import androidx.compose.ui.Alignment
9+
import androidx.compose.ui.Modifier
10+
import androidx.compose.ui.draw.alpha
11+
import androidx.compose.ui.unit.dp
12+
import androidx.compose.ui.unit.sp
13+
import kotlinx.coroutines.delay
14+
15+
@Composable
16+
fun GreetingAnimation() {
17+
val greetings = remember {
18+
listOf(
19+
"안녕하세요", // Korean
20+
"Hello", // English
21+
"Bonjour", // French
22+
"Hola", // Spanish
23+
"こんにちは" // Japanese
24+
)
25+
}
26+
27+
var currentGreetingIndex by remember { mutableStateOf(0) }
28+
var visible by remember { mutableStateOf(false) }
29+
30+
// 1. visible 상태가 바뀔 때마다 alpha 값을 애니메이션으로 변경합니다.
31+
val animatedAlpha by animateFloatAsState(
32+
targetValue = if (visible) 1f else 0f,
33+
animationSpec = tween(durationMillis = 1000) // 나타나거나 사라지는 데 1초
34+
)
35+
36+
// 2. currentGreetingIndex가 바뀔 때마다 LaunchedEffect를 다시 실행하여 루프를 만듭니다.
37+
LaunchedEffect(currentGreetingIndex) {
38+
// Step 1: 글자 나타나기 (Fade In)
39+
visible = true
40+
delay(5000) // 3초 동안 글자를 보여줌
41+
42+
// Step 2: 글자 사라지기 (Fade Out)
43+
visible = false
44+
delay(1000) // 글자가 완전히 사라질 때까지 1초 대기 (애니메이션 시간과 동일)
45+
46+
// Step 3: 다음 인사말로 변경
47+
currentGreetingIndex = (currentGreetingIndex + 1) % greetings.size
48+
}
49+
50+
Box(
51+
modifier = Modifier.width(300.dp),
52+
contentAlignment = Alignment.Center // 2. 내용물(Text)을 중앙에 정렬합니다.
53+
){
54+
Text(
55+
text = greetings[currentGreetingIndex],
56+
fontSize = 48.sp,
57+
modifier = Modifier
58+
.padding(8.dp)
59+
.alpha(animatedAlpha) // 애니메이션이 적용된 alpha 값 사용
60+
)
61+
}
62+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.github.kimmandoo.shared
2+
3+
import androidx.compose.foundation.Image
4+
import androidx.compose.foundation.layout.Box
5+
import androidx.compose.runtime.Composable
6+
import androidx.compose.ui.Alignment
7+
import androidx.compose.ui.Modifier
8+
import kimmandoo_porfolio.composeapp.generated.resources.Res
9+
import org.jetbrains.compose.resources.painterResource
10+

composeApp/src/wasmJsMain/resources/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<head>
44
<meta charset="UTF-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6-
<title>kimmandoo_porfolio</title>
6+
<title>Mingyu Kim</title>
77
<link type="text/css" rel="stylesheet" href="styles.css">
88
<script type="application/javascript" src="composeApp.js"></script>
99
</head>

0 commit comments

Comments
 (0)