Closed tgyuuAn closed 7 months ago
++ ์ถํ์ Loading Animation ์๊ฑฐ ํ ๋น ViewHolder๋ฅผ ๋ฃ๋ ๊ฒ ๋ ์ด์ ๊ฒ ๊ฐ๋ฐ.
ํ์ง๋ง ์ด๊ฑด ๋๋ฌด ๊ท์ฐฎ์ ์ผ์ด๊ณ ๋น์ฅ ํ์ํ์ง ์์ ๊ธฐ๋ฅ์ด๋ฏ๋ก ๋ฌด๊ธฐํ ์ฐ์ฅ์ด๋ค.
๊ณต์๋ฌธ์
๋ ํผ๋ฐ์ค
textAlign = TextAlign.Center, // horizontal center of the text modifier = Modifier.align(Alignment.CenterVertically) //vertical center of the Text composable
textAlign๊ณผ rowScopeAlignment์ align์ ์ฌ์ฉํ๋ฉด ํด๊ฒฐํ ์ ์์ต๋๋ค์ง
textAlign
align
Composable ํจ์ ์์์ Coroutine ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋, rememberCoroutineScope()์ ๊ฐ์ด ์ฝ๋ฃจํด ์ค์ฝํ๋ฅผ ๋ฐ๋ก ์ด์ด์ค์ผํ๋๋ฐ,
rememberCoroutineScope()
์ด๊ฑฐ ๊ทธ๋ฅ ์ฌ์ฉํ๋ ์ปดํฌ์ ๋ธ ํจ์ ๋ด๋ถ๊ฐ ์๋๋ผ Route ๋จ์์ ๊ฐ์ฅ ์ต์์ Composable๊น์ง ํธ์ด์คํ ํด์ ์ฌ๋ ค๋ฒ๋ฆฌ๋ฉด,
ํ๋์ ์ฝ๋ฃจํด ์ค์ฝํ๋ก ๋ชจ๋ ์ค๋จ ํจ์๋ฅผ ์คํํ ์ ์์ผ๋๊น ๋ ์ข์๊ฑฐ ์๋์ผ ...? ๋ผ๊ณ ์๊ฐํ๋ค.
๊ทผ๋ฐ,, ๋ง์ฝ ๊ทธ๋ ๊ฒ ํ๊ฒ ๋ ๊ฒฝ์ฐ ํด๋น Composable์ ์๋ช ์ฃผ๊ธฐ๊ฐ ๋๋ฌ์์๋ ํด๋น ์ค๋จํจ์๋ ๊ฒ์ํด์ ์คํ๋๊ฒ ๋๋ค...
ํด๋น Composable ํจ์๊ฐ ์ฃฝ์ผ๋ฉด ํด๋น ์ค๋จ ํจ์๋ ์ทจ์๋์ด์ผ์ง...!
์ฆ, ํด๋น Composable์๋ง ์ข ์๋์ด์ผ ํ ๊ฒฝ์ฐ ํด๋น Composable ๋ด๋ถ์ rememberCoroutineScope()๋ฅผ ํ๋ ๊ฒ์ด ๋ง๊ณ ,
๋ญ ๊ทธ๋ด ๊ฒฝ์ฐ๋ ์ข ๋๋ฌผ๊ฒ ์ง๋ง ํด๋น Composable ์ธ๋ถ์ ์์ญ๊น์ง ํผ์ง๋ sideEffect๊ฐ ์์ด์ผ ํ๋ค๋ฉด ์ธ๋ถ์ ์์ฑํด์ ๋๊ฒจ์ฃผ๋....? (์์ง ์ ์๊ฐ์ ์๋๋ค.)
git ์ฌ์ฉ๋ฒ
์ด๊ฑด .... ์์ง ๋ด ๋ ๋ฒจ์ด..
์ผ๋จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ๋ฐ.
fun Modifier.verticalScrollDisabled() = pointerInput(Unit) { awaitPointerEventScope { while (true) { awaitPointerEvent(pass = PointerEventPass.Initial).changes.forEach { val offset = it.positionChange() if (abs(offset.y) > 0f) { it.consume() } } } } }
๊ฒฐ๊ณผ
LazyColumn
LazyRow
val state = rememberModalBottomSheetState( initialValue= ModalBottomSheetValue.Hidden, confirmStateChange = {false})
์ถ์ฒ ๋ ํผ๋ฐ์ค1
์ถ์ฒ ๋ ํผ๋ฐ์ค2
์ผ๋จ ๋ง์ด๊ทธ๋ ์ด์ ๋น์ฉ ์ข ์์ผ๋ Keep...
์์ง ํด๊ฒฐํ์ง ๋ชปํ์
val focusRequester = remember { FocusRequester() } LaunchedEffect(true) { focusRequester.requestFocus() } SettingTextField( text = newMajor, onTextChanged = onNewMajorChanged, onConfirm = { }, hint = stringResource(id = R.string.hint_nickname), modifier = Modifier .padding(horizontal = 20.dp) .focusRequester(focusRequester), // <- ํฌ์ปค์ค ์ฃผ๊ณ ์ถ์ ๊ณณ์๋ค๊ฐ modifier ๋ฌ์๋ถ๋ ค )
1. ๐ ๊ด๋ จ๋ ์ด์ ๋ฐ ์๊ฐ
2. ๐ฅ๋ณ๊ฒฝ๋ ์
3. ๐ธ ์คํฌ๋ฆฐ์ท(์ ํ)
++ ์ถํ์ Loading Animation ์๊ฑฐ ํ ๋น ViewHolder๋ฅผ ๋ฃ๋ ๊ฒ ๋ ์ด์ ๊ฒ ๊ฐ๋ฐ.
ํ์ง๋ง ์ด๊ฑด ๋๋ฌด ๊ท์ฐฎ์ ์ผ์ด๊ณ ๋น์ฅ ํ์ํ์ง ์์ ๊ธฐ๋ฅ์ด๋ฏ๋ก ๋ฌด๊ธฐํ ์ฐ์ฅ์ด๋ค.
4. ๐ก์๊ฒ๋ ํน์ ๊ถ๊ธํ ์ฌํญ๋ค
Compose Modal BottomSheet
๊ณต์๋ฌธ์
Button ๋ด๋ถ์ ์๋ Text ๊ฐ์ด๋ฐ ์ ๋ ฌ์ ํ๊ณ ์ถ๋ค๊ตฌ์?
๋ ํผ๋ฐ์ค
textAlign
๊ณผ rowScopeAlignment์align
์ ์ฌ์ฉํ๋ฉด ํด๊ฒฐํ ์ ์์ต๋๋ค์งrememberCoroutineScope() ๋ฅผ ์ด๋๊น์ง ํธ์ด์คํ ํ ์ ์์๊น...?
์ฒ์ ์ฌ๊ณ
Composable ํจ์ ์์์ Coroutine ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋,
rememberCoroutineScope()
์ ๊ฐ์ด ์ฝ๋ฃจํด ์ค์ฝํ๋ฅผ ๋ฐ๋ก ์ด์ด์ค์ผํ๋๋ฐ,์ด๊ฑฐ ๊ทธ๋ฅ ์ฌ์ฉํ๋ ์ปดํฌ์ ๋ธ ํจ์ ๋ด๋ถ๊ฐ ์๋๋ผ Route ๋จ์์ ๊ฐ์ฅ ์ต์์ Composable๊น์ง ํธ์ด์คํ ํด์ ์ฌ๋ ค๋ฒ๋ฆฌ๋ฉด,
ํ๋์ ์ฝ๋ฃจํด ์ค์ฝํ๋ก ๋ชจ๋ ์ค๋จ ํจ์๋ฅผ ์คํํ ์ ์์ผ๋๊น ๋ ์ข์๊ฑฐ ์๋์ผ ...? ๋ผ๊ณ ์๊ฐํ๋ค.
๊นจ๋ฌ์..
๊ทผ๋ฐ,, ๋ง์ฝ ๊ทธ๋ ๊ฒ ํ๊ฒ ๋ ๊ฒฝ์ฐ ํด๋น Composable์ ์๋ช ์ฃผ๊ธฐ๊ฐ ๋๋ฌ์์๋ ํด๋น ์ค๋จํจ์๋ ๊ฒ์ํด์ ์คํ๋๊ฒ ๋๋ค...
ํด๋น Composable ํจ์๊ฐ ์ฃฝ์ผ๋ฉด ํด๋น ์ค๋จ ํจ์๋ ์ทจ์๋์ด์ผ์ง...!
์ฆ, ํด๋น Composable์๋ง ์ข ์๋์ด์ผ ํ ๊ฒฝ์ฐ ํด๋น Composable ๋ด๋ถ์
rememberCoroutineScope()
๋ฅผ ํ๋ ๊ฒ์ด ๋ง๊ณ ,๋ญ ๊ทธ๋ด ๊ฒฝ์ฐ๋ ์ข ๋๋ฌผ๊ฒ ์ง๋ง ํด๋น Composable ์ธ๋ถ์ ์์ญ๊น์ง ํผ์ง๋ sideEffect๊ฐ ์์ด์ผ ํ๋ค๋ฉด ์ธ๋ถ์ ์์ฑํด์ ๋๊ฒจ์ฃผ๋....? (์์ง ์ ์๊ฐ์ ์๋๋ค.)
๋ ํผ๋ฐ์ค
wheelPicker
git ์ฌ์ฉ๋ฒ
์ด๊ฑด .... ์์ง ๋ด ๋ ๋ฒจ์ด..
์ผ๋จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ๋ฐ.
Android Compose Modal BottomSheet ๋๋๊ทธ๋ก ์ฌ๋ผ์ง๋ ๊ฒ ๋ง๊ธฐ
๋์ 1. verticalScrollDisabled() Modifier ์ฌ์ฉ.
๋ ํผ๋ฐ์ค
๊ฒฐ๊ณผ
LazyColumn
ํน์LazyRow
์ ์คํฌ๋กค๋ ๋ง์๋ฒ๋ฆผ.๋์ 2. rememberModalBottomSheetState์์ confirmStateChanged๋ฅผ false๋ก ๋ฐ๊ฟ
๊ฒฐ๊ณผ
LazyColumn
์์ผ๋ฉด ์คํฌ๋กคํ๋ฉด์ ์๋์ผ๋ก ๋ซํ์ถ์ฒ ๋ ํผ๋ฐ์ค1
์ถ์ฒ ๋ ํผ๋ฐ์ค2
์ผ๋จ ๋ง์ด๊ทธ๋ ์ด์ ๋น์ฉ ์ข ์์ผ๋ Keep...
์์ง ํด๊ฒฐํ์ง ๋ชปํ์
EditTextField์ ๋ฐ๋ก Focus ์ค์ Keyboard ์ฌ๋ผ๊ฐ๊ฒ ํ๋ ๋ฒ!!
๋ ํผ๋ฐ์ค