我正在开发Android应用程序,我正在使用拖放视图.
我在我的视图上实现了onLongClick(实际上使用带有1.5秒长点击阈值的onTouch)(屏幕截图中的圆圈).当检测到长按时,我会显示两个拖放区域(图像视图的onDragListener分别附加,绿色框位于屏幕截图中).
当我的视图被拖放到任一个拖放区域(调用ACTION_DROP)时,我的代码工作正常,但问题是,我还需要能够告诉我的圆圈何时掉落到拖放区域之外,这样我就可以重置了国家.在这种情况下,我没有从两个丢弃区域中的任何一个触发任何回调.我不认为我从使用startDrag方法的视图中看到了任何调用方法.
只有在将视图放到任何拖放区域之外后才能从logcat获取的是:
I/ViewRootImpl:报告丢弃结果:false
有没有办法从我的代码中检测到"drop result:false"?帮助将不胜感激!
截图链接如下:

----------更新11/21 ----------
在我第一次发布这个问题时,我仍然试图掌握高级概念,但现在我意识到我应该包含更多细节.
以下是我的应用中目前使用的一些代码段.顺便说一下,我在服务中使用那些视图 - 圆(锚)和绿框(dropRegions) - 而不是Activity,所以我使用WindowManager添加视图.
我仍然有同样的问题,而我没有得到的主要内容是,从未调用过ACTION_DRAG_ENTERED和ACTION_DRAG_EXITED.到目前为止,只有ACTION_DROP为我工作.我还缺少什么吗?
以下是代码的相关部分.
在长按圆圈时调用(在sandrstar的响应后稍微修改):
private void anchorOnLongClick(View view) {
Log.d("####", "LONG CLICK");
showAnchorDropRegion();
ClipData.Item item = new ClipData.Item((String) view.getTag());
ClipData data = new ClipData((String) view.getTag(),
new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN}, item);
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, null, 0);
setupAnchorDropRegion();
showAnchorDropRegion();
}
Run Code Online (Sandbox Code Playgroud)
将拖动侦听器附加到绿色框:
/* set up the region where anchor can be drag-and-dropped */
private void setupAnchorDropRegion() {
ivDropRight = new ImageView(this);
ivDropRight.setImageDrawable(getResources().getDrawable(R.drawable.dropregion_normal));
ivDropRight.setOnDragListener(new View.OnDragListener() {
@Override …Run Code Online (Sandbox Code Playgroud)