-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
피클 구조 설계를 위한 요구사항 명세 #4
Comments
진입전 퍼미션 처리도 피클에서 하면 좋을것 같아요 |
페이징은 paging컴포넌트와 PositionalDataSource를 사용하면 좋을것같습니다 |
interface 기반 설계를 하실건가요? |
|
기존에 많이 쓰는 피커에서 지원하는 mime type 리스트를 퍼왔습니다.
|
지금 생각나는 오래 작업했던 이슈들은 이정도가 있는것같네요! 오래전에 작업을 많이 했었어서 기억이 잘 안나네요 ㅠㅠ |
인스타그램을 잘 살펴보니 정말 많은 기능이 있네요.
피커의 기능과 거리가 먼것들은 가져다 쓰는 사람이 만들어 쓸 수 있도록 할 수 있을까요?? |
뷰모델을 쓰셔서 하시니 크게 영향은 없을것같지만 또 생각나서 코멘트 남깁니다. |
싱글 액티비티 구조, Navigation Component 활용해서 네비게이션 그래프로 UI 변경
앱에서 피클 호출시 Pickle.startActivityForResult(..., ReqCode) 또는 Pickle.start(...,Callback) 구조 고려중
PickleViewModel 을 토대로 N개의 View(Fragment)를 갖는 MVVM 패턴 사용
ContentResolver를 통한 20~30만장의 사진 또는 동영상 로드시 모바일 환경에서 최대 수초에서 수십초까지 초기화하는데 시간이 소요되므로, 페이지네이션을 하는 구조로 가야함. 사진이 19만장 정도 있는 갤럭시 S8에서 인스타그램 실행후 첫 번째 썸네일 이미지가 표현되는데까지 9초가 걸림.
인스타 그램 피커는 [ 라이브러리 / 사진 및 동영상 ] 안드로이드는 2개의 탭 아이폰은 3개의 탭을 갖는 뷰페이저형식으로 구성되어있음.
ViewPager2-Rc1 사용 고려중, 젯팩 문서에 Navigation Component와 ViewPager2를 같이 사용하는 예제가 나와있음.
라이브러리
라이브러리화면에서 상단은 동영상이 실행가능한 섬네일 화면 하단은 일반적인 그리드뷰로 구성
상단과 하단이 사용자의 액션에 의해 서로 상호작용해야하므로 CoordinatorLayout내에서 상단 View + 하단 RecyclerView로 구성하는것을 고려중.
사진 및 동영상은 Camera API를 직접사용해야함.API 파편화( Camera, Camera2)를 고려해야하므로 CameraX 라이브러리를 사용하거나 최악의 경우 Camera2(롤리팝 API 21)만 쓰는것을 고려중.
상단 앱바의 경우 뒤로 갈수있는 back버튼과 폴더별 리스트 그리고 편집을 할수 있는 다음 버튼을 가지고 있다.
편집기능은 추후 고려 우선 이미지 선택기능에 집중.
인스타그램은 액티비티를 portrait만 지원하지만, 피클을 가져다 쓰는 앱에서는 portrait & landscape로 사용할 수도 있기 때문에 configuration change에 대한 대비를 해야함. AAC ViewModel 사용으로 query를 반복하는 일을 없도록 함
피클이 백그라운드에 있고 다른 앱에서 사진을 찍거나 삭제후 피클로 진입할 경우 재쿼리 또는 FileObserver 등을 통해 새로 추가/삭제된 이미지를 업데이트해야한다.
지원하는 포맷 결정해야함 (JPG, PNG, GIF, MP4, HEIC 등) , 아마 글라이드에 의존적으로 결정해야할 듯
멀티 셀렉션 구현 방식 고려해야함(RecyclerView selection library 검토)
피클을 사용하는 애플리케이션과 데이터를 전달할 규격(entity)을 결정해야함(포맷, 사이즈, 경로, 아이디, 기타 등등)
추가적으로 고려하고 있는 내용을 댓글로 달아주세요~
해당내용 토대로 업무 분장하고 이슈 쪼개서 같이 진행해보도록할게요.
The text was updated successfully, but these errors were encountered: