16

我正在开发一个应用程序,该应用程序将受益于更精确地控制拖放对象的位置。但使用电容式触摸屏时,用户的手指将始终遮住放置目标。

View.DragShadowBuilder.onProvideShadowMetrics()Android 允许通过覆盖该方法来指定拖动阴影上的“接触点” 。但似乎没有办法提供一个移位的“目标点”。我想从拖动阴影的接触点投射一个箭头,该箭头可以更精确地操纵到放置目标上。

问题:实现这一目标的最简单/最优雅的方法是什么?

我想我可以在拖动操作期间在屏幕上放置一个不可见的层,该层注册触摸点的坐标,翻译它们并将它们发送到实际的放置目标 - 本质上是重新实现拖动事件。但我想知道是否有更简单的解决方案。或者,如果其他人以前做过类似的事情。


编辑:这是我想要的那种拖影的粗略模型:

在此处输入图像描述

4

1 回答 1

4

问题:实现这一目标的最简单/最优雅的方法是什么?

正如您已经看到的那样,您不能使用View.DragShadowBuilder该类,因为无法将阴影句柄的点和考虑到所有已发送拖动事件的点分开。我也看不到重新实现拖动系统的另一种方法,即使通过扩展View类(这会很麻烦)。

我想我可以在拖动操作期间在屏幕上放置一个不可见的层,该层注册触摸点的坐标,翻译它们并将它们发送到实际的放置目标 - 本质上是重新实现拖动事件。

这是一种方法,如果您没有复杂的拖放要求,它非常简单。

但我想知道是否有更简单的解决方案。

您最好扩展基本的 Android 布局(至少是您将使用的布局)并在其中实现拖动逻辑。这样您就无需管理另一层并进行一些额外的计算。我已经扩展了这个RelativeLayout类来实现你可以在这里找到的逻辑。我已经在这样的Activity中使用了该类,它具有这种布局。该示例是基本的,需要更多的工作(和思考)以使其更加灵活并解决一些潜在的问题。

于 2013-02-06T09:23:06.070 回答