下面列出了android.view.View#startDrag ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN &&
motionEvent.getPointerId(0) == 0) {
// the getPointerId is to avoid executing something if someone decides to drag with
// 2 fingers
final ClipData data = ClipData.newPlainText("word", (String) view.getTag());
final View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
view.setVisibility(View.GONE);
return true;
} else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
// it is a tap, if the touch was quick enough to cancel the execution
// of ACTION_DOWN, we should consider as a tap too.
final FlowLayout parent = (FlowLayout) view.getParent();
if (parent.getId() == R.id.words_container) {
moveView(wordsContainer, poemContainer, view);
} else {
moveView(poemContainer, wordsContainer, view);
}
return true;
} else {
return false;
}
}
public static void startDrag(View view){
DraggableInfo tag = (DraggableInfo) view.getTag();
if (tag == null){
tag = new DraggableInfo("Text", 0, 0, 1);
}
Intent intent = new Intent();
intent.putExtra("data", tag);
ClipData dragData = ClipData.newIntent("value", intent);
View.DragShadowBuilder myShadow = new View.DragShadowBuilder(view);
// 震动反馈,不需要震动权限
view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
view.startDragAndDrop(dragData, myShadow, null, 0);
}else{
view.startDrag(dragData, myShadow, null, 0);
}
}
private void startDragCategory(View view, String category) {
ClipData data = ClipData.newPlainText(category, category);
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
//view.startDrag(data, shadowBuilder, view, 0);
boolean dragstarted;
if (Build.VERSION.SDK_INT>=24) {
dragstarted = view.startDragAndDrop(data, shadowBuilder, view, 0);
} else {
dragstarted = view.startDrag(data, shadowBuilder, view, 0);
}
if (dragstarted) {
mDragDropSource = mCategoriesLayout;
if (!Categories.isSpeacialCategory(category)) {
showRemoveDropzone();
}
showHiddenCategories();
}
cancelHide();
}
@Override
public boolean onLongClick (View view)
{
try
{
App app = (App) view.getTag ();
AppManager appManager = app.getAppManager ();
int index = appManager.indexOfPinned (app);
ClipData.Item item = new ClipData.Item (Integer.toString (index));
ClipData data = new ClipData (Integer.toString (index), new String[]{"text/plain"}, item);
View.DragShadowBuilder dragShadowBuilder = new View.DragShadowBuilder (view);
view.startDrag (data, dragShadowBuilder, item, 0);
appManager.startedDraggingPinnedApp ();
}
catch (Exception ex)
{
ExceptionHandler exh = new ExceptionHandler (ex);
exh.show (this.parent);
}
return true;
}
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN &&
motionEvent.getPointerId(0) == 0) {
// the getPointerId is to avoid executing something if someone decides to drag with
// 2 fingers
final ClipData data = ClipData.newPlainText("word", (String) view.getTag());
final View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
view.setVisibility(View.GONE);
return true;
} else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
// it is a tap, if the touch was quick enough to cancel the execution
// of ACTION_DOWN, we should consider as a tap too.
final FlowLayout parent = (FlowLayout) view.getParent();
if (parent.getId() == R.id.words_container) {
moveView(wordsContainer, poemContainer, view);
} else {
moveView(poemContainer, wordsContainer, view);
}
return true;
} else {
return false;
}
}
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if(iconArrangeMode && motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
startDragIndex = desktopIcons.indexOfChild((ViewGroup) view.getParent());
ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
view.setVisibility(View.INVISIBLE);
return true;
} else
return false;
}
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (!problemDone && motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText(view.getTag().toString(), view.getTag().toString());
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
//view.setVisibility(View.INVISIBLE);
return true;
} else {
return false;
}
}
@Override
public boolean onLongClick(View v) {
ClipData not_used_clip = ClipData.newPlainText("", "");
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
v.startDrag(not_used_clip, new View.DragShadowBuilder(v), v, 0);
}
else {
v.startDragAndDrop(not_used_clip, new View.DragShadowBuilder(v), v, 0);
}
mDragListener.startDrag(v);
return true;
}
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
view.setVisibility(View.INVISIBLE);
return true;
} else {
return false;
}
}
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
view.startDrag(null, new View.DragShadowBuilder(view), position, 0);
if (onReorderingListener != null)
onReorderingListener.beginRecordering(parent, view, position,
id);
return true;
}
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(
view);
view.startDrag(data, shadowBuilder, view, 0);
view.setVisibility(View.INVISIBLE);
return true;
} else {
return false;
}
}
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
// start move on a touch event
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
view.setVisibility(View.INVISIBLE);
return true;
}
return false;
}
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
// start move on a touch event
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
view.setVisibility(View.INVISIBLE);
return true;
}
return false;
}