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

๋ถ€์ŠคํŠธ์ฝ”์Šค12

[๋ถ€์ŠคํŠธ์ฝ”์Šค]์•ˆ๋“œ๋กœ์ด๋“œ ํƒญ(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.
[๋ถ€์ŠคํŠธ์ฝ”์Šค] ๋ ˆ์ด์•„์›ƒ#๋ทฐ์˜ ์†์„ฑ ๋ทฐ(view) ํ™”๋ฉด์— ์žˆ๋Š” ๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ ๋ˆˆ์— ๋ณด์ด๋Š” ๊ฒƒ - ์œ„์ ฏ ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒƒ - ๋ ˆ์ด์•„์›ƒ ๋ ˆ์ด์•„์›ƒ๋„ ๋ทฐ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋ ˆ์ด์•„์›ƒ ์•ˆ์— ๋ ˆ์ด์•„์›ƒ์„ ๋„ฃ์œผ๋ฉด์„œ ๋ณต์žกํ•œ ํ˜•์‹์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๐Ÿ‘๋ทฐ๊ทธ๋ฃน ์•ˆ์— ๋ทฐ๊ทธ๋ฃน์ด ๊ฐ€๋Šฅํ•˜๋‹ค! ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๋ฐ˜์˜ ํƒœ๋ธ”๋ฆฟ๊ณผ ์Šค๋งˆํŠธํฐ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์„ธ๋กœ์™€ ๊ฐ€๋กœ์˜ ๋ฐฉํ–ฅ ๋ชจ๋‘๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ™”๋ฉด ๊ณต๊ฐ„์„ ์ž˜ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ ˆ์ด์•„์›ƒ์„ ์ž˜ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ๋ ˆ์ด์•„์›ƒ์˜ ํ™œ์šฉ๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•œ layout_width, layout_height ์˜ ์‚ฌ์šฉ! => ๋ฒ„ํŠผ์ด ์™ผ์ชฝ ์œ„์— ์œ„์น˜ํ•จ -match_parent ๋ทฐ ๊ทธ๋ฃน์— ๋‚จ์•„ ์žˆ๋Š” ์—ฌ์œ  ๊ณต๊ฐ„์„ ์ฑ„์›€ ๋ถ€๋ชจ ๋ทฐ์˜ ๋‚ด๋ถ€ ์—ฌ๋ฐฑ(padding)์„ ์ œ์™ธํ•œ ํฌ๊ธฐ๋กœ ์„ค์ • -wrap_content ๋ทฐ์— ๋“ค์–ด ์žˆ๋Š” ๋‚ด์šฉ๋ฌผ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ทฐ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ.. 2020. 1. 18.
๋ฐ˜์‘ํ˜•