์ „์ฒด ๊ธ€ 427

์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์•„์ด์ฝ˜ ์‚ฌ์ด์ฆˆ

6๊ฐ€์ง€ ์ผ๋ฐ˜ํ™”๋œ ๋ฐ€๋„ ํ™”๋ฉดํฌ๊ธฐ dpi ์ตœ์†Œ ํฌ๊ธฐ ldpi(์ €๋ฐ€๋„) ~120dpi 426dp X 320dp mdpi(์ค‘๊ฐ„๋ฐ€๋„) ~160dpi 470dp X 320dp hdpi(๊ณ ๋ฐ€๋„) ~240dpi 640dp X 480dp xhdpi(์ดˆ๊ณ ๋ฐ€๋„) ~320dpi 960dp X 720dp xxhdpi(์ดˆ์ดˆ๊ณ ๋ฐ€๋„) ~480dpi xxxhdpi(์ดˆ์ดˆ์ดˆ๊ณ ๋ฐ€๋„) ~640dpi ํ™”๋ฉดํฌ๊ธฐ๋ณ„ ์•„์ด์ฝ˜ ์‚ฌ์ด์ฆˆ(px) ํ™”๋ฉดํฌ๊ธฐ ์ ์‘ํ˜• ์•„์ด์ฝ˜ Google Play Store ๋Ÿฐ์ฒ˜ ์•„์ด์ฝ˜ & ๋ฉ”๋‰ด ์•„์ด์ฝ˜ ์•ก์…˜๋ฐ” ์•„์ด์ฝ˜ & ์ƒํƒœํ‘œ์‹œ์ค„ ์•„์ด์ฝ˜ ํƒญ ์•„์ด์ฝ˜ & ๋Œ€ํ™” ์•„์ด์ฝ˜ & ๋ชฉ๋ก๋ณด๊ธฐ ์•„์ด์ฝ˜ ldpi 512 x 512px 36 x 36px 18 x 18px 24 x 24px mdpi 512 x 512px 48 x 48px 24 x 24px..

Dev_Study/Android 2018.02.06

1. iOS ์•ฑ ์•„์ด์ฝ˜ ์‚ฌ์ด์ฆˆ

์•ฑ์•„์ด์ฝ˜ ์‚ฌ์ด์ฆˆ(px) ์žฅ์น˜ AppStore ์•„์ด์ฝ˜ ์•ฑ ์•„์ด์ฝ˜ ์•ฑ ์‹œ์ž‘ํ™”๋ฉด ์ŠคํฌํŠธ๋ผ์ดํŠธ ์•„์ด์ฝ˜ ์„ค์ • ์•„์ด์ฝ˜ ์•Œ๋ฆผ์•„์ด์ฝ˜ ํƒ์ƒ‰๋ฐ” ์•„์ด์ฝ˜ & ๋„๊ตฌ๋ชจ์Œ ์•„์ด์ฝ˜ ํƒญ๋ฐ” ์•„์ด์ฝ˜ iPhone + 6+, 6S+, 7+, 8+, X 1024 x 1024px 180 x 180px 1242 x 2208px 120 x 120px 87 x 87px 60 x 60px 66 x 66px 75 x 75px ์ตœ๋Œ€ 144 x 96px iPhone 4, 4S, 5, 5C, 5S, 6, 6SE, 6S, 7, 8 1024 x 1024px 120 x 120px 750 x 1334px 80 x 80px 58 x 58px 40 x 40px 44p x 44px 50 x 50px ์ตœ๋Œ€ 96 x 64px ์˜ฌ๋“œ ์•„์ดํฐ 1, 2, 3 ์„ธ๋Œ€ 1024 x 10..

Dev_Study/iOS 2018.02.06

15. ํ•ธ๋“ค๋Ÿฌ (Handler)

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ UI์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ์Šค๋ ˆ๋“œ๋Š” '๋ฉ”์ธ ์Šค๋ ˆ๋“œ'๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค ์ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ด๋ฏธ UI์— ์ ‘๊ทผํ•˜๊ณ ์žˆ์œผ๋ฏ€๋กœ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ๋Š” ํ•ธ๋“ค๋Ÿฌ (Handler)๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•จ์œผ๋กœ์จ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋Š” ์ตœ์ƒ์œ„์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ์ฒด์ธ ์•กํ‹ฐ๋น„ํ‹ฐ, ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ์ž ๋“ฑ๊ณผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์œˆ๋„์šฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์‹œ์ง€ ํ(Message Queue)๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๋ฉ”์‹œ์ง€ ํ๋ฅผ ์ด์šฉํ•ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ ‡๊ฒŒ ๋ฉ”์‹œ์ง€ ํ๋ฅผ ์ด์šฉํ•ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ฒ˜๋ฆฌํ•  ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ํ•ธ๋“ค๋Ÿฌ ํด๋ž˜์Šค๋‹ค ๊ฒฐ๊ตญ ํ•ธ๋“ค๋Ÿฌ๋Š” ์‹คํ–‰ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ํŠน์ •๊ธฐ๋Šฅ์ด ์žˆ์„๋•Œ ํ˜„์žฌ ์ˆ˜ํ–‰๋˜๊ณ ..

