Skip to content

Boyzmsc/kook-coching

 
 

Repository files navigation

Kook Coching

App Info

Version

compileSdkVersion 29
buildToolsVersion '30.0.2'

minSdkVersion 21
targetSdkVersion 29

Execution Environment

  • Used AVD : Pixel 3 API 29

  • Used Library

// Firebase를 연동하고 사용
implementation 'com.google.firebase:firebase-firestore:21.7.1'
implementation 'com.google.firebase:firebase-storage:19.1.1'
implementation 'com.google.firebase:firebase-auth:20.0.0'
implementation 'com.google.firebase:firebase-database:19.5.1'

// Jsoup을 이용한 Crawling
implementation 'org.jsoup:jsoup:1.11.3'

// 동기, 비동기 문제를 해결하기 위해 코루틴 사용
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'

// 게시글과 댓글 목록을 꾸미기 위해 CardView 사용
implementation 'androidx.cardview:cardview:1.0.0'

// 게시글과 댓글 목록을 보여주기 위해 RecyclerView 사용
implementation "androidx.recyclerview:recyclerview:1.1.0"
implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc03"

// 이미지 업로드를 위해 Multi Image Picker 사용
implementation 'gun0912.ted:tedbottompicker:2.0.1'
implementation 'gun0912.ted:tedpermission:2.2.3'

// Url 주소에 맞는 사진을 ImageView와 연동 후 사용
implementation 'com.github.bumptech.glide:glide:4.9.0'

// 코루틴을 쉽게 다룰 수 있는 Task.await를 사용
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.2.1'

App Structure

본 프로젝트의 중심화면을 4개의 Fragment로 구성

  • Home (홈)
  • ShardBoard (지식 공유 게시판)
  • MajorBoard (전공수업 지식 공유 게시판)
  • Project (프로젝트원 모집 게시판)

사용 위젯

  • 화면 전환을 위해 Bottom navigation view 사용
  • 좌우 Scrolling이 가능한 ViewPager 사용

1. Intro

2. Login, Register Screen

로그인

  • 이메일과 비밀번호를 입력하여 앱에 로그인
  • 등록된 사용자인 경우 : MainActivity로 이동
  • 등록되지 않은 사용자인 경우 : "등록된 사용자가 아닙니다"를 Toast로 출력

99639465-fb020880-2a8a-11eb-8e22-e786385bc6d6

회원가입

  • 앱에서 사용할 이메일, 비밀번호, 닉네임을 설정하고 등록

99639606-28e74d00-2a8b-11eb-934e-84d4186e1361

비밀번호 찾기

  • 등록된 이메일로 비밀번호를 재설정 할 수 있는 메일을 보내 새로운 비밀번호 등록
  • 등록된 이메일인 경우 : 재설정 메일 전송
  • 등록되지 않은 이메일인 경우 : "이메일을 확인해주세요"를 Toast로 출력

99639682-40bed100-2a8b-11eb-86e6-969fa896e470

3. Home Screen

텍스트 슬롯 머신

  • 앱, 웹, 알고리즘, 전공 4개의 단어 중 한 개가 랜덤으로 선택되는 슬롯 머신
  • FrameLayout과 TextView의 animate() 사용

프로그래밍 언어 랭킹 슬라이더

  • 많이 사용되는 1~10위까지의 프로그래밍 언어와 정보를 보여주는 슬라이더
  • ViewPager, setCurrentItem, handler를 사용하여 슬라이더 제작
  • 프로그래밍 언어 순위 정보 크롤링 (참조: https://www.tiobe.com/tiobe-index/)

2020-11-19 18-42-55 (1)

내 정보

  • 사용자의 닉네임, 이메일, 내가 쓴 글, 내가 찜한 글, 내가 좋아한 글 확인 및 회원탈퇴
  • 내가 쓴 글 : 사용자가 작성한 글 목록 확인
  • 내가 찜한 글 : 사용자가 찜한 글 목록 확인
  • 내가 좋아한 글 : 사용자가 좋아한 글 목록 확인
  • 회원탈퇴 : 사용자의 이메일, 닉네임, 비밀번호 정보를 삭제

4. WhiteBoard Screen

사진 등록

  • 세가지의 단계를 걸쳐 게시글에 이미지 업로드
  1. 기기의 카메라, 앨범 등에 관한 권한 허가
  2. 선택된 이미지를 Firestorage에 저장
  3. Firestorage에 저장된 이미지의 url을 Firestore에 저장

태그

  • 각각의 게시글을 분류
  • ChipGroup을 활용한 Chip을 동적으로 생성하여 기본적인 태그 기능 구현
  • 태그 위 사진은 업로드 한 이미지를 확인하기 위해 구현

Screenshot_1605773721

5. PostView Screen

6. Board Screen

저장된 게시글 정보 불러오기

  • Firestore에 저장되어 있는 데이터를 가져옴

7. PostView Screen

좋아요, 찜

  • ImageButton을 사용하여 좋아요, 찜 버튼 생성
  • 버튼 클릭 시 Firestore에 해당 사용자의 uid를 추가, 색 변경
  • 한번 더 클릭 시 해당 사용자의 uid 삭제, 원색으로 변경

이미지 보기

  • Firestore에 저장되어 있는 Image 출력

  • Glider library를 사용해 image url을 ImageView의 src로 설정

  • 저장된 이미지의 개수에 맞게 ImageView 동적 생성

    Screenshot_1605773743

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 100.0%