๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
2023 ์•ˆ๋“œ๋กœ์ด๋“œ/์•ˆ๋“œ๋กœ์ด๋“œ ์Šคํ„ฐ๋””

unit1- Android์•ฑ์— ์ด๋ฏธ์ง€ ์ถ”๊ฐ€

by hyeonha 2022. 12. 24.

๋ชฉ์ฐจ

    3. ์•ฑ ์„ค์ • 

    Android ๊ธฐ๊ธฐ๋Š” ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ๋กœ ์ œ๊ณต๋˜๋ฉฐ ์ด๋Ÿฌํ•œ ํ™”๋ฉด์€ ํ”ฝ์…€ ํฌ๊ธฐ๋„ ๋‹ค๋ฅด๋‹ค.

    ์ฆ‰ ํ•œ ๊ธฐ๊ธฐ์—์„œ๋Š” ์ œ๊ณฑ ์ธ์น˜๋‹น 160ํ”ฝ์…€์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์—์„œ๋Š” ๊ฐ™์€ ๊ณต๊ฐ„์— 480ํ”ฝ์…€์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ํ”ฝ์…€ ๋ฐ€๋„์˜ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์œผ๋ฉด ์‹œ์Šคํ…œ์ด ์ด๋ฏธ์ง€๋ฅผ ํ™•๋Œ€ํ•˜์—ฌ ํ๋ฆฟํ•œ ์ด๋ฏธ์ง€, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ํฐ ์ด๋ฏธ์ง€ ๋˜๋Š” ๋ถ€์ ์ ˆํ•œ ํฌ๊ธฐ์˜ ์ด๋ฏธ์ง€๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. 

     

    Android ์‹œ์Šคํ…œ์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ํฐ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

    ์‚ฌ์ง„ ๋ฐ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ drawble-nodpi ํด๋”์— ๋ฐฐ์น˜ํ•ด์•ผ ํฌ๊ธฐ ์กฐ์ ˆ ๋™์ž‘์ด ์ค‘์ง€๋œ๋‹ค. 

     

    4. ์ด๋ฏธ์ง€ ์ปดํฌ์ €๋ธ” ์ถ”๊ฐ€

     

    https://developer.android.com/codelabs/basic-android-kotlin-compose-add-images?continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-1-pathway-3%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-add-images#3

     

    Android ์•ฑ์— ์ด๋ฏธ์ง€ ์ถ”๊ฐ€  |  Android Developers

    ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜๋กœ ๊ฐ„๋‹จํ•œ ์•ฑ์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

    developer.android.com

     

    Jetpack Compose ์˜ ๋ฆฌ์†Œ์Šค

    ๋ฆฌ์†Œ์Šค๋Š” ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ถ”๊ฐ€ํŒŒ์ผ๊ณผ ์ •์ ์ธ ์ฝ˜ํ…์ธ ์œผ๋กœ ๋น„ํŠธ๋งต, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค (UI) ๋ฌธ์ž์—ด, ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ง€์นจ ๋“ฑ์ด ์žˆ๋‹ค. 

    ์ด๋ฏธ์ง€์™€ ๋ฌธ์ž์—ด ๋“ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฆฌ์†Œ์Šค๋Š” ๋…๋ฆฝ์ ์ธ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ญ์ƒ ์ฝ”๋“œ๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌํ•ด์•ผํ•œ๋‹ค. Android๋Š” ๋Ÿฐํƒ€์ž„์— ํ˜„์žฌ ๊ตฌ์„ฑ์„ ๊ทผ๊ฑฐ๋กœ ์ ์ ˆํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ™”๋ฉด ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ UI ๋ ˆ์ด์•„์›ƒ์„ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ์–ธ์–ด ์„ค์ •์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. 

     

    ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃนํ™” 

    ํ•ญ์ƒ ํ”„๋กœ์ ํŠธ์˜ res/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ํŠน์ • ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๊ฐ ์œ ํ˜•์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐฐ์น˜ํ•ด์•ผํ•œ๋‹ค. 

     

    ์œ„์˜ ์˜ˆ์‹œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด res/ ๋””๋ ›ํ„ฐ๋ฆฌ์—๋Š” ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค์šฉ drawable ๋””๋ ‰ํ„ฐ๋ฆฌ, ๋Ÿฐ์ฒ˜ ์•„์ด์ฝ˜์šฉ mipmap/ ๋””๋ ‰ํ„ฐ๋ฆฌ

    . ๋ฌธ์ž์—ด ๋ฆฌ์†Œ์Šค์šฉ values/ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ํฌํ•จ๋œ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. 

     

    ๋ฆฌ์†Œ์Šค ์•ก์„ธ์Šค 

    JetPack Compose๋Š” Android์— ์ •์˜๋œ ๋ฆฌ์†Œ์Šค์— ์—‘์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ R ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑ๋œ ๋ฆฌ์†Œ์Šค ID๋กœ ๋ฆฌ์†Œ์Šค์— ์—‘์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค. 

    R ํด๋ž˜์Šค๋Š” Android์—์„œ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ํด๋ž˜์Šค๋กœ, ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ๋ชจ๋“  ๋ฆฌ์†Œ์†Œ์˜ ID๋ฅผ ํฌํ•จํ•œ๋‹ค.

    ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ฆฌ์†Œ์Šค ID๋Š” ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๋™์ผํ•˜๋‹ค. 

    ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ „ ํŒŒ์ผ ๊ณ„์ธต ๊ตฌ์กฐ์˜ ์ด๋ฏธ์ง€๋Š” R.drawable.graphic์œผ๋กœ ์—‘์„ธ์Šค๊ฐ€๋Šฅํ•˜๋‹ค.

     

     

    ์•ฑ ์ ‘๊ทผ์„ฑ ํ™•์ธ 

    ์žฅ์• ๊ฐ€ ์žˆ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๋น„๋กฏํ•œ ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ๋” ์‰ฝ๊ฒŒ ํƒ์ƒ‰ํ•˜๊ณ  ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

    Android ์ŠคํŠœ๋””์˜ค์—์„œ ์ œ๊ณตํ•˜๋Š” ํžŒํŠธ์™€ ๊ฒฝ๊ณ ๋ฅผ ํ†ตํ•ด ์•ฑ์˜ ์ ‘๊ทผ์„ฑ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฝ˜ํ…์ธ  ์„ค๋ช…์€ UI์š”์†Œ์˜ ๋ชฉ์ ์„ ์ •์˜ํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด ์•ฑ์ด TalkBack์œผ๋กœ ๋” ์œ ์šฉํ•ด์ง„๋‹ค. TalkBack์€ Android ๊ธฐ๊ธฐ์— ํฌํ•จ๋œ Google ์Šคํฌ๋ฆฐ ๋ฆฌ๋”์ด๋‹ค. TalkBack์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ์Œ์„ฑ ํ”ผ๋“œ๋ฐฑ์œผ๋กœ ์‚ฌ์šฉ์ž๋Š” ํ™”๋ฉด์„ ๋ณด์ง€ ์•Š๊ณ ๋… ๊ธฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

     

    ๊ทธ๋Ÿฌ๋‚˜ ์ด ์•ฑ์˜ ์ด๋ฏธ์ง€๋Š” ์žฅ์‹๋ชฉ์ ์œผ๋กœ๋งŒ ํฌํ•จ๋œ๋‹ค. 

    ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋˜๋Š” ์ฝ˜ํ…์ธ  ์„ค๋ช…์„ ์„ค์ •ํ•˜๋Š” ๋Œ€์‹  ์ด๋ฏธ์ง€์˜ contentDescription ์ธ์ˆ˜๋ฅผ null๋กœ ์„ค์ •ํ•˜์—ฌ TalkBack์ด Image ์ปดํฌ์ €๋ธ”์„ ๊ฑด๋„ˆ๋›ฐ๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค. 

    Image(painter = image,contentDescription = null)
    

     

    @Composable
    fun BirthdayGreetingWithImage(message: String, from: String) {
        val image = painterResource(R.drawable.androidparty)
        Image(painter = image,contentDescription = null)
    
    }
    

    5. Box ๋ ˆ์ด์•„์›ƒ ์ถ”๊ฐ€ 

    Compose์˜ ์„ธ ๊ฐ€์ง€ ๊ธฐ๋ณธ ํ‘œ์ค€ ๋ ˆ์ด์•„์›ƒ ์š”์†Œ๋Š” Column , Row, Box ์ปดํฌ์ €๋ธ”์ด๋‹ค. 

    Box ๋ ˆ์ด์•„์›ƒ์€ Compose์˜ ํ‘œ์ค€ ๋ ˆ์ด์•„์›ƒ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. Box ๋ ˆ์ด์•„์›ƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์„œ๋กœ ์œ„์— ์Œ“๋Š”๋‹ค. 

    Box ๋ ˆ์ด์•„์›ƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ํฌํ•จ๋œ ์š”์†Œ์˜ ํŠน์ • ์ •๋ ฌ๋„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

     

     

    Box๋Š” ์Œ“๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•˜์…จ์Œ!

     

     

     

      Box {
            Image(painter = image,
                contentDescription = null)
            BirthdayGreetingWithText(message=message,from=from)
        }

     

    Image ์œ„์— Text ๋ถ€๋ถ„์„ ์Œ“๋Š”๋‹ค

     

    6. ์ด๋ฏธ์ง€ ์ปดํฌ์ €๋ธ”์˜ ์œ„์น˜ ์ง€์ • ๋ฐ ํฌ๊ธฐ ์กฐ์ • 

    ์ด๋ฏธ์ง€๋ฅผ ์ „์ฒด ํ™”๋ฉด ํฌ๊ธฐ๋กœ ์กฐ์ •ํ•˜์—ฌ ์•ฑ์„ ๊พธ๋ฏผ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Modifier ๋ฐ ContentsScale ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

     

    Modifier 

    Jetpack Compose UI ์š”์†Œ๋ฅผ ์žฅ์‹ํ•˜๊ฑฐ๋‚˜ ์ด ์š”์†Œ์— ๋™์ž‘์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. 

    ํ–‰์ด๋‚˜ ํ…์ŠคํŠธ, ๋ฒ„ํŠผ์— ๋ฐฐ๊ฒฝ์ด๋‚˜ ํŒจ๋”ฉ, ๋™์ž‘์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ์ปดํฌ์ €๋ธ”์ด Modifier ์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ—ˆ์šฉํ•ด์•ผํ•œ๋‹ค. 

    Image(painter = image,
        contentDescription = null,
    modifier = Modifier
        .fillMaxHeight())

    ์ปดํฌ์ €๋ธ”์˜ ๋†’์ด๊ฐ€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋†’์ด๋กœ ์„ค์ •๋œ๋‹ค. 

    modifier = Modifier
        .fillMaxHeight()
        .fillMaxWidth())

    ์ฝ˜ํ…์ธ  ์กฐ์ • 

    ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ• -> ์ด๋ฏธ์ง€์˜ ๋ฐฐ์œจ ์œ ํ˜•์„ ์กฐ์ •ํ•˜์—ฌ ์ „์ฒดํ™”๋ฉด์ด ๋˜๋„๋ก ํ•ด์•ผํ•œ๋‹ค.

    ContentScale ์œ ํ˜• 

    https://developer.android.com/reference/kotlin/androidx/glance/layout/ContentScale 

     

    ContentScale  |  Android Developers

    androidx.car.app.managers

    developer.android.com

    ContentScale.Crop ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐฐ์œจ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋Š” ์ด๋ฏธ์ง€์˜ ๋„ข์ด์™€ ๋†’์ด๊ฐ€ ์ƒ์‘ํ•˜๋Š” ํ™”๋ฉด์˜ ํฌ๊ธฐ์™€ ๊ฐ™๊ฑฐ๋‚˜ ํฌ๋„๋ก ๊ฐ€๋กœ์„ธ๋กœ ๋น„์œจ์„ ์œก์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ๊ท ์ผํ•˜๊ฒŒ ์กฐ์ •ํ•œ๋‹ค. 

     

    Box {
        Image(painter = image,
            contentDescription = null,
        modifier = Modifier
            .fillMaxHeight()
            .fillMaxWidth(),
            contentScale = ContentScale.Crop
        )

    7. ํ…์ŠคํŠธ ์ •๋ ฌ ๋ฐ ํŒจ๋”ฉ ์ถ”๊ฐ€ 

     

    modifier = Modifier
        .fillMaxWidth() // ์ปดํฌ์ €๋ธ”์˜ ๋„ˆ๋น„๊ฐ€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋„ˆ๋น„๋กœ ์„ค์ •๋œ๋‹ค.
        .wrapContentWidth(Alignment.Start)
    // wrapContentWidth : ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ํ™”๋ฉด ๋„ˆ๋น„(๋˜๋Š” ์ƒ์œ„ ๋„ˆ๋น„)์— ๋งž์ถฐ ์ปดํฌ์ €๋ธ”์ด ๋ž˜ํ•‘๋˜๊ณ  ์ •๋ ฌ๋œ๋‹ค.
    // Alignment.Start : ํ…์ŠคํŠธ ์ปดํฌ์ €๋ธ” ๋˜๋Š” ํ•˜์œ„ ์š”์†Œ๊ฐ€ ํ™”๋ฉด์˜ ์‹œ์ž‘ ๋ถ€๋ถ„ ๋˜๋Š” ์ƒ์œ„ ์š”์†Œ์— ๋งž์ถฐ ์ •๋ ฌ๋œ๋‹ค.
    
    

     

    ์ฐจ์ด๋ฅผ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋„ค..

     

    padding 

    UI์š”์†Œ๋Š” ์ฝ˜ํ…์ธ  ์ฃผ์œ„๋กœ ๋ž˜ํ•‘์ด ๋œ๋‹ค. ๋„ˆ๋ฌด ๋น„์ข๊ฒŒ ๋ž˜ํ•‘๋˜์ง€ ์•Š๋„๋ก ๊ฐ ๋ฉด์˜ ํŒจ๋”ฉ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 

    ํŒจ๋”ฉ์€ Modifier๋กœ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ๋ชจ๋“  ์ปดํฌ์ €๋ธ”์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปดํฌ์ €๋ธ”์˜ ๊ฐ ๋ฉด์˜ ๊ฒฝ์šฐ padding ์ˆ˜์ •์ž๋Š” ํŒจ๋”ฉ ๊ฐ’์„ ์ •์˜ํ•˜๋Š” ์„ ํƒ์  ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

    8. ์ ์ ˆํ•œ ์ฝ”๋“œ ์‚ฌ๋ก€ ์ฑ„ํƒ 

    ๋ฒˆ์—ญ

    ํ•˜๋“œ์ฝ”๋”ฉ ๋ฌธ์ž์—ด : ์•ฑ ์ฝ”๋“œ์— ์ง์ ‘ ์ž‘์„ฑ๋œ ๋ฌธ์ž์—ด 

    ํ•˜๋“œ์ฝ”๋”ฉ ๋ฌธ์ž์—ด๋กœ ์ธํ•ด ์•ฑ์„ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ๋ฒˆ์—ญํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ต๊ณ  ์•ฑ์˜  ๋‹ค๋ฅธ ์œ„์น˜์—์„œ ๋ฌธ์ž์—ด์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ๋” ํž˜๋“ค๋‹ค. -> ๋ฌธ์ž์—ด์„ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ๋กœ ์ถ”์ถœํ•˜์—ฌ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ 

    ์ฝ”๋“œ์—์„œ ๋ฌธ์ž์—ด์„ ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋Š” ๋Œ€์‹ 

    ๋ฌธ์ž์—ด์„ ํŒŒ์ผ์— ๋„ฃ๊ณ  ๋ฌธ์ž์—ด ๋ฆฌ์†Œ์Šค์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•œ ํ›„ ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค ์ด๋ฆ„์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ด๋ฆ„์€ ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ๋ฒˆ์—ญํ•˜๋”๋ผ๋„ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋œ๋‹ค. 

     

    strings.xml ํŒŒ์ผ์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์—์„œ ๋ณด๋Š” ๋ฌธ์ž์—ด ๋ชฉ๋ก์ด ์žˆ๋‹ค. ์•ฑ ์ด๋ฆ„๋„ ๋ฌธ์ž์—ด ๋ฆฌ์†Œ์Šค์ป. 

    ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ํ•œ ๊ณณ์— ๋ฐฐ์น˜ํ•˜๋ฉด ์•ฑ์˜ ๋ชจ๋“  ํ…์ŠคํŠธ๋ฅผ ๋” ์‰ฝ๊ฒŒ ๋ฒˆ์—ญํ•˜๊ณ  ์•ฑ์˜ ๋‹ค์–‘ํ•œ ๋ถ€๋ถ„์—์„œ ๋ฌธ์ž์—ด์„ ๋” ์‰ฝ๊ฒŒ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

     

    9. ๋„์ „ ๊ณผ์ œ

    Alignment.Horizontally

    Alighment ๋ž€?

    Jetpack Compose์˜ Alignment๋ž€ View์˜ ์ •๋ ฌ์„ ์ง€์›ํ•ด์ฃผ๋Š” ๋ณ€์ˆ˜์ด๋‹ค. ์ฆ‰, ๋ชจ๋“  View๊ฐ€ ๋™์ผํ•œ x์ถ• ํ˜น์€ y์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋˜๋„๋ก ๋งŒ๋“œ๋Š” ๋ณ€์ˆ˜์ด๋‹ค. 

     

    Column์˜ Alighment 

    Column์˜ ์ž์‹ View๋“ค์€ ์ˆ˜์ง์œผ๋กœ ๋ฐฐ์น˜๋˜๋ฏ€๋กœ ์ˆ˜ํ‰์œผ๋กœ ์ •๋ ฌ(horizontal Alignment) ์ด ์ง€์›๋˜๋Š”๋ฐ  

    ์ˆ˜ํ‰ ์ •๋ ฌ์€ ๋ชจ๋“  ์ž์‹ View๋“ค์˜ x์œ„์น˜๊ฐ€ ๋™์ผํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ์ •๋ ฌ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ™์€ y์ถ• ์ƒ์— ์ •๋ ฌ๋œ๋‹ค. 

     

    Column์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Alignment์˜ ์ข…๋ฅ˜

    Alignment.Start(์™ผ์ชฝ ์ •๋ ฌ)

    Alignment.CenterHorizontally (์ค‘์•™ ์ •๋ ฌ)

    Alignment.End(์˜ค๋ฅธ์ชฝ ์ •๋ ฌ)

     

    Column (horizontalAlignment = Alignment.CenterHorizontally)

     

    ์š”์•ฝ

    Android ์ŠคํŠœ๋””์˜ค์˜ Resource Manager ํƒญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ์ง€์™€ ๊ธฐํƒ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

    Image ์ปดํฌ์ €๋ธ”์€ ์•ฑ์— ์ด๋ฏธ์ง€๋ฅผ ํ‘œ์‹œํ•˜๋Š” UI์š”์†Œ์ด๋‹ค.

    Image ์ปดํฌ์ €๋ธ”์€ ์ฝ˜ํ…์ธ  ์„ค๋ช…์ด ์žˆ์–ด์•ผ ์•ฑ์˜ ์ ‘๊ทผ์„ฑ์ด ๋†’์•„์ง„๋‹ค.

    ์ƒ์ผ ์ถ•ํ•˜ ๋ฉ”์‹œ์ง€์™€ ๊ฐ™์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋˜๋Š” ํ…์ŠคํŠธ๋Š” ์•ฑ์„ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ์‰ฝ๊ฒŒ ๋ฒˆ์—ญํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฌธ์ž์—ด ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”์ถœํ•ด์•ผํ•œ๋‹ค.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    728x90