我正在使用此拖放代码:https://github.com/CrossGeeks/DragViewSample/tree/master/DragViewSample/DragViewSample
效果很好,但现在我不仅要能够拖放图像,还希望单击动作。该功能可能需要在代码的此部分的“自定义”渲染器中完成:
public override bool OnTouchEvent(MotionEvent e)
{
float x = e.RawX;
float y = e.RawY;
var dragView = Element as DraggableView.DraggableView;
switch (e.Action)
{
case MotionEventActions.Down:
if (dragView.DragMode == DragMode.Touch)
{
if (!touchedDown)
{
if (firstTime)
{
originalX = GetX();
originalY = GetY();
firstTime = false;
}
dragView.DragStarted();
}
touchedDown = true;
}
dX = x - this.GetX();
dY = y - this.GetY();
break;
case MotionEventActions.Move:
if (touchedDown)
{
if (dragView.DragDirection == DragDirectionType.All || dragView.DragDirection == DragDirectionType.Horizontal)
{
SetX(x - dX);
}
if (dragView.DragDirection == DragDirectionType.All || dragView.DragDirection == DragDirectionType.Vertical)
{
SetY(y - dY);
}
}
break;
case MotionEventActions.Up:
touchedDown = false;
dragView.DragEnded();
break;
case MotionEventActions.Cancel:
touchedDown = false;
break;
}
return base.OnTouchEvent(e);
}
但是我不知道如何在不移动图像的情况下向其添加Click功能。仅出于此想法,我想在单击图像时弹出一个窗口,并且在按住图像时仍能够拖放。有人可以帮我吗?
为了使它以一种真正好的方式工作,这里需要做很多事情,如果您希望这样,那么就需要解决问题了,因为这不是其他人为您编写代码的站点。
假设您对此感到满意,我将为您提供有关如何操作的非常基本的想法。
关键是记录DateTime
的touchedDown = true;
并将其与DateTime
的touchedDown = false;
进行比较,如果它低于某个阈值,则称为“单击”。如果执行此操作,将会有一些工件,但是您需要解决它们。