Skip to content

n0y0j/kook_coching

Repository files navigation

국코칭

0. Version and Execution Environment

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'

1. App structure

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

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

사용 위젯

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

1-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위까지의 프로그래밍 언어와 정보를 보여주는 슬라이더

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

내 정보

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

Screenshot_1605773688 Screenshot_1605773693 esktop\99639975-aa3edf80-2a8b-11eb-9ef1-279888ff6222.png" alt="Screenshot_1605773701" width="300" float="left" />

99639975-aa3edf80-2a8b-11eb-9ef1-279888ff6222


4-0 WriteBoard screen

4. WhiteBoard screen

사진 등록

  • 세가지의 단계를 걸쳐 게시글에 이미지 업로드

    1. 기기의 카메라, 앨범 등에 관한 권한 허가
    2. 선택된 이미지를 Firestorage에 저장
    3. Firestorage에 저장된 이미지의 url을 Firestore에 저장

99642327-baa48980-2a8e-11eb-8c26-b18e47bf47a2 99642338-bd06e380-2a8e-11eb-94a6-e39c55347666

99642344-bed0a700-2a8e-11eb-8e17-a8057f429bd9

태그

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

Screenshot_1605773721


4-1 PostView Screen

5. Board screen

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

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

6. PostView screen

좋아요, 찜

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

Screenshot_1605773737 Screenshot_1605773734

이미지 보기

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

    • Glider library를 사용해 image url을 ImageView의 src로 설정
    • 저장된 이미지의 개수에 맞게 ImageView 동적 생성
    Screenshot_1605773743

7. Run Screen

Run Screen

8. 기타

코루틴을 사용하여 동기, 비동기 처리

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages