1.在长按的点击事件里面实现下面的操作。
private static void setOnlongclicklistener(View v) {
v.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
view.getTag();
ClipData data = ClipData.newPlainText("tag",
(CharSequence) view.getTag());
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
return false;
}
});
}
2.B控件设置拖曳监听
b.setOnDragListener(mDragListen)
3.初始化拖曳监听器
mDragListen = new myDragEventListener();
4.自定义拖曳监听器
public class myDragEventListener implements View.OnDragListener {
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)) {
v.getBackground().setColorFilter(Color.BLUE,
PorterDuff.Mode.MULTIPLY);
v.invalidate();
return true;
}
return false;
case DragEvent.ACTION_DRAG_ENTERED:
v.getBackground().setColorFilter(Color.GREEN,
PorterDuff.Mode.MULTIPLY);
v.invalidate();
return true;
case DragEvent.ACTION_DRAG_LOCATION:
return true;
case DragEvent.ACTION_DRAG_EXITED:
v.getBackground().setColorFilter(Color.BLUE,
PorterDuff.Mode.MULTIPLY);
v.invalidate();
return true;
case DragEvent.ACTION_DROP:
ClipData.Item item = event.getClipData().getItemAt(0);
String dragData = (String) item.getText();
String[] dragDataarray = dragData.split("1988");
v.getBackground().clearColorFilter();
}
return true;
case DragEvent.ACTION_DRAG_ENDED:
v.getBackground().clearColorFilter();
v.invalidate();
if (event.getResult()) {
Toast.makeText(RemoteControlSetting.this,
"The drop was handled.", Toast.LENGTH_LONG);
} else {
Toast.makeText(RemoteControlSetting.this,
"The drop didn't work.", Toast.LENGTH_LONG);
}
return true;
default:
break;
}
return false;
}