如何实现Android listview打开手势

Arn*_*aud 5 animation android listview gesture

这是关于Android ListViews,Gestures和Animations的一个开放性问题.我真的不熟悉Android中的手势,所以我只是在寻找想法和灰色内容.

这里有两个屏幕截图和一个视频示例,说明了我正在尝试思考的问题.考虑看一下视频,这真的很值得.

在此输入图像描述

在此输入图像描述

截图来自此处的iOS开源项目.

问题是,你将如何实现像我在iPhone/iPad应用程序中越来越常见的"listview开放"手势,但对于Android?

编辑1,想法1:

好吧,首先想一想,AFAIK的Pinch手势有点像拖动手势,所以我想我们可以在屏幕上获得两个手指的X和Y坐标?

接下来,这个问题的答案可能有所帮助,基本思路是:

获取列表中第一个可见项的索引位置

获取列表中最后一个可见项的索引位置

使用getChildAt 函数从第一个索引迭代到最后一个索引

对于每个子节点,调用getLocationOnScreen 方法以获取当前迭代项的坐标

之后,可以在循环内部完成捏合手势坐标和每个项目坐标之间的一些比较,以获得必须插入新行的两个项目.

性能考虑appart我认为它可以工作,但也许有一个更简单的方法来获得这两个项目(?).

谁是下一个?:)

更新:

感谢小费@rhlnair,我借此机会告诉大家我在业余时间开始研究这个问题,欢迎您随时为此提供帮助.

该项目位于https://github.com/arnaudbos/Android-GestureListView.我在两个不同的分支上开始了两个不同的实现,并且会喜欢任何人创建一个新的分支.

我在分支"尝试通过比例 - 手势检测器"中有一些非常令人鼓舞的东西,但是ListView有一些副作用.

来吧伙计们!

doo*_*uck 0

当执行捏合手势时,您有两个手指放在屏幕上,因此有一个点位于这两点的中间。这是找到中间点的简单欧几里得算术。

然后按照你所说的在列表中找到该点位于上面的元素。你提到性能,我认为这不会成为问题。您迭代循环几次并询问坐标。我在触摸事件上做得更糟。

如果捏合点位于列表项中间上方,则您将在上方创建项目,反之亦然。

请参阅底部使用比例侦听器的部分: http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html

使用比例侦听器,您可以使用比例来确定是否创建了新元素。如果比例高于(您正在“缩小”)阈值,您将创建一个新元素并让视图从列表适配器重新填充。