๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Study/Android

(18)
[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 10. ์‹ค์ „ํ”„๋กœ์ ํŠธ(3) - ์ „์ž์•ก์ž ์‹ค์ „ ํ”„๋กœ์ ํŠธ ์‹ค์Šต - ์ „์ž ์•ก์ž ์ฃผ์š”๊ตฌ์„ฑ - ํ”„๋ž˜๊ทธ๋จผํŠธ๋ผ๋Š” UI ์กฐ๊ฐ์œผ๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ํ”„๋ž˜๊ทธ๋จผํŠธ๋“ค์„ ์ขŒ์šฐ๋กœ ์Šฌ๋ผ์ด๋“œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ทฐํŽ˜์ด์ €ViewPager๋ฅผ ์‚ฌ์šฉ - ์‚ฌ์ง„์ด๋ฏธ์ง€ ๋กœ๋”ฉ์— Glide ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉ - timer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ์Šฌ๋ผ์ด๋“œ ๋˜๊ฒŒ ํ•จ 1. ํ”„๋กœ๋ฐ”์ด๋” ์‚ฌ์šฉ ์ฝ˜ํ…์ธ  ํ”„๋กœ๋ฐ”์ด๋” - ์•ฑ์˜ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์„ ๋‹ค๋ฅธ ์•ฑ์— ํ—ˆ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ - ํ”„๋กœ๋ฐ”์ด๋”๋ฅผ ์ด์šฉํ•˜์—ฌ ์‚ฌ์ง„ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๋Š” ์ˆœ์„œ โ‘  ์‚ฌ์ง„ ๋ฐ์ดํ„ฐ๋Š” ์™ธ๋ถ€ ์ €์žฅ์†Œ์— ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์™ธ๋ถ€ ์ €์žฅ์†Œ ์ฝ๊ธฐ ๊ถŒํ•œ์„ ์•ฑ์— ๋ถ€์—ฌ โ‘ก ์™ธ๋ถ€ ์ €์žฅ์†Œ ์ฝ๊ธฐ ๊ถŒํ•œ์€ ์œ„ํ—˜ ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰ ์ค‘์— ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ํ—ˆ์šฉํ•˜๋„๋ก ํ•จ โ‘ข contentResolver ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ Cursor ๊ฐ์ฒด๋กœ ๊ฐ€์ง€๊ณ  ์˜ด ์•ˆ๋“œ๋กœ์ด๋“œ 4๋Œ€ ์ปดํฌ๋„ŒํŠธ - ์•กํ‹ฐ๋น„ํ‹ฐ: ํ™”๋ฉด..
[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 9. ์‹ค์ „ํ”„๋กœ์ ํŠธ(2) - ์Šคํ†ฑ์›Œ์น˜ ์‹ค์ „ ํ”„๋กœ์ ํŠธ ์‹ค์Šต - ์Šคํ†ฑ ์›Œ์น˜ ์ฃผ์š”๊ตฌ์„ฑ - ๋น ๋ฅด๊ฒŒ ๊ณ„์‚ฐํ•˜๋ฉด์„œ UI๋ฅผ ๊ฐฑ์‹  - ๊ฐ๊ฐtimer์™€ runOnUiThread ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๊ตฌํ˜„ - ๋žฉํƒ€์ž„์„ ๋ˆ„์ ํ•˜์—ฌ ํ‘œ์‹œํ•  ScrollView์— ๋™์ ์œผ๋กœ TextView๋ฅผ ์ถ”๊ฐ€ 1. ํ™”๋ฉด๊ตฌ์„ฑ - ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•˜๋Š” TextView 2๊ฐœ - ํƒ€์ด๋จธ๋ฅผ ์‹œ์ž‘ ๋ฐ ์ผ์‹œ์ •์ง€, ์ดˆ๊ธฐํ™”ํ•˜๋Š” FloatingActionButton (๋ฒกํ„ฐ ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€ 3๊ฐœ ์ถ”๊ฐ€) - tint๋กœ ์ƒ‰์ƒ ๋ฐ”๊พธ๊ธฐ → xml ์ฝ”๋“œ์—์„œ app:tint="@color/white"์ถ”๊ฐ€ - FloatingActionButton ์ถ”๊ฐ€์‹œ No speakable text present๋ผ๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ activity_main.xml์—์„œ FloatingActionButtom ์†์„ฑ์— tools:ign..
[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 8. ์‹ค์ „ํ”„๋กœ์ ํŠธ(1) - ๋น„๋งŒ๋„๊ณ„์‚ฐ๊ธฐ ์‹ค์ „ ํ”„๋กœ์ ํŠธ ์‹ค์Šต - ๋น„๋งŒ๋„ ๊ณ„์‚ฐ๊ธฐ ์ฃผ์š”๊ตฌ์„ฑ - ๋ชธ๋ฌด๊ฒŒ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ํ™”๋ฉด๊ณผ ๋น„๋งŒ๋„ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ™”๋ฉด์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ๋‘ ๊ฐœ ํ•„์š”ํ•จ - ์ธํ…ํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„์„œ ๋‹ค๋ฅธ ํ™”๋ฉด์œผ๋กœ ์ „๋‹ฌํ•จ - ConstraintLayout ๊ธฐ๋ฐ˜ 1. res > values > color.xml - ์•ก์…˜๋ฐ” ์ƒ‰์ƒ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ์ปฌ๋Ÿฌ ์ฝ”๋“œ ์ถ”๊ฐ€ - 16์ง„์ˆ˜๋กœ #FF000000 #FFFFFFFF #FF018786 #00584A 2. res > values > themes > themes.xml - 3. activity_main.xml design๋ชจ๋“œ์—์„œ ์œ„์ ฏ ์ถ”๊ฐ€ - EditText 2๊ฐœ, Button 1๊ฐœ 4. activity_result.xml design๋ชจ๋“œ์—์„œ ์œ„์ ฏ ์ถ”๊ฐ€ - File > New > Activity > E..
[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 7. ์œ„์ ฏ - ํ…์ŠคํŠธ๋ทฐ/์—๋””ํŠธํ…์ŠคํŠธ,๋ฒ„ํŠผ/์ปดํŒŒ์šด๋“œ๋ฒ„ํŠผ/์ด๋ฏธ์ง€๋ฒ„ํŠผ ๋“ค์–ด๊ฐ€๊ธฐ ์ „.. [์ฐธ๊ณ ] XML ์—˜๋ฆฌ๋จผํŠธ - root element๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ child element๋ฅผ ๊ฐ€์ง - ๊ฐ child element๋„ ํ•˜๋‚˜ ์ด์ƒ์˜ subchild element๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ ๋ฐ์ดํ„ฐ - ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ์—˜๋ฆฌ๋จผํŠธ๋Š” empty element๋ผ๊ณ  ํ•˜๋ฉฐ, ๋˜๋Š” ๋กœ ํ‘œํ˜„ํ•จ - ์—˜๋ฆฌ๋จผํŠธ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์†์„ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ ์†์„ฑ์€ ์†์„ฑ๋ช…๊ณผ ์†์„ฑ๊ฐ’์œผ๋กœ ํ‘œํ˜„ ์ฃผ์„๋ฌธ - xml๋ฌธ์„œ์˜ ์ฃผ์„๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•จ ์œ„์ ฏ ํ…์ŠคํŠธ๋ทฐ - View ํด๋ž˜์Šค ๋ฐ”๋กœ ๋‹ค์Œ์— ์œ„์น˜ํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ์œ„์ ฏ์ด ๊ทธ ํ•˜์œ„์— ์กด์žฌํ•จ text ์†์„ฑ - ํ…์ŠคํŠธ๋ทฐ์— ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ - “๋ฌธ์ž์—ด” ํ˜•์‹์œผ๋กœ ๊ฐ’์„ ์ง์ ‘ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ “@string/๋ณ€์ˆ˜๋ช…” ํ˜•์‹์œผ๋กœ ์ง€์ •ํ•œ ํ›„ strings.xml ํŒŒ์ผ์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ tex..
[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 6. ๋ ˆ์ด์•„์›ƒ(3) - ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ/์ปจ์ŠคํŠธ๋ ˆ์ธํŠธ ๋ ˆ์ด์•„์›ƒ(์ฒด์ด๋‹, ๊ฐ€์ด๋“œ๋ผ์ธ)/+ ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ํ™œ์šฉํ•˜๊ธฐ(์ž๋™์ €์žฅ, ์ฝ”๋“œ์ž๋™์™„์„ฑ, ๋””๋ฒ„๊น…) ๋ ˆ์ด์•„์›ƒ ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ(GridLayout) - ๊ฒฉ์ž(grid) ๋‚ด๋ถ€์˜ ์…€์— ์ž์‹ ๋ทฐ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ทฐ ๊ทธ๋ฃน - ํ…Œ์ด๋ธ” ๋ ˆ์ด์•„์›ƒ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ, ๊ฐ๊ฐ์˜ ์ž์‹ ๋ทฐ๊ฐ€ ์ž์‹ ์˜ ์œ„์น˜์™€ ์ฐจ์ง€ํ•˜๋Š” ์…€์˜ ๊ฐœ์ˆ˜๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์ง€์ • ๊ฐ€๋Šฅ ์ž์ฒด์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ - rowCount: ํ–‰์˜ ์ˆ˜ - columnCount: ์—ด์˜ ์ˆ˜ - orientation: ๊ทธ๋ฆฌ๋“œ๋ฅผ ์ˆ˜ํ‰ ๋ฐฉํ–ฅ์œผ๋กœ ์šฐ์„ ํ•  ๊ฒƒ์ธ์ง€, ์ˆ˜์ง ๋ฐฉํ–ฅ์œผ๋กœ ์šฐ์„ ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ • ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ ์•ˆ์— ํฌํ•จ๋œ ์œ„์ ฏ์— ์„ค์ •ํ•˜๋Š” ์†์„ฑ - layout_row: ์ž์‹ ์ด ์œ„์น˜ํ•  ํ–‰ ๋ฒˆํ˜ธ(0๋ฒˆ๋ถ€ํ„ฐ ์‹œ์ž‘) - layout_column: ์ž์‹ ์ด ์œ„์น˜ํ•  ์—ด ๋ฒˆํ˜ธ(0๋ฒˆ๋ถ€ํ„ฐ ์‹œ์ž‘) - layout_rowSpan: ํ–‰์„ ์ง€์ •๋œ ์ˆ˜๋งŒํผ ํ™•์žฅํ•จ - layout_columnSpan: ์—ด์„ ์ง€์ •๋œ ์ˆ˜๋งŒํผ ..
[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 5. ๋ ˆ์ด์•„์›ƒ(2) - ๋ฆฌ๋‹ˆ์–ด ๋ ˆ์ด์•„์›ƒ/๋ ๋Ÿฌํ‹ฐ๋ธŒ ๋ ˆ์ด์•„์›ƒ/ํ…Œ์ด๋ธ” ๋ ˆ์ด์•„์›ƒ ๋ ˆ์ด์•„์›ƒ ๋ฐฐ์น˜๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ - ๋ ˆ์ด์•„์›ƒ ์•ˆ์— ์กด์žฌํ•˜๋Š” ์œ„์ ฏ์„ ๋ฐฐ์น˜ํ•˜๊ฒŒ ํ•ด์คŒ - ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜์Œ ์ƒ์„ฑํ•˜๋ฉด ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” activity_main์ด๋ผ๋Š” ์ด๋ฆ„์˜ ๋ ˆ์ด์•„์›ƒ ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง - ๋ ˆ์ด์•„์›ƒ ํŒŒ์ผ์€ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ๋ฆฌ์†Œ์Šค๋กœ ๋ถ„๋ฅ˜๋จ - ํŒŒ์ผ๋ช…์€ ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ์ž‘์„ฑ๋จ - ํŒŒ์ผ ์ด๋ฆ„ ๋์— ํŒŒ์ผ์˜ ํƒ€์ž…์ธ XML์„ ๋ถ™์—ฌ์„œ activity_main.xml์ด ๋จ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ ˆ์ด์•„์›ƒ 1) ๋ฆฌ๋‹ˆ์–ด ๋ ˆ์ด์•„์›ƒ(์„ ํ˜•, LinearLayout) 2) ๋ ๋Ÿฌํ‹ฐ๋ธŒ ๋ ˆ์ด์•„์›ƒ(์ƒ๋Œ€, RelativeLayout) 3) ํ…Œ์ด๋ธ” ๋ ˆ์ด์•„์›ƒ(TableLayout) 4) ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ(GridLayout) 5) ํ”„๋ ˆ์ž„ ๋ ˆ์ด์•„์›ƒ(FrameLayout) 6) ์ปจ์ŠคํŠธ๋ ˆ์ธํŠธ ๋ ˆ์ด์•„์›ƒ(์ œ์•ฝ, ConstraintLayout..
[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 4. ๋ ˆ์ด์•„์›ƒ(1) - ๋ทฐ ๋ ˆ์ด์•„์›ƒ ๋ทฐ(View) - View ํด๋ž˜์Šค์˜ ์„œ๋ธŒํด๋ž˜์Šค๋กœ ๋งŒ๋“  ๊ฐ์ฒด๋ฅผ ๋œปํ•จ - ์•กํ‹ฐ๋น„ํ‹ฐ ํ™”๋ฉด์€ ํ•œ ๊ฐœ ์ด์ƒ์˜ ๋ทฐ๋กœ ๊ตฌ์„ฑ - ํฌ๊ฒŒ ๋‘ ์ข…๋ฅ˜์œผ๋กœ ๋‚˜๋ˆ” (๋ ˆ์ด์•„์›ƒ, ์œ„์ ฏ) ์œ„์ ฏ(Widget) - ๋ฒ„ํŠผ, ๋ผ๋””์˜ค๋ฒ„ํŠผ, ์ด๋ฏธ์ง€ ๋“ฑ ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ - View ๋˜๋Š” ViewGroup์˜ ์„œ๋ธŒํด๋ž˜์Šค๋กœ์„œ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ ์ฝ”ํ‹€๋ฆฐ์˜ ์ตœ์ƒ์˜ ํด๋ž˜์Šค: Any (Java์˜ Object์™€ ์œ ์‚ฌ) ๋ ˆ์ด์•„์›ƒ(Layout) - ๋‹ค๋ฅธ ์œ„์ ฏ์„ ๋‹ด์•„ ๋ฐฐ์น˜ํ•˜๋Š” ํ‹€ - ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ทฐ๋ฅผ ๊ทœ์น™๋Œ€๋กœ ํ™”๋ฉด์— ๋ฐฐ์น˜ - ViewGroup์˜ ์„œ๋ธŒํด๋ž˜์Šค View ํด๋ž˜์Šค ๊ณ„์ธต๋„ View ํด๋ž˜์Šค์˜ XML ์†์„ฑ ๋ฒ„ํŠผ์˜ XML ์†์„ฑ - ๋ฒ„ํŠผ์˜ XML ์†์„ฑ์ด ๊ฑฐ์˜ ์—†์Œ - ๋Œ€๊ฐœ ์ƒ์œ„ ํด๋ž˜์Šค์ธ TextView๋‚˜ View์—์„œ ์ƒ์†๋ฐ›์Œ - https://developer..
[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 3. ๊ธฐ๋ณธ ๋ฌธ๋ฒ•(2) - ํ•จ์ˆ˜/๋ฉ”์†Œ๋“œ, ์ „์—ญ๋ณ€์ˆ˜, ์ง€์—ญ๋ณ€์ˆ˜/ํด๋ž˜์Šค, ์ธ์Šคํ„ด์Šค/์ถ”๊ฐ€์ ์ธ ๋ฌธ๋ฒ• ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ํ•จ์ˆ˜ fun ํ•จ์ˆ˜ ์ด๋ฆ„([๋ณ€์ˆ˜ ์ด๋ฆ„: ์ž๋ฃŒํ˜•, ๋ณ€์ˆ˜ ์ด๋ฆ„: ์ž๋ฃŒํ˜•..]): [๋ฐ˜ํ™˜ ๊ฐ’ ์ž๋ฃŒํ˜•]{// fun: ํ•จ์ˆ˜ ์˜ˆ์•ฝ์–ด ํ‘œํ˜„์‹... [return ๋ฐ˜ํ™˜๊ฐ’] } // ex fun sum(a: Int, b: Int): Int{ var sum = a + b return sum } 1. ์ฝ”ํ‹€๋ฆฐ์€ ๋‹ค์ค‘ ํŒจ๋Ÿฌ๋‹ค์ž„ ์–ธ์–ด - ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ(FP: Funtional Programming) - ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP: Object-Oriented Programming) 2. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์ฝ”๋“œ ๊ฐ„๋žต, ํ…Œ์ŠคํŠธ๋‚˜ ์žฌ์‚ฌ์šฉ์„ฑ ์ฆ๊ฐ€ - ์ˆœ์ˆ˜ ํ•จ์ˆ˜, ๋žŒ๋‹ค์‹, ๊ณ ์ฐจ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๊ตฌ์„ฑ → ex) main(), sum(), max() ํ•จ์ˆ˜ 3. ์ผ๋ฐ˜์  ์„ ์–ธ fun sum(a: Int, b: Int): Int..