Android 是否有一种方法可以在触摸点不进入视图的情况下处理拖放操作';边界?

Android 是否有一种方法可以在触摸点不进入视图的情况下处理拖放操作';边界?,android,drag-and-drop,Android,Drag And Drop,我正在android上开发一个拖放应用程序,其中一个视图可以拖放到另一个视图上。我正在使用 View.OnDragListener和重写onDrag方法以侦听拖动事件 只有当我的手指点(接触点)进入可以处理跌落的视图范围时,我的跌落才会得到处理。我希望在拖动的视图进入时处理跌落,而不仅仅是在触摸点进入时。 更简单地说,我希望在拖放阴影与视图边界重叠时处理拖放 在安卓系统中有没有办法做到这一点 下面是被覆盖的onDrag查看方法。OnDragListener @Override publi

我正在android上开发一个拖放应用程序,其中一个视图可以拖放到另一个视图上。我正在使用
View.OnDragListener
和重写
onDrag
方法以侦听拖动事件

只有当我的手指点(接触点)进入可以处理跌落的视图范围时,我的跌落才会得到处理。我希望在拖动的视图进入时处理跌落,而不仅仅是在触摸点进入时。 更简单地说,我希望在拖放阴影与视图边界重叠时处理拖放

在安卓系统中有没有办法做到这一点

下面是被覆盖的
onDrag
查看方法。OnDragListener

@Override
    public boolean onDrag(View view, DragEvent dragEvent) {
        LinearLayout dragAndDropLayout = findViewById(R.id.layout_drag_n_drop);
        ImageView actionBox = (ImageView) view;
        int dragAction = dragEvent.getAction();
        CardView parentCardView = (CardView) actionBox.getParent();

        if (dragAction == DragEvent.ACTION_DRAG_STARTED) {
            mMenuAdapter.removeMenu(draggedMenuText);
            parentCardView.setCardBackgroundColor(Color.parseColor("#FF4081"));
            dragAndDropLayout.setBackgroundColor(Color.LTGRAY);
            performEnterAnimation(actionBox.getParent());
        } else if (dragAction == DragEvent.ACTION_DRAG_ENDED) {
            if (dropEventNotHandled(dragEvent)) {
                mMenuAdapter.addMenuAt(draggedMenuText, 0);
            }
            parentCardView.setCardBackgroundColor(Color.parseColor("#3F51B5"));
            dragAndDropLayout.setBackgroundColor(Color.TRANSPARENT);
            ((CardView) parentCardView.getParent()).setCardBackgroundColor(Color.TRANSPARENT);
            updateActionBoxesAsPerPreferences();
        } else if (dragAction == DragEvent.ACTION_DRAG_ENTERED) {
            containsDraggable = true;

            parentCardView.setCardBackgroundColor(Color.parseColor("#FF4081"));
            ((CardView) parentCardView.getParent()).setCardBackgroundColor(Color.LTGRAY);

            Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                vibrator.vibrate(VibrationEffect.createOneShot(10, VibrationEffect.DEFAULT_AMPLITUDE));
            }
        } else if (dragAction == DragEvent.ACTION_DRAG_EXITED) {
            containsDraggable = false;

            parentCardView.setCardBackgroundColor(Color.parseColor("#FF4081"));
            dragAndDropLayout.setBackgroundColor(Color.LTGRAY);
            ((CardView) parentCardView.getParent()).setCardBackgroundColor(Color.TRANSPARENT);

        } else if (dragAction == DragEvent.ACTION_DROP) {
            if (containsDraggable) {
                int oldIconResource = getIconResourceOfView(view);
                String oldIconName = MenuAsset.getNameOf(oldIconResource);

                CharSequence text = dragEvent.getClipData().getItemAt(0).getText();
                if (text.equals("list_item")) {
                    updateSharedPreferences(view, draggedMenuText);
                    mMenuAdapter.removeMenu(draggedMenuText);
                    mMenuAdapter.addMenuAt(oldIconName, 0);
                } else {
                    updateSharedPreferences(view, draggedMenuText);
                    if (text.equals("action_box_1")) {
                        updateSharedPreferences(mActionBox1, oldIconName);
                        performDropAnimation(mActionBox1);
                    } else if (text.equals("action_box_2")) {
                        updateSharedPreferences(mActionBox2, oldIconName);
                        performDropAnimation(mActionBox2);
                    } else if (text.equals("action_box_3")) {
                        updateSharedPreferences(mActionBox3, oldIconName);
                        performDropAnimation(mActionBox3);
                    }
                }
                updateActionBoxesAsPerPreferences();
                performDropAnimation(actionBox);

            }
        }

        return true;
    }

    private boolean dropEventNotHandled(DragEvent dragEvent) {
        return !dragEvent.getResult();
    }

请显示代码的相关部分。@Binarus我已经编辑了这篇文章。请看一看。