[Project] Week6 Assignment

Minjun KimΒ·2023λ…„ 8μ›” 21일
0
post-thumbnail

GitHub
Notion

πŸ“Œ ν•„μˆ˜ κ΅¬ν˜„ κΈ°λŠ₯

메인 νŽ˜μ΄μ§€ ( MainPageActivity )

  • 메인 νŽ˜μ΄μ§€λŠ” μ•±μ˜ 첫 ν™”λ©΄μœΌλ‘œ, ν•„μˆ˜ κ΅¬ν˜„ κΈ°λŠ₯듀에 λŒ€ν•œ μ§„μž…μ μ„ μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • λ‹€μ–‘ν•œ Widget을 ν™œμš©ν•˜μ—¬ 맀λ ₯적인 메인 νŽ˜μ΄μ§€λ₯Ό λ§Œλ“€μ–΄ λ³΄μ„Έμš”.
  • λ””μžμΈ ꡬ성은 μžμœ¨μž…λ‹ˆλ‹€. ν‰μ†Œ 자주 μ‚¬μš©ν•˜λ˜ μ•±μ˜ ꡬ쑰λ₯Ό μ°Έκ³ ν•΄ λ³΄μ„Έμš”. β›” 단 아직 λ°°μš°μ§€ μ•Šμ€ κΈ°λŠ₯듀은 쓰지 말아 μ£Όμ„Έμš”. (ViewBinding, Fragment, RecyclerView, AdapterλŠ” μ‚¬μš©ν•˜μ§€ λ§μ•„μ£Όμ„Έμš”.)
  • μ‚¬μš©μžμ—κ²Œ ν₯미둜운 μ½˜ν…μΈ λ‚˜ 곡지사항을 ν‘œμ‹œν•˜μ—¬ μž¬λ°©λ¬Έμ„ μœ λ„ν•΄ λ³΄μ„Έμš”.


λ””ν…ŒμΌ νŽ˜μ΄μ§€ ( DetailPageActivity )

  • μ‚¬μš©μžκ°€ 메인 νŽ˜μ΄μ§€μ—μ„œ μ„ νƒν•œ μ•„μ΄ν…œμ˜ 상세 정보λ₯Ό μ œκ³΅ν•˜λŠ” νŽ˜μ΄μ§€μž…λ‹ˆλ‹€.
  • 상세 정보λ₯Ό κ΅¬μ‘°ν™”λœ ν˜•νƒœλ‘œ ν‘œμ‹œν•˜κΈ° μœ„ν•΄ ConstraintLayout을 ν™œμš©ν•˜μ„Έμš”.
  • 메인 νŽ˜μ΄μ§€μ—μ„œ 상세 νŽ˜μ΄μ§€λ₯Ό 생성할 λ•Œ ν•„μš”ν•œ dataλ₯Ό Intent둜 전달해 λ³΄μ„Έμš”.
  • μ‚¬μš©μžμ™€ μƒν˜Έμž‘μš©μ„ μœ„ν•œ λ²„νŠΌμ΄λ‚˜ 링크λ₯Ό ν¬ν•¨ν•˜μ—¬ λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•΄λ³΄μ„Έμš”.


둜그인, νšŒμ› κ°€μž… νŽ˜μ΄μ§€ ( SignInActivity, SignUpActivity )

  • λΉ„λ°€λ²ˆν˜Έ μž…λ ₯ μ‹œ, λ³΄μ•ˆμ„ μœ μ§€ν•˜κΈ° μœ„ν•΄ ***둜 ν‘œν˜„ν•΄ μ£Όμ„Έμš”.
  • 둜그인 μ΄ν›„μ—λŠ” μ‚¬μš©μž 이름이 ν™”λ©΄μ—μ„œ 보이도둝 ꡬ성해 μ£Όμ„Έμš”.


둜그인, νšŒμ› κ°€μž… μ˜ˆμ™Έ 처리

  • μ˜ˆμ™Έ λ°œμƒ μ‹œ μ‚¬μš©μžμ—κ²Œ μ•ˆλ‚΄ λ©”μ‹œμ§€λ₯Ό ν‘œμ‹œν•˜λ©°, κ°€λŠ₯ν•œ λ‹€μŒ λ™μž‘μ„ μ•ˆλ‚΄ν•˜μ„Έμš”.
  • μ‚¬μš©μžμ˜ μž…λ ₯ 편의λ₯Ό μœ„ν•΄ 이메일, λΉ„λ°€λ²ˆν˜Έμ˜ μœ νš¨μ„± 검사λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ œκ³΅ν•΄λ³΄μ„Έμš”.(TextWatcher 등을 ν™œμš©ν•΄ λ³΄μ„Έμš”)

