brunch

You can make anything
by writing

C.S.Lewis

by 장대희 Jan 27. 2016

Android Brunch Editor 살펴보기2

ImageView 의 Drag and Drop

브런치 에디터에 쓰인 드래그 앤 드롭 살펴보기 2


드래그앤 드롭으로 이미지를2단 또는 3단배치하면 다음과 같다.

LinearLayout에 horizontal로 크게 7개의 View가 자리를 잡고 있다.

위 첨부를 보면 그냥 5개처럼 보이지만 맨왼쪽과 맨 오른쪽에 드롭을 받을때 보여질 View 가 숨어있다.

레이아웃은 이렇게 되어있다는 얘기.


이제 움직이다가 드롭가능한 구역으로 들어오면..

case DragEvent.ACTION_DRAG_LOCATION:

이미지View를 드래그하다가 같은 이미지View 에 들어오게 되면,

1. 손꾸락의 좌표를 구한다.

2. 같은 블럭내에서의 이동인지 다른블록에서 들어온건지 구분한다.

3. 같은 블록에서 이동이면, 2개짜리였는지 3개짜리였는지 구분한다.

4. 이동중인것이 첫번째것인지 두번째것인지 구분하고,

  해당손꾸락의 x좌표의 위치를 현재 존재하는 이미지의 좌표와 비교한다.

  이에따라 보여져야할 사이간격 View를 결정해서 에니메이션으로 넓히면서 보여준다.


나머지 경우의 수도 각각 처리한다.



Drop 이 완료되면...

case DragEvent.ACTION_DROP:

이동중이던 view 의 데이터(이미지)를 대상 View 에 넣어주거나 바꿔치기하고,

보여줬던 들어갈 사이공간 View는 안보이게 하고,

그리고 이동중이던 view의 데이터는 없앤다.



설명하기가 참 어렵다... ㅠ.ㅠ

회사가 허락한다면 github 에 올리고 싶다.

어쩔 수 없이, 소스코드의 일부를 캡쳐했다. ㅠ.ㅠ


p.s.

이번 글은 망했어요.. ㅡ.ㅡ;;;;;

매거진의 이전글 Android Brunch Editor 살펴보기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari