async void RestoreDragLayout(ViewGroup dragA, ViewGroup dragB, MyShadowBuilder dragShadowA, MyShadowBuilder dragShadowB) { FillLayout(dragA, 100); FillLayout(dragB, 100); FillLine(); await Task.Delay(500); onFocus(); }
void SetUpDragAndDrop() { /* * Init Drag */ var dragA = _view.FindViewById <FrameLayout> (Resource.Id.stoppingPlacesCardDragOne); var dragB = _view.FindViewById <FrameLayout> (Resource.Id.stoppingPlacesCardDragTwo); var dropA = _view.FindViewById <FrameLayout> (Resource.Id.stoppingPlacesCardDropOne); var dropB = _view.FindViewById <FrameLayout> (Resource.Id.stoppingPlacesCardDropTwo); var dragAShadow = new MyShadowBuilder(dragA); var dragBShadow = new MyShadowBuilder(dragB); /* * Handle Drag */ dragA.Touch += (object sender, View.TouchEventArgs e) => { var evt = e.Event.Action; var point = new Point((int)e.Event.RawX, (int)e.Event.RawY); switch (evt) { case MotionEventActions.Down: dragAShadow.lastTouch = point; dragA.StartDrag(ClipData.NewPlainText("from", "A"), dragAShadow, null, 0); FillLayout(dropB); offFocus(); HideLayoutInvisible(dragA); break; case MotionEventActions.Move: dragAShadow.lastTouch = point; break; case MotionEventActions.Up: RestoreDragLayout(dragA, dragB, dragAShadow, dragBShadow); break; } }; dragB.Touch += (object sender, View.TouchEventArgs e) => { var evt = e.Event.Action; var point = new Point((int)e.Event.RawX, (int)e.Event.RawY); switch (evt) { case MotionEventActions.Down: dragBShadow.lastTouch = point; dragB.StartDrag(ClipData.NewPlainText("from", "B"), dragBShadow, null, 0); FillLayout(dropA); offFocus(); HideLayoutInvisible(dragB); break; case MotionEventActions.Move: dragBShadow.lastTouch = point; break; case MotionEventActions.Up: RestoreDragLayout(dragA, dragB, dragAShadow, dragBShadow); break; } }; _view.Drag += (object sender, View.DragEventArgs e) => { var evt = e.Event; switch (evt.Action) { case DragAction.Drop: RestoreDragLayout(dragA, dragB, dragAShadow, dragBShadow); e.Handled = true; break; } }; /* * Handle Drop */ //var dragB = _view.FindViewById<FrameLayout> (Resource.Id.stoppingPlacesCardDragTwo); dropA.Drag += (object sender, View.DragEventArgs e) => { var evt = e.Event; switch (evt.Action) { case DragAction.Drop: e.Handled = true; if (e.Event.ClipData.GetItemAt(0).Text == "B") { ChangeDirection(); HideLayout(dropA); FillLayout(dragB); } break; case DragAction.Ended: RestoreDragLayout(dragA, dragB, dragAShadow, dragBShadow); break; } }; dropB.Drag += (object sender, View.DragEventArgs e) => { var evt = e.Event; switch (evt.Action) { case DragAction.Drop: e.Handled = true; if (e.Event.ClipData.GetItemAt(0).Text == "A") { ChangeDirection(); HideLayout(dropB); FillLayout(dragA); } break; case DragAction.Ended: RestoreDragLayout(dragA, dragB, dragAShadow, dragBShadow); break; } }; }