Skip to content

tnvnfdla1214/Malang

Repository files navigation

Malang

1. App

연인들의 연인 맺기와 일정을 공유할 수 있는 어플리케이션

Firebase - Malang

2. Inteface

  1. 로그인 화면

1. 구글 로그인/ 카카오 로그인 기능

2. 자동로그인 기능

  1. 회원 정보 화면

1. 회원정보의 입력은 사진, 닉네임, 이름, 생일, 성별을 받는 화면이다

2. 닉네임을 입력 받지 않을시 이메일의 앞부분으로 생성한다.

3. 앨범에 접근 시 접근 권한을 부여 받는다.

4. 사진을 선택 시 선택한 사진이 미리보기로 보여진다.

  1. 커플 매칭 화면

커플 코드를 발급 할 사람

1. 커플 코드가 뭔지 몰라요. 클릭

2. 처음 만난 날짜를 입력 받는다.

3. 커플 코드를 생성 받는다. > 상대방의 입력을 기다린다.

4. 커플 매칭 성사 후 일정 화면으로 이동한다.

커플 코드를 입력할 사람

1. 커플 코드가 있어요. 클릭

2. 커플 코드를 입력한다.

3. 커플 매칭 성사 후 일정 화면으로 이동한다.

  1. 일정 화면

1. 오늘 날짜의 월 달력이 표시된다.

2. 해당 월의 일정을 불러와 표시한다.

3. 일정 추가 버튼으로 일정을 추가한다.

  1. 일정 등록 화면

1. 일정을 입력 한다.

2. 일정의 날짜를 클릭하면 소형 달력이 나타난다.

3. 일정의 기간을 정한다.

4. 우상단의 체크 아이콘으로 일정을 추가한다.

  1. 일정 확인 화면

1. 일정이 일정바 형태로 확인이 가능하다.

2. 날짜를 클릭하면 해당 날짜의 다이얼로그가 생성된다.

3. 해당 날짜에 일정이 있을 시 다이얼로그에서도 확인이 가능하다.

  1. 일정 수정 & 삭제 화면

1. 다이얼로그에서 일정을 클릭하여 일정 수정 화면으로 이동한다.

2. 수정 사항을 입력하고 우상단의 체크 아이콘으로 수정을 한다.

3. 다이얼로그에서 일정을 오른쪽에서 왼쪽으로 스와이핑이 가능하다.

4. 삭제하기 버튼을 클릭하면 삭제가 가능하다.

3. Explanation

Ⅰ Calendar(패키지)

1. view (패키지)

  1. CalendarViewWithNotesActivitySDK21 : 커스텀한 달력의 구현 Activity가 있는 패키지이다.
    ◇ 주요 변수
    mShortMonths (현재 월), mCalendarView (커스텀한 달력), mCalendarDialog(날짜 클릭 시 생성되는 다이얼로그), mEventList(불러들인 월의 일정 리스트), user(현재 사용자 모델), CurrentUid(현재 사용자의 Uid), CurrentUser(현재 사용자 정보), Check_Month_Visited_List(불러들인 달의 리스트)
    ◆ 주요 기능
    ⓐ CalendarView에서 구현한 커스텀 달력을 띄워준다. 날짜를 클릭하면 해당 날짜 다이얼로그를 생성한다.
    ⓑ 일정이 표시되는 상황
    -처음 켜졌을 때 : CollectionReference로 파이어베이스에서 불러온다.
    -어플 사용중에 일정이 추가 되었을 때 : OnActivityResult(내가 추가하였을 때) / Listener(상대방이 추가했을 때)를 이용하여 불러온다.
    -다른 월로 이동하였을 때 : 이동한 월에 대한 일정을 Listener를 이용하여 불러온다.
    ⓒ 일정 추가 버튼으로 일정을 추가할 수 있다.

  2. CalendarView : 어플리케이션에 필요한 커스텀한 달력을 구현한 view이다.
    ◇ 특징
    여러가지 작은 view들이 모여 하나의 커다란 calewndarview라는 커스텀 뷰를 구성하고 있다.
    ◆ 주요 기능
    ⓐ 여러가지 리스너가 있다. (달이 이동함을 감지하는 리스너, 날짜가 클릭됨을 감지하는 리스너 등)
    ⓑ 이전 달 다음달에 표시되어야 할 월을 구해준다.
    ⓒ 총 7X6의 42개의 날짜 칸을 해당 달은 어디서부터 어디까지인지 계산하고, 날짜를 표기해준다.
    ⓓ 해당 월의 일정의 정보와 누가 작성한 것인지를 구분하여 일정바 색을 달리해준다.
    ⓔ 날짜 다이얼로그에서 드래그해 온 일정이 어느 날자에 추가 될것인지 드래그 된 위치를 감지하여 알려준다.
    ⓕ 달력을 구성하는 선의 색상 및 속성을 선언한다.

  3. CalendarDialog : 달력에서 날짜를 클릭하여 생성된 해당 날짜의 다이얼로그이다.
    ◆ 주요 기능
    ⓐ 뷰페이저를 이용해 이전과 다음 날짜의 다이얼로그를 오고 갈 수 있다.
    ⓑ 일정을 오른족에서 왼쪽으로 스와이핑하면 삭제할 수 있다.
    ⓒ 일정을 롱클릭하여 드래그할 수 있으며, 드래그하면 다이얼로그가 닫히고, 달력에 원하는 날짜에 드롭할 수 있다. 그러면 해당 날짜를 시작으로 일정이 이동된다.

