๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ‘ฉ‍๐Ÿ’ป TECH

[TECH] Android Studio๋กœ ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ ํ™”๋ฉด์— ๋Œ€์‘ํ•˜๊ธฐ

by ๋ณด๋ฆฌ ์ฝง๊ตฌ๋ฉ 2023. 8. 7.

[ํ‹ฐ๋Œ] ํ‹ฐ๋Œ Android Studio๋กœ ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ ํ™”๋ฉด์— ๋Œ€์‘ํ•˜๊ธฐ
 
์•ˆ๋…•ํ•˜์„ธ์š” ํ‹ฐํ”Œ์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž ์ •์ฑ„ํ˜„์ž…๋‹ˆ๋‹ค๐Ÿ˜†๐Ÿ˜†

์ €๋Š” ํ‹ฐ๋Œ์—์„œ ๊ฐ€์žฅ ์ด์Šˆ๋˜๊ณ  ์žˆ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•ด์ƒ๋„๋ฅผ ๊ฐ€์ง„ ๊ธฐ๊ธฐ์— ๋Œ€์‘ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด

Android์— ์‹ค์ œ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ํ•ธ๋“œํฐ์˜ ๊ธฐ์ข…์„ ์ƒ๊ฐํ•˜๋ฉฐ ๊ณ ๋ฏผํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค๐Ÿค—


๐Ÿ‘ฉ‍๐Ÿ’ป ํ•ด์ƒ๋„๋ž€? 

ํ•ด์ƒ๋„๋ž€ ๊ฐ„๋‹จํžˆ ๋งํ•˜์ž๋ฉด ํ™”๋ฉด์˜ ํ”ฝ์…€(pixel)์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 1024*768์ธ ๊ฒฝ์šฐ ํ•œ ํ™”๋ฉด์— ๊ฐ€๋กœ1024๊ฐœ์˜ ์ ๊ณผ ์„ธ๋กœ768๊ฐœ์˜ ์ ์ด ๋ชจ์—ฌ์„œ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•ด์ฃผ๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ด์ƒ๋„๊ฐ€ ๋†’์„ ์ˆ˜๋ก ๋งŽ์€ ์ ๋“ค์ด ๋ชจ์—ฌ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ™”๋ฉด ๋น„์œจ๊ณผ ์—ฐ๊ด€์ด ์žˆ๊ฒ ์ฃ ?

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค device manager
์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค device manager

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

๊ฐœ๋ฐœ์„ ํ•˜์‹œ๋ฉด์„œ ๊ฐ€์žฅ ์–ด๋ ต๊ณ  ๊ณ ๋ คํ•˜์‹œ๋Š” ๋ถ€๋ถ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋Ÿฐ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ธฐ๊ธฐ๋“ค์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜์—ฌ์•ผ ํ• ๊นŒ์š”?

์˜ค๋Š˜์€ ์–ด๋–ค ๋ถ€๋ถ„์„ ๊ณ ๋ คํ•ด์„œ ๊ฐœ๋ฐœํ•ด์•ผ ์—ฌ๋Ÿฌ ๊ธฐ์ข…์— ์•Œ๋งž๊ฒŒ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ๊ฐ™์ด ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!


๐Ÿ‘ฉ‍๐Ÿ’ป ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ• ๊นŒ? 

์˜ˆ์ƒํ•˜์…จ๊ฒ ์ง€๋งŒ ๋”ฑ ์ •ํ•ด์ง„ ์ •๋‹ต์€ ์—†์Šต๋‹ˆ๋‹ค..! 

ํ•˜์ง€๋งŒ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์ž ์ƒํ™ฉ์— ๋งž์ถฐ์„œ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค๐Ÿซก

 

  • ๊ฐ€์žฅ ๋จผ์ € ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฐ”๋กœ ํ”ฝ์…€(px)๋Œ€์‹  dp๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

dp๋Š” dip๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, Density Independent Pixel('๋ฐ€๋„ ๋…๋ฆฝ ํ”ฝ์…€')์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค. ํ”ฝ์…€์˜ ๊ฒฝ์šฐ ์ด˜์ด˜ํ•œ ๊ฒฝ์šฐ์™€ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ(๋ฐ€๋„๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ) ๋‹ค๋ฅด๊ฒŒ ํ‘œ์‹œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ€๋„์— ๋…๋ฆฝ์ ์ธ dp๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

dp๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํ•ด์ƒ๋„์— ๊ด€๊ณ„์—†์ด ์ด๋ฏธ์ง€๋ฅผ ๊ฐ™์€ ๋น„์œจ๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

dp๊ฐ€ ํ•ด์ƒ๋„์— ๊ด€๊ณ„ ์—†์ด ๋™์ผํ•œ ๋น„์œจ๋กœ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ dp๋Š” 160dpi๋ฅผ ๊ฐ–๋Š” ํ™”๋ฉด์—์„œ ํ•˜๋‚˜์˜ ํ”ฝ์…€๊ณผ ๋Œ€์‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฆ‰ 160dpi ํ•ด์ƒ๋„์—์„œ 1dp๋Š” 1pixel ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  160dpi ํ•ด์ƒ๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ, ํ™”๋ฉด์˜ ํ•ด์ƒ๋„์— ๋”ฐ๋ผ 1dp์ด ๋‚˜ํƒ€๋‚ด๋Š” ํ”ฝ์…€์˜ ์ˆ˜๋Š” ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

ํ•ด์ƒ๋„์— ๋”ฐ๋ฅธ dp์™€ pixel ๊ด€๊ณ„๋ฅผ ๊ตฌํ•˜๋Š” ๊ณต์‹๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

dp = px * (160dpi / ๋‹จ๋งdpi)

