Android学习之DragEvent
关于DragEvent Google Android API中是这么说的
Represents an event that is sent out by the system at various times during a drag and drop operation. It is a complex data structure that contains several important pieces of data about the operation and the underlying data.
大致意思:DragEvent是在执行拖放操作时系统在不同时间所发出的一个事件。它是一个复杂的数据结构,其中包含了一系列重要的有关这个拖放操作的数据和底层的数据。
DragEvent有6中事件类型:ACTION_DRAG_ENDED、ACTION_DRAG_ENTERED、ACTION_DRAG_EXITED、ACTION_DRAG_LOCATION、ACTION_DRAG_STARTED、ACTION_DROP
下面,将详细介绍这几种事件:
ACTION_DRAG_STARTED
当拖放操作开始时,View收到的事件。
ACTION_DRAG_ENDED
当一个View在拖放操作中发生了形变(View发生了变化),应该在响应这个事件时变回原来的View(normal状态时的View)。
一般View收到ACTION_DRAG_STARTED的事件后,都会在整个DragEvent事件结束时收到ACTION_DRAG_ENDED事件,除非,在拖放事件结束时,次View不可见。
ACTION_DRAG_ENTERED
当Drag操作进入View的边界时,就会发出此事件。
如果一个View接收Drag操作,它就会在当它(这个View)成为Drag的目标时,改变样子(View发生了变化),以此来响应ACTION_DRAG_ENTERED事件。
当Drag操作离开View后,再次进入VIew时,会先收到 ACTION_DRAG_ENTERED 的事件,之后才收到ACTION_DRAG_LOCATION事件。
ACTION_DRAG_EXITED
当拖放操作离开View的边界框时的,View收到的事件。View可以通过改变样子的方式来告诉用户,它不在是Drag操作的目标了。
ACTION_DRAG_LOCATION
当ACTION_DRAG_ENTERED之后,拖影仍在View的边界内,就发出这个信号。getX()和getY()函数可以获得,Drag操作在View内的坐标。
View接收到ACTION_DRAG_ENTERED事件始终在接受到 ACTION_DRAG_LOCATION事件之前。
ACTION_DROP
用户释放拖放前,拖放点在View内部,就会发送ACTION_DROP事件。View可以通过调用getClipData()来检索DragEvent中的数据