Skip to content

Latest commit

 

History

History
259 lines (135 loc) · 8.71 KB

README.md

File metadata and controls

259 lines (135 loc) · 8.71 KB

국코칭

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. 기타

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