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

APP/ANDROID13

[๋ถ€์ŠคํŠธ์ฝ”์Šค]์•ˆ๋“œ๋กœ์ด๋“œ ํƒญ(Tab) ํƒญ ๋ฒ„ํŠผ(TAB) ํƒญ์€ sdk๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์œ„์ ฏ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ง์ ‘ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค. ํƒญ์€ ์นด์นด์˜คํ†ก, ์ธ์Šคํƒ€๊ทธ๋žจ, ํŽ˜์ด์Šค๋ถ๊ณผ ๊ฐ™์€ sns์™€ ๋งŽ์€ ์–ดํ”Œ์˜ ํ™”๋ฉด ๊ตฌ์„ฑ์— ํ™œ๋ฐœํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ํƒญ์˜ ๊ตฌ์„ฑ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” activity๋ฒ„ํŠผ๊ณผ famelayout(ํ”„๋ ˆ์ž„ ๋ ˆ์ด์•„์›ƒ)์ด๋ผ๋Š” ์œ„์ ฏ์„ ๋ฐฐ์น˜ํ•˜์—ฌ ์ „์ฒด์ ์ธ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜์—ฌ ๋ฒ„ํŠผ ์„ ํƒ์‹œ, ํ•ด๋‹น๋˜๋Š” fragment๋ฅผ ๋„์šฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋œ๋‹ค. MainActivity.java package com.example.actionbar_ex; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.ScrollingTabContainerView; import androidx.ap.. 2020. 2. 28.
[๋ถ€์ŠคํŠธ์ฝ”์Šค]์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋ž˜๊ทธ๋จผํŠธ(fragment),์•ก์…˜๋ฐ” ํ”„๋ž˜๊ทธ๋จผํŠธ(Fragment) ๋‚˜์˜ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ™”๋ฉด์„ ๊ฐ€์ง€๋„๋ก ๋งŒ๋“ค๊ธฐ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๊ฐœ๋…์ด๋‹ค. ํ•˜๋‚˜์˜ ๋””์Šคํ”Œ๋ ˆ์ด์—์„œ ์—ฌ๋Ÿฌํ™”๋ฉด์„ ๋„์šฐ๊ณ  ์‹ถ์€ ๋‹ˆ์ฆˆ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด์„œ ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ทธ ๋‹ˆ์ฆˆ๋ฅผ ํ•ด๊ฒฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ํ•ธ๋“œํฐ์˜ ํ™”๋ฉด๊ณผ ๋‹ฌ๋ฆฌ ์•„์ดํŒจ๋“œ๋‚˜ ํƒœ๋ธ”๋ฆฟ ๊ฐ™์€ ๊ธฐ๊ธฐ์—์„œ๋Š” ํ•œ ํ™”๋ฉด์— ํ•œ๋ฒˆ์— ๋ณด์—ฌ์ฃผ์–ด ํŽธ๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค. ์ด์™€ ๊ด€๋ จ๋œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ํ”„๋ž˜๊ทธ๋จผํŠธ ๋ง๊ณ ๋„ ๋ ˆ์ด์•„์›ƒ(layout)๊ณผ ์•กํ‹ฐ๋น„ํ‹ฐ(activity)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ ˆ์ด์•„์›ƒ์˜ ๊ฒฝ์šฐ ์ •์ ์ธ ์š”์†Œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋งŒํผ ์ด๋ฒคํŠธ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ์ด๋™๊ณผ ๊ฐ™์€ ๋™์ž‘์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ์—” ๋ฌด๋ฆฌ๊ฐ€ ์žˆ๊ณ , ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ๊ฒฝ์šฐ ActivityGroup ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•ด ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์ค‘์ฒฉ ์‹œํ‚ด์œผ๋กœ์จ ํ™”๋ฉด ๋ถ„ํ• ์„ ๊ตฌํ˜„ํ–ˆ์ง€๋งŒ ์ด ๋˜ํ•œ ์ค‘์ฒฉ๋œ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ„์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๊ณ„๋‚˜ ์—ฌ๋Ÿฌ ๊ตฌ์กฐ์ ์ธ.. 2020. 2. 27.
[๋ถ€์ŠคํŠธ์ฝ”์Šค] ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ์ž/์œ„ํ—˜ ๊ถŒํ•œ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ์ž(Broadcast Receiver) ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ(Broadcast) : ๋ฐฉ์†ก์„ ํ•˜๋Š”๊ฒƒ ์˜ˆ) ์ฑ„ํŒ… ์•ฑ์—์„œ ์ผ๋Œ€์ผ ์ฑ„ํŒ…์„ ํ•  ๋•Œ ๋ฉ”์‹œ์ง€๋Š” ๋‘ ์‚ฌ๋žŒ๋ผ๋ฆฌ ์ฃผ๊ณ ๋ฐ›์ง€๋งŒ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์—๊ฒŒ ํ•œ๊บผ๋ฒˆ์— ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” ๊ทธ๋ฃน ์ฑ„ํŒ…๋ฐฉ์„ ๋งŒ๋“ค์–ด ํ•œ ๋ฒˆ ์“ด ๊ธ€์„ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ ๋„คํŠธ์›Œํฌ๋ถ„์•ผ์—์„œ์˜ ์œ ๋‹ˆ์บ์ŠคํŠธ/๋ฉ€ํ‹ฐ์บ์ŠคํŠธ/๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ์™€ ๊ฐœ๋…์ด ์œ ์‚ฌ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ… ๋ฉ”์‹œ์ง€๋Š” ์ธํ…ํŠธ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์ ธ ์ „๋‹ฌ๋œ๋‹ค. ๊ฐ์ข… ์•ฑ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์บ์น˜ํ•œ ํ›„, ๋ฆฌ์‹œ๋ฒ„๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๊ณ , "๋ฐฉ์†กํ•˜๊ธฐ=>์ˆ˜์‹ ํ•˜๊ธฐ"์˜ ์‚ฌ์ดํด๋กœ ๋™์ž‘๋œ๋‹ค. ์ •์  ๋ฆฌ์‹œ๋ฒ„ ํ•œ ๋ฒˆ ๋“ฑ๋ก๋˜๋ฉด ํ•ด์ œ X ์•ฑ ์„ค์น˜์‹œ, ์ž๋™ ๋“ฑ๋ก ๋™์  ๋ฆฌ์‹œ๋ฒ„ ๋“ฑ๋ก, ํ•ด์ง€์˜ ์ž์œ  manifest์— ๋“ฑ๋กํ•˜์ง€ ์•Š๊ณ , ์†Œ์Šค์— ๋“ฑ๋ก์„ ํ•œ๋‹ค ์œ„ํ—˜ ๊ถŒํ•œ ๋งˆ์‹œ๋ฉœ๋กœ ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ๊ถŒํ•œ์„.. 2020. 2. 21.
[๋ถ€์ŠคํŠธ์ฝ”์Šค] ์ธํ…ํŠธ(intent)๋ฅผ ์ด์šฉํ•œ ํ™”๋ฉด์ „ํ™˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ์š”์†Œ 4๊ฐ€์ง€ ์•กํ‹ฐ๋น„ํ‹ฐ(Activity) ์„œ๋น„์Šค ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ˆ˜์‹ ์ž ๋‚ด์šฉ ์ œ๊ณต์ž ์•กํ‹ฐ๋น„ํ‹ฐ(Activity) ์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” UI๊ตฌ์„ฑ์„ ์œ„ํ•ด ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ์š”์†Œ์ด๋‹ค. ํ™”๋ฉด์— UI๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œ ํ•˜๋‚˜์˜ activity๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ์‚ฌ์šฉ์ž์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์ง€๋งŒ ์ž์ฒด์ถœ๋ ฅ๊ธฐ๋Šฅ์ด ์—†๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹ค์ œ๋กœ ๋ณด์—ฌ์ง€๋Š” ๋ถ€๋ถ„์€ ๋ทฐ(view), ๋ทฐ๊ทธ๋ฃน(viewgroup)์— ํ•ด๋‹นํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ๋˜๋Š” setContentView๋ฉ”์„œ๋“œ๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ ์•ˆ์— ๋ทฐ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ช…๋ น์ด๋‹ค. ์ƒˆ๋กœ์šด ์•กํ‹ฐ๋น„ํ‹ฐ ์ถ”๊ฐ€ app์šฐํด๋ฆญ -> new -> activity onCreate() : ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ์ƒ์„ฑ, ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ดˆ๊ธฐํ™”, setContentView().. 2020. 2. 18.
[๋ถ€์ŠคํŠธ์ฝ”์Šค]์Šคํฌ๋กค๋ทฐ ํ…Œ์ด๋ธ” ๋ ˆ์ด์•„์›ƒ ๊ฒฉ์ž ๋ชจ์–‘์œผ๋กœ ๋ทฐ๋ฅผ ๋ฐฐ์น˜ํ•  ๋•Œ ์‚ฌ์šฉ **๋ฆฌ๋‹ˆ์–ด ๋ ˆ์ด์•„์›ƒ ์•ˆ์— ๋ฆฌ๋‹ˆ์–ด ๋ ˆ์ด์•„์›ƒ์„ ๋„ฃ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด๋„ ๋˜์ง€๋งŒ ํ…Œ์ด๋ธ” ๋ ˆ์ด์•„์›ƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข€ ๋” ๊ฐ„๋‹จํ•œ ์ด์œ ? => ํ…Œ์ด๋ธ”๋ ˆ์ด์•„์›ƒ์ด ์ข€๋” ํ…Œ์ด๋ธ”์— ๊ด€๋ จ๋œ ์†์„ฑ๋“ค์ด ์กด์žฌํ•˜๋ฏ€๋กœ ๋”์šฑ ํŽธ๋ฆฌ, ๋น„์Šทํ•˜๋‚˜ ํ‘œ ํ˜•ํƒœ์˜ ๊ณ ์ •๋œ ๋ชจ์–‘์ด๋ผ๋ฉด ํ…Œ์ด๋ธ” ๋ ˆ์ด์•„์›ƒ์ด ๋” ์“ฐ๊ธฐ ๊ฐ„ํŽธํ•˜๊ณ , ๊ฐ ํ–‰์ด๋‚˜ ์—ด์ด ์œ ๋™์ ์ธ ๊ฒฝ์šฐ๋Š” ๋ฆฌ๋‹ˆ์–ด ๋ ˆ์ด์•„์›ƒ์ด ๋” ์ ํ•ฉํ•˜๋‹ค. ์Šคํฌ๋กค ๋ทฐ(scrollview) ์ˆ˜์ง(์œ„์•„๋ž˜)๋กœ ์Šคํฌ๋กคํ•˜๋Š” ๊ธฐ๋Šฅ ๊ธ€์ž ์ˆ˜๊ฐ€ ํ™”๋ฉด์„ ์ดˆ๊ณผํ•˜์—ฌ ์Šคํฌ๋กค ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ปจํ…Œ์ด๋„ˆ ์ฃผ์˜) ์Šคํฌ๋กค ๋ทฐ์—๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์œ„์ ฏ๋งŒ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค - ์ˆ˜ํ‰ ๋ฐฉํ–ฅ์˜ ์Šคํฌ๋กค๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ๋Š” HorizontalScrollView์‚ฌ์šฉ ์Šคํฌ๋กค๋ทฐ ๋งŒ๋“ค๊ธฐ 2020. 2. 13.
[๋ถ€์ŠคํŠธ์ฝ”์Šค]๋ ˆ์ด์•„์›ƒ ๋งŒ๋“ค๊ธฐ ์˜ค๋Š˜์€ ๋ถ€์ŠคํŠธ์ฝ”์Šค์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐ•์˜์˜ ์ฒซ๋ฒˆ์งธ ๋ถ€๋ถ„์ธ ๋ ˆ์ด์•„์›ƒ๋งŒ๋“ค๊ธฐ๋ฅผ ๊ณต๋ถ€ํ•ด๋ณด์•˜๋‹ค. ๋ ˆ์ด์•„์›ƒ์— ๋Œ€ํ•ด์„œ๋Š” ์•ž์˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์ˆ˜์›”ํ•  ๊ฒƒ ๊ฐ™๋‹ค! (์•ž ๊ธ€ ๋งํฌ ์ฐธ๊ณ : https://minjoo-space.tistory.com/2) ์ด ๊ฐ•์˜์—์„œ ๋ฐฐ์šฐ๋Š” ๋ ˆ์ด์•„์›ƒ๋“ค์˜ ์ข…๋ฅ˜์ด๋‹ค. ์ œ์•ฝ ๋ ˆ์ด์•„์›ƒ(Constraint Layout) ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์—์„œ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๋ฉด ๋จผ์ € ๋‚˜์˜ค๋Š” ๋””ํดํŠธ ๋ ˆ์ด์•„์›ƒ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ, ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ XML ๋ ˆ์ด์•„์›ƒ ํŒŒ์ผ์ธ activity_main.xml ํŒŒ์ผ์„ ์—ด์–ด๋ณด๋ฉด ๋ฐ”๊นฅ์— ์žˆ๋Š” ์ตœ์ƒ์œ„ ํƒœ๊ทธ๊ฐ€ ConstraintLayout์ธ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. activity_main.xml์—์„œ Design๋ถ€๋ถ„์—์„œ button์„ ๋งŒ๋“ค์–ด์„œ ๋ฒ„ํŠผ์˜ ์ ๋“ค์„ ๊ธฐ์ค€์ด ๋˜์–ด ์ œ์•ฝ์„ ๊ฑธ ๋ถ€๋ชจ .. 2020. 2. 5.
๋ฐ˜์‘ํ˜•