leeeha / SeoultechNoticeApp

๐Ÿ“ข ์„œ์šธ๊ณผ๊ธฐ๋Œ€ ๊ณต์ง€์‚ฌํ•ญ ์•Œ๋ฆฌ๋ฏธ ์•ฑ

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

์„œ์šธ๊ณผ๊ธฐ๋Œ€ ๊ณต์ง€์‚ฌํ•ญ ์•Œ๋ฆฌ๋ฏธ ์•ฑ

๊ฐœ๋ฐœ ๊ธฐ๊ฐ„

  • 2021.11.01 ~ 2021.12.03
  • 2ํ•™๋…„ 2ํ•™๊ธฐ ๋ชจ๋ฐ”์ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ

์•ฑ์˜ ๋ชฉ์  ๋ฐ ์‚ฌ์šฉ ๋Œ€์ƒ

์•ฑ์˜ ๋ชฉ์ 

1. ๊ธฐ์กด ์Šค๋งˆํŠธ์บ ํผ์Šค ์•ฑ์˜ ๋ฌธ์ œ์ ์„ ๊ฐœ์„ ํ•˜์ž.

  • ๋‹ค์ด์–ผ๋กœ๊ทธ ๋‚ด์˜ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ ์ œ๋Œ€๋กœ ์กฐ์ •๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ์•„์˜ˆ ์ƒˆ๋กœ์šด ์•กํ‹ฐ๋น„ํ‹ฐ ์ฐฝ์„ ๋„์›Œ์„œ ๋ณด์—ฌ์ฃผ์ž.
  • ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ์ข…๋ฃŒ ํ™•์ธ ๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ๋œจ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ์ •์ƒ์ ์œผ๋กœ ์ด์ „ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ๋งŒ๋“ค์ž.

image

  1. ์กฐํšŒ์ˆ˜๊ฐ€ ๋†’์€ ์ˆœ์œผ๋กœ ๊ณต์ง€์‚ฌํ•ญ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌํ•˜์—ฌ ์ธ๊ธฐ๊ฐ€ ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋จผ์ € ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์ž. (์„ ์ฐฉ์ˆœ์œผ๋กœ ๋งˆ๊ฐ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋†“์น˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋„๋ก)

  2. ๋งค๋ฒˆ ๊ณต์ง€์‚ฌํ•ญ์— ๋“ค์–ด๊ฐ€์„œ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ง์ ‘ ์ฐพ๋Š” ๊ฒŒ ๋งค์šฐ ๋ฒˆ๊ฑฐ๋กญ๊ธฐ ๋•Œ๋ฌธ์—, ์œ ์ €๊ฐ€ ํ‚ค์›Œ๋“œ๋ฅผ ์„ค์ •ํ•ด๋‘๋ฉด ๊ทธ์™€ ๊ด€๋ จ๋œ ๊ณต์ง€์‚ฌํ•ญ์ด ๋–ด์„ ๋•Œ ํ•ธ๋“œํฐ์— ํ‘ธ์‹œ ์•Œ๋ฆผ์ด ์˜ค๋„๋ก ๋งŒ๋“ค์ž.

์‚ฌ์šฉ ๋Œ€์ƒ

๋Œ€ํ•™ ๊ณต์ง€์‚ฌํ•ญ, ํ•™์‚ฌ๊ณต์ง€, ์žฅํ•™๊ณต์ง€๋ฅผ ํŽธํ•˜๊ฒŒ ๋ณด๊ณ  ์‹ถ์€ ์„œ์šธ๊ณผ๊ธฐ๋Œ€ ํ•™์ƒ๋“ค

UI ๊ตฌ์„ฑ

image

image

์‹œ์Šคํ…œ ๊ตฌ์„ฑ๋„

image

image

image

image

