seoft

[모듈앱] drag-and-drop-between-multiple-grid 본문

개발일지

[모듈앱] drag-and-drop-between-multiple-grid

seoft 2020. 1. 30. 22:08

[개요]

quickly앱(https://seoft.tistory.com/30) 시나리오 중 애플리케이션 배치, 설정을 위한 페이지가 필요했고 복잡한 페이지는 모듈 단위로 만들어 다음에도 재사용 하고자 제작하게 되었다.

 

 

[결과]

기능요약.gif

 

 

[요구사항]

기본적인 홈런쳐에 있는 기능과 유사하며, 요구사항은 다음과 같다.

  • 9개의 아이템을 가지고 있는 4개의 그리드에 앱배치
  • 각 그리드나 폴더 내 아이템 추가, 삭제
  • 단순이동, 그리드간 이동
  • 폴더 생성, 폴더 삭제
  • 폴더 내의 아이템 각 그리드로 이동

 

 

[구현 요약]

  1. 센터, 하단 그리드, 휴지통 위치정보 획득, 터치 정보 확보
  2. 센터 그리드 한칸당 3등분으로 분배
  3. 그리드에서 LongClick시 아이템 정보, 좌표 획득 후 동적으로 create, 현 터치지점 따라다니도록 구현
  4. 터치 리스너로 각 터치정보에 속하는지 판단 후 진행, 중간 중간에 플로팅뷰 동적 변경, saving할 상태 관리
    1. 좌표 get, 3등분으로 분배한곳에 안속하는지(안속하면 retrun) 판단
    2. Delete에 속하는지 판단
    3. 리사이클러뷰 범위 밖인지 판단
    4. Empty 판단
    5. 정중앙 판단 with 폴더 insert, create
    6. 0~1/3 or 2/3~1 범위 판단
    7. 6번 범위시 가까운 empty index 파악 후 move
    8. 하단 그리드 속하는지 판단
    9. 터치 up시 삭제범위 속 or 그리드 초과범위 판단
    10. 폴더, 안폴더시 배치 처리
    11. 폴더이고 이동 배치 완료시 finish 처리
    12. 센터, 하단 그리드 갱신
  5. 폴더 처리시 중복사용 코드가 많아 상속을 쓰려다 초반 설계에서 잘못됬다는걸 깨닫고 편법사용
    1. static 변수와 같은 엑티비티 하나 더뛰어 폴더유무 판단
  6. 폴더, Empty, 기본앱 유무를 상위 클래스를 두어 공통으로 관리
  7. json list <-> object list로 preference로 관리

 

 

[Reference]

https://seoft.tistory.com/35?category=1066264

https://seoft.tistory.com/33?category=1066264

https://seoft.tistory.com/32?category=1066264

 

 

[Github]

https://github.com/seoft/seoft-android-libraries/tree/dev/drag-and-drop-between-multiple-grid

 

 

 

 

'개발일지' 카테고리의 다른 글

[모듈앱] write-post-with-items  (0) 2020.05.16
[급식판] 앱 소개  (0) 2020.04.16
[quickly] 앱 소개  (0) 2020.03.01
[quickly] 개발 과정  (0) 2020.03.01
[quickly] 개발 개요  (0) 2020.01.05
Comments