如何在DragEvent中设置Action

时间:2016-12-13 04:20:26

标签: android drag-and-drop touch motionevent

我正在使用OnDragListener来拖放图片。我有MOTIONEVENT.ACTION_MOVE来实现图像移动功能。在动作移动中的某个点,我想结束拖动并移除它的阴影。是否可以在拖动事件中设置操作?在释放手指之前我想调用drop事件。

switch(event.getAction()) {

      case MotionEvent.ACTION_MOVE:
           //here i want to remove shadow and stop dragging
           break;
      case DragEvent.ACTION_DROP:break;
   }

1 个答案:

答案 0 :(得分:0)

您可以在类/片段中实现OnDragListener。

          class MyDrag implements OnDragListener {
            Drawable image = getResources().getDrawable(
                            R.drawable.shape_droptarget);

            @Override
            public boolean onDrag(View v, DragEvent event) {
                    int action = event.getAction();
                    switch (event.getAction()) {
                    case DragEvent.ACTION_DRAG_STARTED:
                            // Signals the start of a drag and drop operation
                            break;
                    case DragEvent.ACTION_DRAG_ENTERED:
                           //Signals to a View that the drag point has entered the bounding box of the View
                            v.setBackgroundDrawable(image);
                            break;
                    case DragEvent.ACTION_DRAG_EXITED:
                           //Signals that the user has moved the drag shadow out of the bounding box of the View or into a descendant view that can accept the data.
                            v.setBackgroundDrawable(image);
                            break;
                    case DragEvent.ACTION_DROP:
                            // Signals to a View that the user has released the drag shadow, and the drag point is within the bounding box of the View and not within a descendant view that can accept the data.
                            View view = (View) event.getLocalState();
                            ViewGroup owner = (ViewGroup) view.getParent();
                            owner.removeView(view);
                            LinearLayout container = (LinearLayout) v;
                            container.addView(view);
                            view.setVisibility(View.VISIBLE);
                            break;
                    case DragEvent.ACTION_DRAG_ENDED:
                          //Signals to a View that the drag and drop operation has concluded.
                            v.setBackgroundDrawable(image);
                    default:
                            break;
                    }
                    return true;
            }
    }

有关详细信息,请参阅此处Drag and Drop