2013-03-04 129 views
0
// Touched 
public class ChoiceTouchListener implements OnTouchListener { 
    public boolean onTouch(View view, MotionEvent motionEvent) { 

     switch (motionEvent.getAction()) { 

     case MotionEvent.ACTION_MOVE: 

      return true; 

     case MotionEvent.ACTION_DOWN: 
      Viewed = String.valueOf(view.getId()); 

      ClipData data = ClipData.newPlainText("", ""); 
      DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); 

      // Drag Function When Item Touched 
      view.startDrag(data, shadowBuilder, view, 0); 
      return true; 

     case MotionEvent.ACTION_UP: 
      return true; 

     default: 
      return true; 
     } 
    } 
} 



private class ChoiceDragListener implements OnDragListener { 

    // onDrag Method, imagine we dragging numbers from display TextView 
    @Override 
    public boolean onDrag(View v, DragEvent event) { 

     // Android has onDrag action types. there are some kind of action 
     switch (event.getAction()) { 

      // if drag stared 
      case DragEvent.ACTION_DRAG_STARTED: 

      break; 

      // if drag entered software 
      case DragEvent.ACTION_DRAG_ENTERED: 

      break; 

      // if drag exited, stopped or something 
      case DragEvent.ACTION_DRAG_EXITED: 

      break; 

      // main case, if drag dropped what we do... 
      case DragEvent.ACTION_DROP: 

       // handle the dragged view being dropped over a drop view 
       View view = (View) event.getLocalState(); 

       // stop displaying the view where it was before it was dragged 
       // ************* view.setVisibility(View.KEEP_SCREEN_ON); 

       // view dragged item, where numbers will be dragged 
       dropTarget = (TextView) v; 

       // view dropped item, that will be dropped in drag TextView 
       dropped = (TextView) view; 

       // view result place, when make math operation, show results 
       resultPlace = (TextView) findViewById(R.id.calcResult); 


       // simple debug 
       // ****** resultPlace.setText(dropped.getText() + " " + dropTarget.getText()); 

       // if an item has already been dropped here, there will be a tag 
       Object tag = dropTarget.getTag(); 


       // if there is already an item here, set it back visible in its 
       // original place 
       if (tag != null) 
       { 
        // the tag is the view id already dropped here 
        int existingID = (Integer) tag; 

        // set the original view visible again 
        findViewById(existingID).setVisibility(View.VISIBLE); 


       } 

       // set the tag in the target view being dropped on - to the ID 
       // of the view being dropped 
       dropTarget.setTag(dropped.getId()); 

       // show results 
       resultPlace.setText(dropped.getText() + " " + dropTarget.getText() + " " + dropped.getText()); 



      break; 

      // if drag ended, we did it already successfully 
      case DragEvent.ACTION_DRAG_ENDED: 

      break; 

      // what do default 
      default: 

      break; 
     } 
     return true; 
    } 
} 

我有非常简单的触摸和拖动类。 我唯一的问题是,当我拖动项目并放入特定的布局时,我的项目也保持旧位置。是否有任何方法在android中检测我感动的项目并在删除后删除它?Android,删除拖放项后

我有一个小应用程序,单击数字并在仪表板上拖动鼠标,然后重复它并将所有项目拖放到X和Y位置的仪表板上。这就是为什么我想清空旧数字空间来创建另一个。

谢谢...

+0

https://stackoverflow.com/questions/48293198/how-to-drag-and-drop-on-dropped-postive-and-deelete-item-from-draageview-in-andr @coreprojectz如果你有解决方案可以请你在这个问题上建议我 – 2018-01-17 03:42:11

回答

0

您可以在触摸监听器中获取视图的父代。在下面的操作中,将父视图保留在全局变量中,并在视图放下时,使用removeView(View v)函数将其从父视图中移除。

+0

https://stackoverflow.com/questions/48293198/how-to-drag-and-drop-on-dropped-postion-and-deelete-item-from-draageview-in-andr你能否检查我在这个问题上长期坚持的问题 – 2018-01-17 03:41:44