compileSdkVersion 29
buildToolsVersion '30.0.2'
minSdkVersion 21
targetSdkVersion 29
-
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'
본 프로젝트의 중심화면을 4개의 Fragment로 구성
- Home (홈)
- ShardBoard (지식 공유 게시판)
- MajorBoard (전공수업 지식 공유 게시판)
- Project (프로젝트원 모집 게시판)
사용 위젯
- 화면 전환을 위해 Bottom navigation view 사용
- 좌우 Scrolling이 가능한 ViewPager 사용
로그인
- 이메일과 비밀번호를 입력하여 앱에 로그인
- 등록된 사용자인 경우 : MainActivity로 이동
- 등록되지 않은 사용자인 경우 : "등록된 사용자가 아닙니다"를 Toast로 출력
회원가입
- 앱에서 사용할 이메일, 비밀번호, 닉네임을 설정하고 등록
비밀번호 찾기
- 등록된 이메일로 비밀번호를 재설정 할 수 있는 메일을 보내 새로운 비밀번호 등록
- 등록된 이메일인 경우 : 재설정 메일 전송
- 등록되지 않은 이메일인 경우 : "이메일을 확인해주세요"를 Toast로 출력
텍스트 슬롯 머신
- 앱, 웹, 알고리즘, 전공 4개의 단어 중 한 개가 랜덤으로 선택되는 슬롯 머신
- FrameLayout과 TextView의 animate() 사용
프로그래밍 언어 랭킹 슬라이더
- 많이 사용되는 1~10위까지의 프로그래밍 언어와 정보를 보여주는 슬라이더
- ViewPager, setCurrentItem, handler를 사용하여 슬라이더 제작
- 프로그래밍 언어 순위 정보 크롤링 (참조: https://www.tiobe.com/tiobe-index/)
내 정보
- 사용자의 닉네임, 이메일, 내가 쓴 글, 내가 찜한 글, 내가 좋아한 글 확인 및 회원탈퇴
- 내가 쓴 글 : 사용자가 작성한 글 목록 확인
- 내가 찜한 글 : 사용자가 찜한 글 목록 확인
- 내가 좋아한 글 : 사용자가 좋아한 글 목록 확인
- 회원탈퇴 : 사용자의 이메일, 닉네임, 비밀번호 정보를 삭제
사진 등록
- 세가지의 단계를 걸쳐 게시글에 이미지 업로드
- 기기의 카메라, 앨범 등에 관한 권한 허가
- 선택된 이미지를 Firestorage에 저장
- Firestorage에 저장된 이미지의 url을 Firestore에 저장
태그
- 각각의 게시글을 분류
- ChipGroup을 활용한 Chip을 동적으로 생성하여 기본적인 태그 기능 구현
- 태그 위 사진은 업로드 한 이미지를 확인하기 위해 구현
저장된 게시글 정보 불러오기
- Firestore에 저장되어 있는 데이터를 가져옴
좋아요, 찜
- ImageButton을 사용하여 좋아요, 찜 버튼 생성
- 버튼 클릭 시 Firestore에 해당 사용자의 uid를 추가, 색 변경
- 한번 더 클릭 시 해당 사용자의 uid 삭제, 원색으로 변경
이미지 보기