Android 拖拽 兒童教育遊戲
阿新 • • 發佈:2020-07-20
1、兩個概念
1、目標View
- 不是被拖拽的View,是要拖拽去哪個區域,這個區域就目標View,它要設定OnDragListener監聽。
2、被拖拽的View
- 需要通過startDrag來移動。
2、具體使用
1、示例
-
首先,目標View設定OnDragListener監聽。
mTextMessage.setOnDragListener(this);
-
相應的回撥
@Override public boolean onDrag(View v, DragEvent event) { final int action = event.getAction(); switch (action) { case DragEvent.ACTION_DRAG_STARTED: // 拖拽開始 return event.getClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN); case DragEvent.ACTION_DRAG_ENTERED: // 被拖拽View進入目標區域 return true; case DragEvent.ACTION_DRAG_LOCATION: // 被拖拽View在目標區域移動 return true; case DragEvent.ACTION_DRAG_EXITED: // 被拖拽View離開目標區域 return true; case DragEvent.ACTION_DROP: // 放開被拖拽View String content = event.getClipData().getItemAt(0).getText().toString(); //接收資料 Toast.makeText(this,content,Toast.LENGTH_SHORT).show(); return true; case DragEvent.ACTION_DRAG_ENDED: // 拖拽完成 return true; } return false; }
-
執行拖拽
mButton.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { ClipData.Item item = new ClipData.Item(mTextMessage.getText()); //傳過去的資料 ClipData data = new ClipData(null, new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN}, item); mButton.startDrag(data,new View.DragShadowBuilder(mButton),null,0); return true; } });