Jetpack Compose 1.1.0๐ŸŽ‰ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์š”์•ฝ

workspaceยท2022๋…„ 2์›” 10์ผ
9

Jetpack Release Note

๋ชฉ๋ก ๋ณด๊ธฐ
1/1
post-thumbnail

2์›” 9์ผ Jetpack Release Note์˜ ๋‚ด์šฉ ์ค‘, Compose 1.1.0 ์— ๋Œ€ํ•œ ์ •๋ฆฌ์ž…๋‹ˆ๋‹ค.
๋” ๊ถ๊ธˆํ•˜์‹  ์ ์€ ๊ตญ๋‚ด ์œ ์ผ(?) Jetpack Compose ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ ๋ณด์„ธ์š”.

2์›” 9์ผ ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ 7์›” 1.0 ์ถœ์‹œ ์ดํ›„ ์•ฝ ๋ฐ˜๋…„๋งŒ์˜ ๋ฉ”์ด์ € ์—…๋ฐ์ดํŠธ์ธ๋ฐ์š”, ๋ณ„๋„๋กœ ๊ตฌ๊ธ€์—์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์š”์•ฝ์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์š”์•ฝ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ •๋ฆฌํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

Image vector caching

painterResource api์— ์บ์‹ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํฐ ์„ฑ๋Šฅ ๋ณ€ํ™”๋ฅผ ์ด๋ค„๋ƒˆ๋‹ค ํ•ฉ๋‹ˆ๋‹ค.

Touch target sizing

alpha, beta๋‹จ๊ณ„์˜ 1.1์„ ํ…Œ์ŠคํŠธํ•˜๋˜ ์ค‘ ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ฐ›์•˜๋˜ ๋ณ€ํ™”์˜€์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ Material accessibility guidelines touch target size ๊ฐ€์ด๋“œ ์ค€์ˆ˜๋ฅผ ์œ„ํ•ด IconButton, RadioButton๋“ฑ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ '๊ฐ•์ œ'ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ตฌ๊ธ€์—์„œ๋„ ์ด ๋ณ€๊ฒฝ์ด ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ํฐ ์ž„ํŒฉํŠธ๋ฅผ ๋ฏธ์นœ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ธ์ง€ํ•˜์—ฌ, ์•„๋ž˜์™€ ๊ฐ™์ด ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

CompositionLocalProvider(LocalMinimumTouchTargetEnforcement provides false) {
   ...
}

๊ฐ€์ด๋“œ์˜ ์ง€ํ–ฅ์ ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค๋งŒ, ์ €ํฌ ์„œ๋น„์Šค๋Š” ๋””์ž์ธ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋‹ฌ๋ผ ์กฐ๋งŒ๊ฐ„ material์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ์—ผ๋‘์— ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Experimental to stable APIs

  • AnimatedVisibility๊ด€๋ จ API๋“ค์ด stable์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ๐ŸŽ‰ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ ์  stable์ด ๋˜์–ด๊ฐ€๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • Vector๊ด€๋ จ API๋“ค๋„ stable์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

New experimental APIs

  • AnimatedContent๋Š” ๊ฐ„๋‹จํ•œ ํ™”๋ฉด ์ „ํ™˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์ข‹์œผ๋ฉฐ, accompanist์˜ Jetpack Navigation Compose Animation ๊ฐ™์€ ๊ณณ์—์„œ๋„ ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•์ด ๊ฐ„๋‹จํ•˜๋‹ˆ ์‚ฌ์šฉ์ž ์•ˆ๋‚ด ํ™”๋ฉด ๊ฐ™์€ ๊ณณ์— ํ™œ์šฉํ•ด๋ณด์…”๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”.
  • LazyColumn/Row์˜ item์— Modifier.animateItemPlacement()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด item reordering animation์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค ํ•ฉ๋‹ˆ๋‹ค.
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material.Button
import androidx.compose.material.Text
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember

var list by remember { mutableStateOf(listOf("A", "B", "C")) }
LazyColumn {
    item {
        Button(onClick = { list = list.shuffled() }) {
            Text("Shuffle")
        }
    }
    items(list, key = { it }) {
        Text("Item $it", Modifier.animateItemPlacement())
    }
}
  • BringIntoView๋ผ๋Š” ๊ฒƒ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฐพ์•„๋ณด๋‹ˆ ํ•„์š”ํ–ˆ๋˜ ๊ฒƒ์ด๋„ค์š”! Scroll์˜์—ญ ๋‚ด ํ…์ŠคํŠธ ์ž…๋ ฅ ๊ฐ™์€ ๊ฒƒ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น Composable์œ„์น˜๋กœ ์Šคํฌ๋กค์„ ์‹œํ‚ค๋Š”๊ฒŒ ์‚ฌ์‹ค์ƒ ์–ด๋ ค์› ๋Š”๋ฐ, ์ด API๋ฅผ ํ†ตํ•ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ์ง‘๋‹ˆ๋‹ค.

Kotlin 1.6.10

์ด๋ฒˆ 1.1.0 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  Kotlin 1.6.10์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ์— Compose์˜ ๋‹จ์ ์€ Kotlin ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๊ฐ•์ œํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ •๋ง ๊ธ‰ํ•œ ๋ฒ„๊ทธ ํ”ฝ์Šค๊ฐ€ ์žˆ๋Š”๋ฐ, ๋‹ค๋ฅธ ์„œ๋“œํŒŒํ‹ฐ์™€ ์ฝ”ํ‹€๋ฆฐ ๋ฒ„์ „์ด ์ถฉ๋Œํ•ด์„œ ๋ฒ„์ „์„ ์˜ฌ๋ฆฌ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์—ˆ์–ด์š”. ํ˜„์žฌ๋Š” ๊ฝค ๋งŽ์€ ์จ๋“œ ํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๋„ Kotlin ๋ฒ„์ „์„ ๋นจ๋ฆฌ ๋นจ๋ฆฌ ์˜ฌ๋ ค์ค˜์„œ ๋ฌธ์ œ๊ฐ€ ๋œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 1.6.0์—์„œ ๋นŒ๋“œ ์†๋„ ์ €ํ•˜, ํ”Œ๋Ÿฌ๊ทธ์ธ ์—๋Ÿฌ๋“ฑ ๋‹ค์–‘ํ•œ ์ด์Šˆ๊ฐ€ ์žˆ์—ˆ๋‹ค๋Š”๋ฐ, ์‚ฌ์šฉ ์ค‘์ด์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€์˜ ํ˜ธํ™˜์„ฑ์„ ๋จผ์ € ํ™•์ธํ•ด๋ณด์…”์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

profile
HOLIX Android Lead

0๊ฐœ์˜ ๋Œ“๊ธ€