마이 νŽ˜μ΄μ§€ ( MyPageActivity )

  • μ‚¬μš©μž 정보와 κ΄€λ ¨λœ κΈ°λŠ₯듀을 λ³΄μ—¬μ£ΌλŠ” νŽ˜μ΄μ§€λ₯Ό κΎΈλ©°λ³΄μ„Έμš”.
  • λ‚΄ ν”„λ‘œν•„ ν‘œμ‹œ κΈ°λŠ₯, λ‚΄ κ²Œμ‹œλ¬Ό 보기 κΈ°λŠ₯ λ“±


Activity μ „ν™˜μ‹œ animation κ΅¬ν˜„

  • 화면을 μ „ν™˜ν•  λ•Œ UIκ°€ μžμ—°μŠ€λŸ½κ²Œ μ „ν™˜λ˜λ„λ‘ ν•©λ‹ˆλ‹€.
  • startActivity()λ₯Ό ν˜ΈμΆœν•œ 후에 overridePendingTransition() λ©”μ„œλ“œλ₯Ό ν™œμš©ν•˜μ—¬ λ‹€μ–‘ν•œ Activity μ „ν™˜ μ• λ‹ˆλ©”μ΄μ…˜μ„ μ μš©ν•΄λ³΄μ„Έμš”.


μ˜μ–΄ λ²„μ „μœΌλ‘œ λ³€κ²½ μ μš©ν•΄λ³΄κΈ°(string.xml)

  • Multi-Language 지원을 μœ„ν•΄ string.xml을 톡해 λ¬Έμžμ—΄μ„ κ΄€λ¦¬ν•˜μ„Έμš”.
  • res/values-en 디렉토리λ₯Ό ν™œμš©ν•˜μ—¬ μ˜μ–΄ λ¦¬μ†ŒμŠ€λ₯Ό 뢄리 및 κ΄€λ¦¬ν•©λ‹ˆλ‹€.

μΆ”κ°€ κ΅¬ν˜„ κΈ°λŠ₯ (선택)

λ™κ·Έλž€ ImageView λ§Œλ“€κΈ°

  • μ‚¬μš©μžμ˜ ν”„λ‘œν•„ μ΄λ―Έμ§€λ‚˜ μ•„μ΄μ½˜ 등을 μ›ν˜•μœΌλ‘œ ν‘œμ‹œν•΄ λ³΄μ„Έμš”.
  • μ΄λ―Έμ§€μ˜ 해상도와 λΉ„μœ¨μ— 상관없이 μ›ν˜•μœΌλ‘œ 잘 ν‘œμ‹œλ˜λ„λ‘ μ΅œμ ν™”ν•©λ‹ˆλ‹€.
  • android:scaleTypeκ³Ό ν•¨κ»˜ android:clipToOutline속성 등을 ν™œμš©ν•΄λ³΄μ„Έμš”.


슀크둀 κΈ°λŠ₯ μΆ”κ°€

  • κΈ΄ λ‚΄μš©μ΄λ‚˜ μ—¬λŸ¬ μ•„μ΄ν…œμ„ 효과적으둜 ν‘œμ‹œν•˜κΈ° μœ„ν•΄ μŠ€ν¬λ‘€μ„ μ§€μ›ν•©λ‹ˆλ‹€.
  • ScrollViewλ₯Ό μ‚¬μš©ν•˜μ—¬ 슀크둀 κ°€λŠ₯ν•œ λ ˆμ΄μ•„μ›ƒμ„ κ΅¬ν˜„ν•΄ λ³΄μ„Έμš”.


더보기 κΈ°λŠ₯

  • λ‚΄μš©μ΄ κΈΈ 경우 μš”μ•½ ν‘œμ‹œ ν›„, "더보기" λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ 전체 λ‚΄μš©μ„ ν™•μΈν•©λ‹ˆλ‹€.
  • μ‚¬μš©μžκ°€ λ‚΄μš©μ„ μΆ•μ†Œν•˜κ³  싢을 λ•Œ "μ ‘κΈ°" κΈ°λŠ₯도 ν•¨κ»˜ μ œκ³΅ν•©λ‹ˆλ‹€.
  • TextView의 maxLines 속성과 View.OnClickListener 등을 ν™œμš©ν•˜μ—¬ κ΅¬ν˜„ν•΄ λ³΄μ„Έμš”.

