Drag and Drop 구현
31 Aug 2019 | Android안드로이드에서 드래그&드랍(Drag & Drop) 기능은 API로 제공을 해주기 때문에 아래와 같은 요소만 구현해주면 간편하게 구현할 수 있습니다.
- Drag를 위해 클립보트(Clipboard)에 저장할 내용
- Drag 동안 화면에 반투명하게 보여줄 이미지
- Drag 이벤트를 처리하는 부분
Drag 시작
private fun onLongClick(View view) {
        val data = ClipData.newPlainText("message", "hello")
        val builder = View.DragShadowBuilder(view); 
        view.startDragAndDrop(data, builder, view, 0)
}
Drag 이벤트 처리
setOnDragListener 인터페이스를 구현해주면 됩니다. 여기서 주의할 점은 return true 부분입니다. 
true로 리턴해야만 DragEvent.ACTION_DROP 등의 이벤트를 수신할 수 있습니다. 만약 false를 리턴하게 되면,
DragEvent.ACTION_DRAG_STARTED 이벤트만 수신하며 나머지 이벤트는 받지 못합니다.
override fun onDrag(v: View?, event: DragEvent?): Boolean {
        when(event?.action) {
            DragEvent.ACTION_DRAG_STARTED -> {
                Log.i("[snowdeer] ACTION_DRAG_STARTED()")
            }
            DragEvent.ACTION_DROP -> {
                Log.i("[snowdeer] ACTION_DROP(${event.x}, ${event.y})")
                // TODO : Item을 Drop 했을 때 처리
            }
        }
        return true
    }
  