Dev_Study/Android 2018.01.29

14. ์ด๋ฒคํŠธ

OnTouchListener : ํ„ฐ์น˜ ์ด๋ฒคํŠธ ํ™”๋ฉด์„ ์†๊ฐ€๋ฝ์œผ๋กœ ๋ˆ„๋ฅผ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ OnKeyListener : ํ‚ค ์ด๋ฒคํŠธ ํ‚คํŒจ๋“œ๋‚˜ ํ•˜๋“œ์›จ์–ด ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ GestureDetector : ์ œ์Šค์ฒ˜ ์ด๋ฒคํŠธ ํ„ฐ์น˜ ์ด๋ฒคํŠธ์ค‘์—์„œ ์ผ์ •ํŒจํ„ด์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ์ด๋ฒคํŠธ onFocusChangeListener : ํฌ์ปค์Šค ๋ทฐ๋งˆ๋‹ค ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง€๋Š” ํฌ์ปค์Šค onConfigurationChanged : ํ™”๋ฉด ๋ฐฉํ–ฅ ๋ณ€๊ฒฝ ํ™”๋ฉด์˜ ๋ฐฉํ–ฅ์ด ๊ฐ€๋กœ/์„ธ๋กœ๋กœ ๋ฐ”๋€œ์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ

Dev_Study/Android 2018.01.29

13. ํ”„๋ž˜๊ทธ๋จผํŠธ (Fragment)

ํ”„๋ž˜๊ทธ๋จผํŠธ (Fragment) Fragmentํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜์—ฌ ๋งŒ๋“ ๋‹ค ๋ถ„ํ• ๋œ ํ™”๋ฉด๋“ค์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ๊ทธ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค ์•กํ‹ฐ๋น„ํ‹ฐ์™€๋Š” ๋‹ค๋ฅด๋‹ค. ์•กํ‹ฐ๋น„ํ‹ฐ ์œ„์— ์˜ฌ๋ฆด์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์ด๋‹ค ex) ํƒญ๋ฉ”๋‰ด ํด๋ฆญ์‹œ ํ™”๋ฉด์ „ํ™˜ ----------------------------------------------------------------------------------------------------------- Fragment public final Activity getActivity() ์ด ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ํฌํ•จํ•˜๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๋ฆฌํ„ดํ•จ public final FragmentManager getFragmentManager() ์ด ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ํฌํ•จํ•˜๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ฐ์ฒด๋“ค๊ณผ ์˜์‚ฌ์†Œํ†ตํ•˜๋Š” ํ”„๋ž˜๊ทธ๋จผํŠธ ๋งค๋‹ˆ์ €๋ฅผ ๋ฆฌํ„ด..

Dev_Study/Android 2018.01.29

11. ํ† ์ŠคํŠธ (Toast)

ํ† ์ŠคํŠธ(Toast) ๊ฐ„๋‹จํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ์–ด์•ผ ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ ํ† ์ŠคํŠธ ์ƒ์„ฑ ์ฝ”๋“œ [Code] Toast.makeText(Context context, String message, int duration) ํ† ์ŠคํŠธ ์œ„์น˜ ์ง€์ • [Code] public void setGravity(int gravity, int xOffset, int yOffset) ํ† ์ŠคํŠธ ์—ฌ๋ฐฑ ์กฐ์ • [Code] public void setMargin(float horizontalMargin, float verticalMargin)

Dev_Study/Android 2018.01.26

10. ๋ฆฌ์†Œ์Šค

[/res] ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๋ฆฌ์†Œ์Šค๋Š” [/res]ํด๋” ๋ฐ‘์—์„œ ๊ด€๋ฆฌ๋œ๋‹ค ์ถ”๊ฐ€์ ์œผ๋กœ [/assets]ํด๋”๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์ˆ˜ ์žˆ๋Š”๋ฐ ๋Œ€๋ถ€๋ถ„ [/res]ํด๋”์—์„œ ๊ด€๋ฆฌ๋˜๋ฉฐ -์• ์…‹(Asset)์€ ๋™์˜์ƒ์ด๋‚˜ ์›นํŽ˜์ด์ง€์™€ ๊ฐ™์ด ์šฉ๋žด์ด ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค -๋ฆฌ์†Œ์Šค๋Š” ๋นŒ๋“œ๋˜์–ด ์„ค์น˜ํŒŒ์ผ์— ์ถ”๊ฐ€๋˜์ง€๋งŒ ์• ์…‹์€ ๋นŒ๋“œ๋˜์ง€ ์•Š๋Š”๋‹ค ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ฐฑ์‹ ๋˜๋ฉด ๊ทธ๋•Œ๋งˆ๋‹ค ๋ฆฌ์†Œ์Šค์˜ ์ •๋ณด๊ฐ€ R.javaํŒŒ์ผ์— ์ž๋™์œผ๋กœ ๊ธฐ๋ก๋˜๋ฉฐ ๊ทธ ์ •๋ณด๋Š” ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋‚ด๋ถ€์ ์ธ ํฌ์ธํ„ฐ ์ •๋ณด๊ฐ€ ๋œ๋‹ค [/res/values] ๋ฌธ์ž์—ด์ด๋‚˜ ๊ธฐ๋ณธ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ํ•ด๋‹นํ•˜๋Š” ์ •๋ณด๋“ค์ด ์ €์žฅ๋œ๋‹ค ๊ธฐ๋ณธ์ ์œผ๋กœ strings.xmlํŒŒ์ผ์•ˆ์— ๋ฌธ์ž์—ด์„ ์ €์žฅํ•œ๋‹ค [/res/drawable] ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•œ๋‹ค ํ•ด์ƒ๋„์— ๋”ฐ๋ผ [/res/drawable-mdpi], [/res/drawable-hdpi], [/..

Dev_Study/Android 2018.01.26

9. ๋งค๋‹ˆํŽ˜์ŠคํŠธ(AndroidManifest.xml)

๋งค๋‹ˆํŽ˜์ŠคํŠธ ์„ค์น˜๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์„ฑ์š”์†Œ๋‚˜ ๊ถŒํ•œ์„ ์ •์˜ ๋ชจ๋“  ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ฐ€์žฅ ์ƒ์œ„ํด๋”์— ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์ด ์žˆ์–ด์•ผํ•˜๋ฉฐ ์ด ์ •๋ณด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๊ธฐ์ „์— ์‹œ์Šคํ…œ์ด ์•Œ์•„์•ผ ํ•  ๋‚ด์šฉ๋“ค์„ ์ •์˜ํ•˜๊ณ ์žˆ๋‹ค ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ ์ฃผ์š” ์—ญํ•  -์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ž๋ฐ”ํŒจํ‚ค์ง€ ์ด๋ฆ„ ์ง€์ • -์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์š”์†Œ์— ๋Œ€ํ•œ ์ •๋ณด ๋“ฑ๋ก(์•กํ‹ฐ๋น„ํ‹ฐ, ์„œ๋น„์Šค, ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ์ž, ๋‚ด์šฉ ์ œ๊ณต์ž) -๊ฐ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค ์ด๋ฆ„ ์ง€์ • -์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ฐ€์ ธ์•ผํ•˜๋Š” ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ •๋ณด ๋“ฑ๋ก -๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ ‘๊ทผํ•˜๊ธฐ์œ„ํ•ด ํ•„์š”ํ•œ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ •๋ณด ๋“ฑ๋ก -์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ํ”„๋กœํŒŒ์ผ๋ง์„ ์œ„ํ•ด ํ•„์š”ํ•œ instrumentationํด๋ž˜์Šค ๋“ฑ๋ก -์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ์•ˆ๋“œ๋กœ์ด๋“œ API์˜ ๋ ˆ๋ฒจ ์ •๋ณด ๋“ฑ๋ก -์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ..

Dev_Study/Android 2018.01.26

8. ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ์ž(BroadcastReceiver)

๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…(Broadcasting) ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋Š” ์—ฌ๋Ÿฌ๊ฐ์ฒด์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์€๊ฒฝ์šฐ ๋ธŒ๋กœ์Šค์บ์ŠคํŒ…์„ ์‚ฌ์šฉํ•œ๋‹ค ์˜ˆ๋ฅผ๋“ค์–ด SMS๋ฅผ ์ˆ˜์‹ ํ•˜๋Š”๊ฒฝ์šฐ ๋‹จ๋ง์ด ์ฒ˜๋ฆฌํ•œ SMS์ˆ˜์‹ ์ด๋ฒคํŠธ๋ฅผ ๋‹ค๋ฅธ SMS์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์—๊ฒŒ ์•Œ๋ ค์ค„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ๋Š” ๋‹จ๋ง์ „์ฒด์— ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š”๊ฒƒ์œผ๋กœ ๊ธ€๋กœ๋ฒŒ ์ด๋ฒคํŠธ(Gloval Event)๋ผ๊ณ  ํ•œ๋‹ค ์ด๋ ‡๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ… ๋ฉ”์‹œ์ง€๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ์ž(BroadcastReceiver)๋ฅผ ์ด์šฉํ•ด ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ์ž๋Š” BroadcastReceiverํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ณ  onReceive()๋ฅผ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค ์ด ๋ฉ”์†Œ๋“œ๋Š” ์›ํ•˜๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ฉ”์‹œ์ง€๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค ์ˆ˜์‹ ํ•˜๊ณ ์‹ถ์€ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ ๋ฉ”์‹œ์ง€๋Š” ์ธํ…ํŠธํ•„ํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋งค๋‹ˆํŽ˜์ŠคํŠธ์— ๋“ฑ๋กํ•œ๋‹ค S..

Dev_Study/Android 2018.01.26
728x90
๋ฐ˜์‘ํ˜•