Font 크기 섀정에 따라 글씨 크기 달라지도둝 κ΅¬ν˜„

  • μ‚¬μš©μžμ˜ μ‹œμŠ€ν…œ 섀정을 λ°˜μ˜ν•˜μ—¬ μ•± λ‚΄ 글씨 크기λ₯Ό λ™μ μœΌλ‘œ λ³€κ²½ κ°€λŠ₯ν•©λ‹ˆλ‹€. πŸ’‘ μ„€μ • > λ””μŠ€ν”Œλ ˆμ΄ > 폰트 ν¬κΈ°μ—μ„œ μ›ν•˜λŠ” 크기λ₯Ό μ„ νƒν•˜μ—¬ 쑰절 κ°€λŠ₯
  • 폰트 섀정이 λ°”λ€Œμ–΄λ„ λ ˆμ΄μ•„μ›ƒμ΄ 깨지지 μ•Šκ²Œ μ΅œμ ν™”ν•©λ‹ˆλ‹€.
  • sp, dp 차이λ₯Ό μ΄ν•΄ν•˜κ³  TEXT 크기λ₯Ό μ§€μ •ν•˜μ—¬ μ‹œμŠ€ν…œ 섀정에 λ°˜μ‘ν•˜κ²Œ ν•©λ‹ˆλ‹€.

Dark theme κ΅¬ν˜„

  • μ‚¬μš©μžμ˜ μ‹œμŠ€ν…œ 섀정에 따라 ν…Œλ§ˆ 변경이 κ°€λŠ₯ν•©λ‹ˆλ‹€. πŸ’‘ μ„€μ • > λ””μŠ€ν”Œλ ˆμ΄ > 닀크 ν…Œλ§ˆμ—μ„œ 토글을 μΌœκ±°λ‚˜ λ„λ©΄μ„œ 닀크 ν…Œλ§ˆλ₯Ό μ μš©ν•˜κ±°λ‚˜ ν•΄μ œν•©λ‹ˆλ‹€.
  • Dark modeμ—μ„œλ„ λͺ¨λ“  μš”μ†Œκ°€ λͺ…ν™•ν•˜κ²Œ 보이도둝 색상 및 λͺ…도 μ‘°μ ˆν•΄ λ³΄μ•„μš”.
  • res/values, res/values-night 디렉토리λ₯Ό κ΅¬λΆ„ν•˜μ—¬ 닀크 λͺ¨λ“œ μ „μš© λ¦¬μ†ŒμŠ€λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.


μ„Έλ‘œ/κ°€λ‘œ λͺ¨λ“œ ui 뢄리 κ΅¬ν˜„

  • μ‚¬μš©μžκ°€ 화면을 νšŒμ „ν•  λ•Œ UIκ°€ μžμ—°μŠ€λŸ½κ²Œ μ „ν™˜λ˜λ„λ‘ ν•©λ‹ˆλ‹€. πŸ’‘ μ„€μ • > λ””μŠ€ν”Œλ ˆμ΄ > ν™”λ©΄ λ°©ν–₯을 μžλ™μœΌλ‘œ νšŒμ „ μ˜΅μ…˜μ„ ν™œμ„±ν™”ν•˜μ—¬ 화면을 κ°€λ‘œ λ˜λŠ” μ„Έλ‘œ λͺ¨λ“œλ‘œ μžλ™ μ „ν™˜ν•˜κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ ˆμ΄μ•„μ›ƒμ΄ 깨지지 μ•Šλ„λ‘ 각 λͺ¨λ“œμ— 맞게 μ΅œμ ν™”ν•©λ‹ˆλ‹€.
  • λ ˆμ΄μ•„μ›ƒ λ¦¬μ†ŒμŠ€ 폴더λ₯Ό res/layout와 res/layout-land둜 κ΅¬λΆ„ν•˜μ—¬ κ΄€λ¦¬ν•©λ‹ˆλ‹€.

νšŒμ› 정보 관리 κ΅¬ν˜„

  • 앱이 μ‹€ν–‰λ˜λŠ” λ™μ•ˆλ§Œ μž„μ‹œλ‘œ νšŒμ› 정보λ₯Ό μ €μž₯ν•˜κ³  관리할 수 μžˆλŠ” κ°„λ‹¨ν•œ 객체λ₯Ό 섀계해 λ³΄μ„Έμš”.(Singletone)
    • μ˜ˆμ‹œ) MemberManager
      • κΈ°λŠ₯: addMember, findMember, removeMember
      • data class ν™œμš©
profile
응애 λ‚˜ μ•„κΈ° 뉴비

0개의 λŒ“κΈ€