2. activity (패키지)

  1. Create_Schadule : CalendarViewWithNotesActivitySDK21에서 일정을 추가하는 버튼을 클릭하였을 때 혹은 일정을 수정할 때에 실행되는 activity이다.
    ◇ 주요 변수
    Start_Calendar(시작 날짜), End_Calendar(끝 날짜)
    ◆ 주요 기능
    ⓐ 일정을 추가할 때면 일정이 비어있고, 날짜는 오늘 날짜로 설정되어 있다.
    ⓑ 일정을 수정할 때면 선택한 일정의 정보가 입력되어 있다.
    ⓒ 날짜를 클릭하면 소형 달력이 나와 날짜를 선택할 수 있다.
    ⓓ 생성된 일정은 파이어스토어의 CALENDAR 컬렉션에 저장된다.

  2. DragCreate_Schedule : CalendarDialog에서 일정을 롱클릭하여 드래그로 날짜에 드롭했을 때 실행되는 액티비티이다.
    ◇ 주요 변수
    Start_Calendar(시작 날짜), End_Calendar(끝 날짜)
    ◆ 주요 기능
    ⓐ Create_Schadule에서 일정을 수정할 때처럼 가져온 일정의 정보가 설정되어 있다.
    ⓑ 원한다면 날짜나 일정의 내용을 수정하여 추가할 수 있다.

  3. SelectDateAndTimeActivity : 일정을 추가할 때에 날짜와 시간을 선택할 수 있는 Picker가 있는 activity이다.
    ◆ 주요 기능
    ⓐ 상단에는 날짜를 하단에는 시간을 선택할 수 있는 Picker가 있다.

3. helpers (패키지)

  1. FrameLinearLayout : 달력에서 날짜를 구성하는 하나하나의 직사각형의 모양 틀 view

  2. ItemTouchHelperCallback : 날짜 다이얼로그에서 일정을 오른쪽에서 왼쪽으로 스와이핑 했을 때

  3. ItemTouchHelperListener : ItemTouchHelperCallback에서 이루어지는 스와이핑과 버튼의 클릭을 감지하는 리스너이다.

  4. SelectedTextView : 날짜가 클릭되었을 때 테두리가 점선이 그어지는 효과를 줄 수 있는 view이다.

  5. YMDCalendar : 캘린더의 값을 Year Month Day 3가지의 int형 데이터로 다룰 때에 사용하는 모델이다.

4. uihelpers (패키지)

  1. NumberPicker : 날짜를 선택하고 시간을 선택할 때에 시간 분의 선택을 위한 숫자 선택을 위한 view

Ⅱ Login (패키지)

1. couple (패키지)

  1. couple_askActivity : 사용자 정보를 입력하고 난 후 커플을 맺기 위한 activity이다.
    ◇ 특징
    코드를 보내주는 사람 / 코드를 받아서 입력하는 사람으로 나뉜다.
    ◆ 주요 기능
    ⓐ 코드를 보내주는 사람 / 코드를 받아서 입력하는 사람으로 나뉜다.
    ⓑ 코드를 보내주는 사람 > '커플코드가 뭔지 몰라요' 클릭
    ⓒ 코드를 받아서 입력하는 사람 > '커플코드가 있어요' 클릭

  2. couple_startdateActivity : 커플코드를 보내주는 사람이 연인의 연애 시작일을 입력하는 activity이다.
    ◆ 주요 기능
    ⓐ 날짜를 입력하고 다음 버튼을 누르는 순간 파이어 스토어에 COUPLE 컬렉션에 반쪽짜리 커플이 생성된다.
    ⓑ 남자와 여자일 때 각각 상대방의 생년월일은 0년 0월 0일로 초기화 시켜 커플 데이터를 생성한다.

  3. couple_codecreateActivity : couple_startdateActivity에서 날짜를 입력하고 넘어오면 커플 코드를 발급 받을 수 있다.
    ◆ 주요 기능
    ⓐ 코드복사를 하여 클립보드에 커플 코드를 복사하여 저장 할 수 있다.
    ⓑ 코드복사를 하면 상대방이 코드를 입력할 때까지 대기한다. (토스트 메시지로 복사가 완료되었음을 알수 있다.)

  4. couple_editcodeActivity : 커플코드를 받아서 입력하는 사람이 받은 코드를 입력하는 activity이다.
    ◆ 주요 기능
    ⓐ 복사한 코드를 입력하여 다음을 누르면 couple_startdateActivity에서 생성된 반쪽짜리 커플에 코드를 받아 입력한 사람의 데이터가 입력되며 커플이 맺어진다.

  5. couple_finishActivity : 앱을 이용하기 이전에 커플이 맺어졌음을 알려주는 activity이다.
    ◆ 주요 기능
    ⓐ 커플 코드를 보낸 사람은 상대방이 입력을 완료하면 이동하게 된다.
    ⓑ 커플 코드를 받아 입력한 사람은 입력을 완료하면 이동하게 된다.

