前置条件:View.DragShadowBuilder 的shadow的手指位置和onDragEvent落点位置是一致的,不够遇到需要手指不能挡住阴影的需求的话可以用反射处理
dropX和dropY是你要落下的点,这样就可以不需要变动到其他逻辑
Field mX = event.getClass().getDeclaredField("mX");
mX.setAccessible(true);
mX.set(event, dropX);
Field mY = event.getClass().getDeclaredField("mY");
mY.setAccessible(true);
mY.set(event, dropY);
ps:最近更新了Android P beta版,发现出现了问题,可能跟Android 9.0 禁用了 hide APIs有关,如果有人知道怎么处理可以回复一下。或者不用startDragAndDrop的话,直接用View的移动,配合ViewCompat.offsetTopAndBottom或者ViewCompat.offsetLeftAndRight。