์–ด๋ ค์› ๋˜ ๊ธฐ์ˆ ์  ๊ณผ์ œ ๋ฐ ํ•ด๊ฒฐ ๊ณผ์ •

  1. Jsoup ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ AsyncTask ์‚ฌ์šฉํ•ด์„œ ์›น ํฌ๋กค๋ง ํ•ด์˜ค๊ธฐ
  • ์›น ์‚ฌ์ดํŠธ์˜ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด tr, td ํƒœ๊ทธ๋ฅผ ์ผ์ผ์ด select() ๋ฉ”์†Œ๋“œ๋กœ ํŒŒ์‹ฑ ํ•ด์˜ค๋Š” ๊ฒƒ์ด ๊นŒ๋‹ค๋กœ์› ๋‹ค. โ†’ ์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์™€ Jsoup ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐ
  1. ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ์˜ ๋ชจ๋“  ์•„์ดํ…œ์„ ์—…๋ฐ์ดํŠธ ํ•  ๋•Œ, ์–ด๋Œ‘ํ„ฐ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ์ง€์šฐ๊ณ  ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋กœ addAll ํ•ด์•ผ ํ•œ๋‹ค.

  2. Pagination

  • ์ฒซ๋ฒˆ์งธ ์‹œ๋„: ํ™”์‚ดํ‘œ ๋ชจ์–‘์˜ ImageButton์„ ํด๋ฆญํ•˜๋ฉด ์ด์ „/๋‹ค์Œ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋„๋ก โ†’ ๊ณ„์† ๋™์ผํ•œ ํŽ˜์ด์ง€๊ฐ€ ๋œจ๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ
  • ๋‘๋ฒˆ์งธ ์‹œ๋„: ViewPager ์‚ฌ์šฉ โ†’ ๋ทฐํŽ˜์ด์ €์™€ ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ ๋ชจ๋‘ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋‹ˆ ์ฝ”๋“œ๊ฐ€ ๋งค์šฐ ๋ณต์žกํ•ด์กŒ๋‹ค. ์ฒ˜์Œ์—๋Š” CustomPagerAdapter์˜ instantiateItem์—์„œ ํŽ˜์ด์ง€ ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ์›น ํฌ๋กค๋ง์„ ํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์งฐ๋”๋‹ˆ, ํŽ˜์ด์ง€๋ฅผ ๋„˜๊ธธ ๋•Œ๋งˆ๋‹ค ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ๊บผ๋ฒˆ์— 5๊ฐœ์˜ ํŽ˜์ด์ง€๋ฅผ ํฌ๋กค๋ง ํ•œ ๋’ค์—, ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ ํŽ˜์ด์ง€์˜ ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ์— ์ ์šฉํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜, ์‹คํŒจํ–ˆ๋‹ค.
  • ๊ฒฐ๊ตญ ์ตœ์ข…์ ์œผ๋กœ๋Š” 3๊ฐœ์˜ ํŽ˜์ด์ง€ ๋‚ด์šฉ์„ ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ์— ์ด์–ด ๋ถ™์ด๊ณ , ์ค‘๋ณต๋˜๋Š” ์ƒ๋‹จ์˜ ๊ณต์ง€์‚ฌํ•ญ๋“ค์€ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํƒํ–ˆ๋‹ค. ๋‹ค์Œ์— ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ๋ฅผ ๋ทฐํŽ˜์ด์ €๋กœ ๋„˜๊ธฐ๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค์‹œ ์‹œ๋„ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค.
  1. ๊ณณ๊ณณ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ์ ์ธ ์ƒํ™ฉ๋“ค
  • ์›น ํŽ˜์ด์ง€ 3๊ฐœ๋ฅผ ์ด์–ด ๋ถ™์˜€๋”๋‹ˆ, ์ƒ๋‹จ์— ๊ณ ์ •๋œ ๊ณต์ง€์‚ฌํ•ญ์ด ํŽ˜์ด์ง€ ๊ฐœ์ˆ˜๋งŒํผ ์ค‘๋ณต๋˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ & ๋Œ€ํ•™ ๊ณต์ง€์‚ฌํ•ญ๊ณผ ์žฅํ•™๊ณต์ง€๋Š” ์ƒ๋‹จ์— ๊ณ ์ •๋œ ๊ณต์ง€์‚ฌํ•ญ์ด 6๊ฐœ์ธ๋ฐ, ํ•™์‚ฌ๊ณต์ง€๋Š” 4๊ฐœ
  • ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ์—”ํ„ฐํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ โ†’ ํ† ์ŠคํŠธ ๋ฉ”์‹œ์ง€ ๋„์šฐ๊ธฐ
  • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋กœ ์•„๋ฌด๊ฒƒ๋„ ๋‚˜์˜ค์ง€ ์•Š์„ ๋•Œ โ†’ ์ฒ˜๋ฆฌ๋ฅผ ์•ˆ ํ•ด์ฃผ๋‹ˆ๊นŒ ์•ฑ ์ž์ฒด๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์žฌ์‹คํ–‰ ๋˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ
  • ๋ฒ„ํŠผ์ด ์•„๋‹ˆ๋ผ ์—”ํ„ฐํ‚ค๋กœ ์•„์ดํ…œ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ โ†’ setOnKeyListener์˜ ๋ฆฌํ„ด๊ฐ’ ์ฒ˜๋ฆฌ๋ฅผ ์ž˜ ํ•ด์ค˜์•ผ ํ•จ.
  • ์กฐํšŒ์ˆ˜๊ฐ€ ๋†’์€ ์ˆœ์œผ๋กœ ์ •๋ ฌํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์›์ƒ ๋ณต๊ตฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ โ†’ ๋ฆฌ์ŠคํŠธ๋ฅผ clear ํ•˜๊ธฐ ์ „์— ์ •๋ ฌ ์ „์˜ ์ƒํƒœ๋ฅผ ์ž„์‹œ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•ด๋‘๋”๋ผ๋„, ๋ฒ„ํŠผ์„ ๋‹ค์‹œ ํด๋ฆญํ•˜๋ฉด ์ž„์‹œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ”๋€Œ์–ด ๋ฒ„๋ฆผ. ์•„์ง ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ ๋ฌธ์ œ.
  1. ์ž‘์„ฑ์ž ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๊ฐ€ ๋” ๋Š˜์–ด๋‚˜๋ฉด, ์™ธ๋ถ€ ํŒŒ์ผ์ด๋‚˜ DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค. ํ˜„์žฌ๋Š” ์ž„์‹œ์ ์œผ๋กœ values ํด๋” ์•„๋ž˜์— author_data.xml ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ, string ๋ฐฐ์—ด์— ์ž‘์„ฑ์ž ์ด๋ฆ„์„ ์ €์žฅํ–ˆ๋‹ค.

  2. context๊ฐ€ ๋ถ„๋ช…ํ•˜์ง€ ์•Š์•„์„œ ๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ์•ˆ ๋œจ๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ โ†’ context ์ธ์ž์— getApplicationContext() ๋ง๊ณ , ๋ช…ํ™•ํ•˜๊ฒŒ AuthorActivity.this ์ „๋‹ฌํ•˜๊ธฐ