2. activity (패키지)

  1. LoginActivity : 어플의 시작화면이며, 로그인하는 activity이다.
    ◆ 주요 기능
    ⓐ 카카오 로그인과 구글 로그인이 있으며, 이미 로그인 정보가 있다면, 바로 메인 달력 화면으로 넘어가게 된다.
  2. MemberInitActivity : 로그인 후 사용자의 정보를 받는 activity이다.
    ◆ 주요 기능
    ⓐ 이름, 성별, 생일, 프로필 사진, 닉네임 등을 입력 받는다.
    ⓑ 사용자의 정보는 파이어스토어의 USER 컬렉션에 저장된다.
    ⓒ 프로필 사진의 url은 파이어스토어에 이미지 자체는 파이어스토어 Storage에 저장된다.
  3. GalleryActivity : 프로필 사진의 선택을 위해 앨범으로 접근하는 activity이다.
    ◆ 주요 기능
    ⓐ 앨범 접근에 대한 권한을 요청 받은 후 앨범에 접근할 수 있다.
    ⓑ GalleryAdapter로 앨범의 사진을 나열 받는다.

3. helper (패키지)

  1. GalleryAdapter : 앨범 내의 사진들의 나열하는 adapter이다.
    ◆ 주요 기능
    ⓐ item_gallery로 하나하나의 이미지들을 리사이클러 뷰로 나열한다.

  2. GlobalApplication : 카카오 로그인을 위한 java 파일이다.
    ◆ 주요 기능
    ⓐ 여러가지 에러를 잡는 조건문이 있다.

Ⅲ Data (패키지)

1. 모델

  1. USER : 사용자의 정보를 다루는 USER 모델
    ◆ 주요 기능
    ⓐ 사용자의 이름, 성별, 닉네임, 생일 년월일, 커플Uid, 유저의 Uid, 레벨, 프로필 이미지 url

  2. COUPLE : 커플의 정보를 다루며, 이어주는 COUPLE 모델
    ◆ 주요 기능
    ⓐ 커플의 Uid, 연애 시작 , 닉네임, 생일 년월일, 커플Uid, 레벨, 프로필 이미지 url

  3. CALENDAR : 로그인 액티비티
    ◆ 주요 기능
    ⓐ 일정 Uid, Event Uid, 일정 내용, 일정 시작 날짜, 일정 종료 날짜, 일정 fix 날짜, 일정 일수
    ⓑ 파이어베이스에 저장되는 CALENDAR 컬렉션을 다루는 모델이다.

  4. Event : 메인 액티비티
    ◆ 주요 기능
    ⓐ 일정 Uid, Event Uid, 일정 내용, 일정 시작 날짜, 일정 종료 날짜, 일정 fix 날짜, 일정 일수
    ⓑ Calendarview에서 일정을 다루기 위해서 CALLENDAR 모델을 담은 모델이다.

Ⅳ Util (패키지)

  1. BasicActivity
    ◆ 주요 기능
    ⓐ toolbar를 어플리케이션의 코드 전반에서 모두 똑같은 코드를 사용하므로 Util 패키지로 빼내어서 사용한다.

  2. Util
    ◆ 주요 기능
    ⓐ BasicActivity와 비슷한 기능을 하며, 앨범의 경로를 찾아갈 때에 공통적으로 사용한다.
    ⓐ 파이어스토어에 Storage에 이미지를 저장할 때에 Storage의 주소를 빼내어 사용한다.

5. FeedBack

피드백이나 기능의 개선사항에 대한 의견은 [email protected] 혹은 [email protected] 으로 보내주시면 감사하겠습니다.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •  

Languages