px = dp * (๋‹จ๋งdpi / 160dpi)

 

*160 dpi๋Š” 3.6์ธ์น˜ ์Šคํฌ๋ฆฐ(๋ณดํ†ต 320x480)์˜ ํ•ด์ƒ๋„๋ฅผ ๊ฐ€์ง„ ์Šคํฌ๋ฆฐ์„ ๋งํ•˜๋ฉฐ 1์ธ์น˜๋‹น 160๊ฐœ์˜ ํ”ฝ์…€์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

*dpi๋ž€ 1์ธ์น˜์— ๋“ค์–ด๊ฐ€๋Š” ํ”ฝ์…€์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋‹จ์œ„ (dp,dip๊ณผ ๋‹ค๋ฅธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค!)

 

  • ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ dpi๋ณ„๋กœ ๋ ˆ์ด์•„์›ƒ์„ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๊ธฐ๊ธฐ๋งˆ๋‹ค ํ•ด์ƒ๋„๋ณ„ ๋ฐ€๋„๋ฅผ ๊ตฌํ•ด ๋Œ€์‘ํ•˜๋Š” xmlํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋Œ€์‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

 ldpi ์ €๋ฐ€๋„(120dpi) ํ™”๋ฉด์— ํ•ด๋‹น
 mdpi ์ค‘๋ฐ€๋„(160dpi) ํ™”๋ฉด์— ํ•ด๋‹น
 hdpi ๊ณ ๋ฐ€๋„(240dpi) ํ™”๋ฉด์— ํ•ด๋‹น
 xhdpi ์ดˆ๊ณ ๋ฐ€๋„(320dpi) ํ™”๋ฉด์— ํ•ด๋‹น
 xxhdpi  ์ดˆ์ดˆ๊ณ ๋ฐ€๋„(480dpi) ํ™”๋ฉด์— ํ•ด๋‹น
 xxxhdpi ์ดˆ์ดˆ์ดˆ๊ณ ๋ฐ€๋„(640dpi) ํ™”๋ฉด์— ํ•ด๋‹น

1๋ฒˆ dp์˜ ๊ฐœ๋…์„ ๋ณด๊ณ ๋„ ์–ด์งˆ์–ด์งˆ ํ–ˆ๋Š”๋ฐ 6๊ฐœ์˜ xmlํŒŒ์ผ์„ ๋งŒ๋“ค๋‹ค๋‹ˆ... ์ด๊ฑด ์ •๋ง ์ค‘๋…ธ๋™์ด์ง€ ์•Š์„๊นŒ๐Ÿ˜ต‍๐Ÿ’ซ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค resํŒŒ์ผ
ํ•ด์ƒ๋„์— ๋”ฐ๋ฅธ res ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๊ด€๋ฆฌ

 

  • ์„ธ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ dpi๋ณ„๋กœ value(dimens)๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค resํŒŒ์ผ
ํ•ด์ƒ๋„์— ๋”ฐ๋ฅธ value๊ฐ’ ์„ค์ •

์ด๊ฒƒ๋„ ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•๊ณผ ๋™์ผํ•˜์ง€๋งŒ dimens๋ฅผ ํ™œ์šฉํ•ด ๊ฐ ์š”์†Œ์˜ ํฌ๊ธฐ๋งŒ ์กฐ์ ˆํ•˜๋ฉด ๋˜๊ฒ ์ฃ ?

์•„๋ž˜๋Š” dimen ์‚ฌ์šฉ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

<TextView
            android:id="@+id/my_filter1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/size_30"
            android:layout_marginStart="@dimen/size_30"
            android:text="@string/restaurant_recommendation_tv_mood1"
            android:textSize="20sp"
            android:textColor="@color/purple_main"
            android:textStyle="bold"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

 

์ด ๋ฐ–์— ๋‹ค์–‘ํ•œ GuildLine์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์ด ์žˆ์œผ๋‚˜, ํ‹ฐ๋Œ์€ ํ˜„์žฌ dp์™€ constraintLayout๋งŒ์„ ํ™œ์šฉํ•ด์„œ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”ํ›„์— ์—ฌ๋ ฅ์ด ๋œ๋‹ค๋ฉด dimen์„ ํ™œ์šฉํ•ด layout margin๋“ฑ์„ ์กฐ์ •ํ•  ์˜ˆ์ •์— ์žˆ์Šต๋‹ˆ๋‹ค!


๐Ÿ‘ฉ‍๐Ÿ’ป ๋งˆ์น˜๋ฉฐ

์‚ฌ์‹ค ์ด๋’ค์—๋Š” ์‹ค์ œ ์‚ผ์„ฑ ํ•ธ๋“œํฐ์„ ์• ๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ ์›ํ•˜๋Š” ๋งŒํผ ๊ฐ€์ง€๊ณ ์™€์„œ ํ™œ์šฉํ•˜๊ณ  ์ฒดํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ ์œผ๋ คํ–ˆ์œผ๋‚˜

๋ถ„๋Ÿ‰๊ด€๊ณ„์ƒ๐Ÿค ๋‹ค์ŒํŽธ์— ์‹ค์ œ ์‚ผ์„ฑ ํ•ธ๋“œํฐ์„ ์• ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•ด์„œ ํ™•์ธํ•˜๊ณ  ์ ์šฉํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค:) 

 

๋‹ค์Œ ๊ธ€ ๊ธฐ๋Œ€ ๋ถ€ํƒ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค:)๐Ÿค—

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!!

๐Ÿ“ฉ Contact : wjdcogus6@gmail.com
๐Ÿ“ฒ SNS : https://www.instagram.com/chaeehyuny/