๋ชฉ์ฐจ
6. ์ด๋ฏธ์ง ์ปดํฌ์ ๋ธ์ ์์น ์ง์ ๋ฐ ํฌ๊ธฐ ์กฐ์
์ด๋ฏธ์ง๋ฅผ ์ ์ฒด ํ๋ฉด ํฌ๊ธฐ๋ก ์กฐ์ ํ์ฌ ์ฑ์ ๊พธ๋ฉฐ๋ณด์! ์ด๋ฅผ ์ํด Modifier ๋ฐ ContentScale ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ค.
์์ ์
์์ ์๋ Jetpack Compose UI์์๋ฅผ ์ฅ์ํ๊ฑฐ๋ ์ด ์์์ ๋์์ ์ถ๊ฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
์๋ฅผ ๋ค์ด ํ์ด๋ ํ ์คํธ, ๋ฒํผ์ ๋ฐฐ๊ฒฝ์ด๋ ํจ๋ฉ, ๋์์ ์ถ๊ฐํ ์ ์๋ค. ์ด๋ฅผ ์ค์ฅํ๋ ค๋ฉด ์ปดํฌ์ ๋ธ์ด ์์ ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ํ์ฉํด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด Text ์ปดํฌ์ ๋ธ์๋ ๋ฐฐ๊ฒฝ ์์์ ๋ น์์ผ๋ก ๋ณ๊ฒฝํ๋ Modifier ์ธ์๊ฐ ์๋ค.
Text(
text = "Hello, World!",
// Solid element background color
modifier = Modifier.background(color = Color.Green)
)
์ด์ Image ์ปดํฌ์ ๋ธ์ Modifier ์ธ์๋ฅผ ์ถ๊ฐํด๋ณด์
์ปดํฌ์ ๋ธ์ ๋์ด๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต๋ ๋์ด๋ก ์ค์ ๋๋ค.
- BirthdayGreetingWithImage() ํจ์์์ Image ์ปดํฌ์ ๋ธ์ modifier๋ผ๋ ๋ ๋ค๋ฅธ ์ด๋ฆ์ ์ธ์๋ฅผ ์ถ๊ฐํ๊ณ Modifier.fillMaxHeight() ๊ฐ์ ์ ๊ณตํ๋ค.
@Composable
fun BirthdayGreetingWithImage(message: String,from: String) {
val image = painterResource(R.drawable.androidparty)
//Box ๋ ์ด์์ ์ถ๊ฐ
Box {
Image(
painter = image,
contentDescription = null,
modifier = Modifier.fillMaxHeight()
)
BirthdayGreetingWithText(message = message, from = from)
}
}
Android ์คํ๋์ค์์ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด
androidx.compose.foundation.layout.fillMaxHeight ํจ์๋ฅผ ๊ฐ์ ธ์จ๋ค.
2. .fillMaxWidth() ํจ์๋ฅผ ์์ ์์ ์ถ๊ฐํ๋ค.
ํ๋ฒ์ ๋ ์ด์์ ์์ ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์์ ์ ํธ์ถ์ ํจ๊ป ์ฐ๊ฒฐํ ์ ์๋ค.
Android ์คํ๋์ค์์ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด
androidx.compose.foundation.layout.fillMaxWidth ํจ์๋ฅผ ๊ฐ์ ธ์จ๋ค.
์ฝํ ์ธ ์กฐ์
์ด์ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ๋ด๋ ์ด๋ฏธ์ง์ ๋ฐฐ์จ ์ ํ์ ์กฐ์ ํ์ฌ ์ ์ฒด ํ๋ฉด์ด ๋๋๋ก ํด์ผ ํ๋ค.
์ฌ๋ฌ ContentScale ์ ํ์ ์ฌ์ฉํ๋ค. ContentScale.Crop ๋งค๊ฐ๋ณ์ ๋ฐฐ์จ์ ์ฌ์ฉํ๋ค.
์ด๋ ์ด๋ฏธ์ง์ ๋๋น์ ๋์ด๊ฐ ๋ค์ ์ด๋ฏธ์ง์ ๊ฐ์ด ์์ํ๋ ํ๋ฉด์ ํฌ๊ธฐ์ ๊ฐ๊ฑฐ๋ ํฌ๋๋ก ๊ฐ๋ก ์ธ๋ก ๋น์จ์ ์ ์งํ๊ธฐ ์ํด ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ฅผ ๊ท ์ผํ๊ฒ ์กฐ์ ํ๋ค.
Image(
painter = image,
contentDescription = null,
modifier = Modifier
.fillMaxHeight()
.fillMaxWidth(),
contentScale = ContentScale.Crop
)
1. Image์ ContentScale ์ธ์ ์ถ๊ฐํ๊ธฐ
2.Android ์คํ๋์ค์์ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด androidx.compose.ui.layout.ContentScale ์์ฑ์ ๊ฐ์ ธ์จ๋ค.
์ด๋ฏธ์ง ๋ฏธ๋ฆฌ๋ณด๊ธฐ
7. ํ ์คํธ ์ ๋ ฌ ๋ฐ ํจ๋ฉ ์ถ๊ฐ
์ด์ ๋ฌธ์ ๋ฉ์์ง์ ํจ๋ฉ์ ์ถ๊ฐํ๊ณ ๋ฉ์์ง๋ฅผ ์ ๋ ฌํ์ฌ ์ฑ์ ๋ ์๋ฆ๋ต๊ฒ ๋ง๋ ๋ค.
@Composable
fun BirthdayGreetingWithText(message: String, from: String) {
Column{
Text(
text = message,
fontSize = 32.sp,
modifier = Modifier
.fillMaxWidth()
.wrapContentWidth(Alignment.Start)
)
Text(
text = from,
fontSize = 24.sp
)
}
1. Text ์ปดํฌ์ ๋ธ์ธ ์์ผ๋ฉ์์ง๋ฅผ ์ฐพ๋๋ค.
2. Modifier.fillMaxWidth() ๊ฐ์ ํ ๋นํ๋ค. -> ์ปดํฌ์ ๋ธ์ ๋๋น๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต๋ ๋๋น๋ก ์ค์ ๋๋ค.
3. .wrapContentWidth()๋ฅผ Modifier ์ ์ฐ๊ฒฐํ๋ค. -> ์ฌ์ฉ๊ฐ๋ฅํ ํ๋ฉด ๋๋น(๋๋ ์์ ๋๋น) ์ ์ปดํฌ์ ๋ธ์ด ๋ํ๋๊ณ ์ ๋ ฌ๋๋ค.
4. .wrapContentWidth() ํจ์์ Alignment.Start ์ธ์๋ฅผ ์ ๋ฌํ๋ค. -> Text ์ปดํฌ์ ๋ธ ๋๋ ํ์ ์์๊ฐ ํ๋ฉด์ ์์ ๋ถ๋ถ ๋๋ ์์ ์์์ ๋ง์ถฐ์ ์ ๋ ฌ๋๋ค.
compose.ui ํจํค์ง์์ androidx.compose.ui.Alignment ์์ฑ์ ๊ฐ์ ธ์จ๋ค.
ํจ๋ฉ
UI์์๋ ์ฝํ ์ธ ์ฃผ์๋ก ๋ํ๋๋ค. ๋๋ฌด ๋น์ข๊ฒ ๋ํ๋์ง ์๋๋ก ๊ฐ ๋ฉด์ ํจ๋ฉ ๊ฐ์ ์ง์ ํ ์ ์๋ค.
ํจ๋ฉ์ ์์ ์(modifier)๋ก ์ฌ์ฉ๋๋ฏ๋ก ๋ชจ๋ ์ปดํฌ์ ๋ธ์ ์ ์ฉํ ์ ์๋ค. ์ปดํฌ์ ๋ธ์ ๊ฐ ๋ฉด์ ๊ฒฝ์ฐ padding ์์ ์๋ ํจ๋ฉ ๊ฐ์ ์ ์ํ๋ ์ ํ์ ์ธ์๋ฅผ ์ฌ์ฉํ๋ค.
1. Modifier์ .padding() ํจ์ํธ์ถ์ ์ฐ๊ฒฐํ๊ณ 16.dp๋ก ์ค์ ๋ start๋ผ๋ ์ธ์์ 16.dp๋ผ๊ณ ์ค์ ๋ top์ด๋ผ๋ ์ธ์๋ฅผ ์ ๋ฌํ๋ค.
Text(
text = message,
fontSize = 36.sp,
modifier = Modifier
.fillMaxWidth()
.wrapContentWidth(Alignment.Start)
.padding(start = 16.dp, top = 16.dp)
)
import androidx.compose.ui.unit.dp
2. Android ์คํ๋์ค์์ ์ด๋ฌํ ํจํค์ง๋ฅผ ์๋์ผ๋ก ๊ฐ์ ธ์ค์ง ์์ผ๋ฉด ์๋์ผ๋ก ๊ฐ์ ธ์จ๋ค.
androidx.compose.foundation.layout.padding
3. ํ์ธ
4. ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ช ์ ํ๋ฉด ๋ ๋ถ๋ถ์ ๋ง์ถฐ์ ์ ๋ ฌํ๋ค. ๋ํ ์์๊ณผ ๋ ๋ถ๋ถ์ ํจ๋ฉ 16.dp๋ฅผ ์ถ๊ฐํ๋ค.
8. ์ ์ ํ ์ฝ๋ ์ฌ๋ก ์ฑํ
๋ฒ์ญ
์ฑ์ ์์ฑํ ๋๋ ํน์ ์์ ์ ๋ค๋ฅด์ธ์ด๋ก ๋ฒ์ญ๋ ์ ์์์ ๊ธฐ์ตํด์ผํ๋ค.
String ๋ฐ์ดํฐ ์ ํ์ " Happy Birthday, Sam!" ๊ณผ ๊ฐ์ ์ผ๋ จ์ ๋ฌธ์์ด๋ค. ํ๋ ์ฝ๋ฉ ๋ฌธ์์ด์ ์ฑ ์ฝ๋์ ์ง์ ์์ฑ๋ ๋ฌธ์์ด์ด๋ค. ํ๋ ์ฝ๋ฉ ๋ฌธ์์ด๋ก ์ธํด ์ฑ์ ๋ค๋ฅธ ์ธ์ด๋ก ๋ฒ์ญํ๊ธฐ๊ฐ ๋ ์ด๋ ต๊ณ ์ฑ์ ๋ค๋ฅธ ์์น์์ ๋ฌธ์์ด์ ์ฌ์ฌ์ฉํ๊ธฐ๊ฐ ๋ ํ๋ค๋ค. ๋ฌธ์์ด์ ๋ฆฌ์์ค ํ์ผ๋ก ์ถ์ถํ์ฌ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ๊ฐ๋ฅํ๋ค.
์ฝ๋์์ ๋ฌธ์์ด์ ํ๋์ฝ๋ฉํ๋ ๋์ ๋ฌธ์์ด์ ํ์ผ์ ๋ฃ๊ณ ๋ฌธ์์ด ๋ฆฌ์์ค์ ์ด๋ฆ์ ์ง์ ํ ํ ๋ฌธ์์ด์ ์ฌ์ฉํ ๋๋ง๋ค ์ด๋ฆ์ ์ฌ์ฉํ๋ค. ์ด๋ฆ์ ๋ฌธ์์ด์ ๋ณ๊ฒฝํ๊ฑฐ๋ ๋ค๋ฅธ ์ธ์ด๋ก ๋ฒ์ญํ๋๋ผ๋ ๋์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค.
- MainActivity.kt ํ์ผ์์ onCreate() ํจ์๋ก ์คํฌ๋กคํฉ๋๋ค. ์์ผ ์ถํ ๋ฉ์์ง Happy Birthday Sam! ๋ฌธ์์ด์ ์ ํํฉ
- ํ๋ฉด ์ผ์ชฝ์ ์๋ ์ ๊ตฌ๋ฅผ ํด๋ฆญํ๋ค.
- Extract string resource๋ฅผ ์ ํํฉ๋๋ค.
์ด์ ํ๋์ฝ๋ฉ ๋ฌธ์์ด์ด stringResource() ํจ์๋ก ๋์ฒด๋๋ค.
Content {
HappyBirthdayTheme {
// A surface container using the 'background' color from the theme
Surface(color = MaterialTheme.colors.background){
BirthdayGreetingWithImage(message = getString(R.string.happy_birthday_text), from = "-from Emma")
}
}
7. Project ์ฐฝ์์ app > res> values > strings.xml ๊ฒฝ๋ก์ strings.xml์ ์ด๋ฉด Android ์คํ๋์ค์ happy_birthday_text ๋ผ๋ ๋ฌธ์์ด ๋ฆฌ์์ค๊ฐ ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
8. ๋์ผํ ๋จ๊ณ์ ๋ฐ๋ผ Text ์ปดํฌ์ ๋ธ์ ํ ์คํธ๋ฅผ ์ถ์ถํ๋ค.
@Preview(showBackground = true)
@Composable
fun BirthdayCardPreview() {
HappyBirthdayTheme {
BirthdayGreetingWithImage(message = "Happy Birthday Sam!", stringResource(R.string.signature_text))
}
}
'2023 ์๋๋ก์ด๋ > ์๋๋ก์ด๋ ์คํฐ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
10. ์๋ฃจ์ ์ฝ๋ ๊ฐ์ ธ์ค๊ธฐ ~ 11. ๊ฒฐ๋ก (0) | 2022.11.16 |
---|---|
Android ์ฑ์ ์ด๋ฏธ์ง ์ถ๊ฐ [ ๋์ ๊ณผ์ ] (0) | 2022.11.16 |
Android ์ฑ์ ์ด๋ฏธ์ง ์ถ๊ฐ ~5 (0) | 2022.11.16 |
๊ธฐ๋ณธ ๋ ์ด์์ ๋ง๋ค๊ธฐ (0) | 2022.11.16 |
์ฒซ Android ์ฑ ๋ง๋ค๊ธฐ (0) | 2022.11.15 |