๊ฒฐ๊ณผ์ ์œผ๋กœ NoticeActivity๋ฅผ ์™„์ „ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์„ ๋“ค์—ฌ์„œ, KeywordActivity์™€ AuthorActivity์˜ ํ‘ธ์‹œ ์•Œ๋ฆผ ๊ธฐ๋Šฅ์€ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

์‹œ์—ฐ ์˜์ƒ

https://youtu.be/Sm0mXClZRZk

ํ–ฅํ›„ ๊ณ„ํš

  • ํ‚ค์›Œ๋“œ ํ‘ธ์‹œ ์•Œ๋ฆผ ๊ธฐ๋Šฅ ์™„์„ฑํ•˜๊ธฐ (์›น ์Šค์ผ€์ค„๋ง)
    • ์„œ์šธ๊ณผ๊ธฐ๋Œ€ ํ‚ค์›Œ๋“œ ์•Œ๋ฆผ๋ด‡์„ ๊ฐœ๋ฐœํ•˜์‹  ์„ ๋ฐฐ๋‹˜์˜ ์ธํ„ฐ๋ทฐ ๊ธ€ ์ฐธ๊ณ ํ•˜๊ธฐ
    • ์•Œ๋ฆผ๋ด‡์— ์‚ฌ์šฉ๋˜๋Š” ํ•ต์‹ฌ ๊ธฐ์ˆ ์€ ์›น ์‚ฌ์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์Šคํฌ๋ž˜ํ•‘๊ณผ ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค ๋ฐ˜๋ณตํ•˜๋Š” ์Šค์ผ€์ค„๋ง์ž…๋‹ˆ๋‹ค. ๊ณต์ง€์‚ฌํ•ญ์ด ์˜ฌ๋ผ์˜ค๋Š” ํ‰์ผ am 9:00 ~ pm 18:00 ์‚ฌ์ด์— ์ฃผ๊ธฐ์ ์œผ๋กœ ํ•™๊ต ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ ๊ณต์ง€์‚ฌํ•ญ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ์ž์ฃผ ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด ํ•™๊ต ์„œ๋ฒ„์— ์•…์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์ฃผ๊ธฐ๋Š” 1์‹œ๊ฐ„์œผ๋กœ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์ง‘ํ•œ ๊ณต์ง€์‚ฌํ•ญ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํžˆ ๊ฐ€๊ณตํ•˜์—ฌ ํ•™์šฐ๋ถ„๋“ค์ด ๋“ฑ๋กํ•ด์ฃผ์‹  ํ‚ค์›Œ๋“œ๊ฐ€ ํฌํ•จ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ์„ ๊ฑฐ์นœ ํ›„, ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํŽธํ•˜๋„๋ก ๋ฆฌํŒฉํ† ๋ง ํ•˜๊ธฐ
  • ๋ฐ‹๋ฐ‹ํ•œ ๋””์ž์ธ ๊ฐœ์„ ํ•˜๊ธฐ
  • ์„œ์šธ๊ณผ๊ธฐ๋Œ€ ํ•™์ƒ๋“ค์—๊ฒŒ ํ™๋ณดํ•˜๊ณ , ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด์— ๋ฐฐํฌ๊นŒ์ง€ ํ•ด๋ณด๋Š” ๊ฑธ ๋ชฉํ‘œ๋กœ!

About

๐Ÿ“ข ์„œ์šธ๊ณผ๊ธฐ๋Œ€ ๊ณต์ง€์‚ฌํ•ญ ์•Œ๋ฆฌ๋ฏธ ์•ฑ


Languages

Language:Java 100.0%