Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- RxJava
- kotlin
- 카드내역 공유
- 작성
- Quickly
- Koin
- fragment
- todofication
- 대학톡
- android clean architecture
- 올인원타이머
- 특가알람
- moveToState
- 특가게시판
- Android
- 안드로이드
- java.lang.OutOfMemoryError: Java heap space
- compileKotlin FAILED
- andorid
- 뷰 상태복구
- 타이머앱
- 카드 내역 공유 앱
- 안드로이드 클린 아키텍쳐
- RX
- recyclerview
- 뷰 상태 저장
- nvidia-docker
- List
- 특가촌
- onViewCreated
Archives
- Today
- Total
seoft
[모듈앱] drag-and-drop-between-multiple-grid 본문
[개요]
quickly앱(https://seoft.tistory.com/30) 시나리오 중 애플리케이션 배치, 설정을 위한 페이지가 필요했고 복잡한 페이지는 모듈 단위로 만들어 다음에도 재사용 하고자 제작하게 되었다.
[결과]
[요구사항]
기본적인 홈런쳐에 있는 기능과 유사하며, 요구사항은 다음과 같다.
- 9개의 아이템을 가지고 있는 4개의 그리드에 앱배치
- 각 그리드나 폴더 내 아이템 추가, 삭제
- 단순이동, 그리드간 이동
- 폴더 생성, 폴더 삭제
- 폴더 내의 아이템 각 그리드로 이동
[구현 요약]
- 센터, 하단 그리드, 휴지통 위치정보 획득, 터치 정보 확보
- 센터 그리드 한칸당 3등분으로 분배
- 그리드에서 LongClick시 아이템 정보, 좌표 획득 후 동적으로 create, 현 터치지점 따라다니도록 구현
- 터치 리스너로 각 터치정보에 속하는지 판단 후 진행, 중간 중간에 플로팅뷰 동적 변경, saving할 상태 관리
- 좌표 get, 3등분으로 분배한곳에 안속하는지(안속하면 retrun) 판단
- Delete에 속하는지 판단
- 리사이클러뷰 범위 밖인지 판단
- Empty 판단
- 정중앙 판단 with 폴더 insert, create
- 0~1/3 or 2/3~1 범위 판단
- 6번 범위시 가까운 empty index 파악 후 move
- 하단 그리드 속하는지 판단
- 터치 up시 삭제범위 속 or 그리드 초과범위 판단
- 폴더, 안폴더시 배치 처리
- 폴더이고 이동 배치 완료시 finish 처리
- 센터, 하단 그리드 갱신
- 폴더 처리시 중복사용 코드가 많아 상속을 쓰려다 초반 설계에서 잘못됬다는걸 깨닫고 편법사용
- static 변수와 같은 엑티비티 하나 더뛰어 폴더유무 판단
- 폴더, Empty, 기본앱 유무를 상위 클래스를 두어 공통으로 관리
- 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