本文主要是介绍Android View 拖拽 移动 碰撞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Android View 拖拽 移动 碰撞 事件
1. 被拖动view
监听被拖动view 的长按事件,通过ClipData 生成影子view,可在此方法之后设置view为隐藏状态
view.setOnLongClickListener(new View.OnLongClickListener() {@Override public boolean onLongClick(View v) {ClipData.Item item=new ClipData.Item((String)v.getTag());ClipData data=new ClipData(TAG,new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN},item);v.startDrag(data,new View.DragShadowBuilder(v),null,0);return true;} });
2. 目标view
给目标view设置OnDragListener事件
layout.setOnDragListener(dragListener);
在事件回调方法中,可根据用户手指拖动的范围进行相应操作
View.OnDragListener dragListener=new View.OnDragListener() {@Override public boolean onDrag(View v, DragEvent event) {final int action = event.getAction(); switch (action) {case DragEvent.ACTION_DRAG_STARTED://拖拽开始 if (event.getClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {return true;}return false; case DragEvent.ACTION_DRAG_ENTERED://拖拽进入目标区域 return true; case DragEvent.ACTION_DRAG_LOCATION://拖拽位置 return true; case DragEvent.ACTION_DRAG_EXITED://拖拽到目标区域外 return true; case DragEvent.ACTION_DROP: //拖拽完成之后松开手指 return true; case DragEvent.ACTION_DRAG_ENDED://拖拽完成 return true; default:break; }return false; } };
这篇关于Android View 拖拽 移动 碰撞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!