这是一个关于Android ListViews,手势和动画的公开问题。 我真的不熟悉Android中的手势,所以我只是在寻找想法和灰色内容。
这里有两个屏幕截图和a video示例,说明了我正在尝试思考的问题。考虑看一下视频,这真的很值得。
截图来自找到here的iOS开源项目。
问题是,你会如何实现像我在iPhone / iPad应用中看到的那样的“listview开放”手势,但对于Android?
编辑1,创意1:
好的第一个想法,AFAIK的Pinch手势有点像拖动手势,所以我猜我们可以在屏幕上获得两个手指的X和Y坐标?
接下来,the answer to this question可能有所帮助,基本理念是:
获取列表中第一个可见项目的索引位置
获取列表中最后一个可见项目的索引位置
使用getChildAt 函数
从第一个索引迭代到最后一个索引对于每个孩子,调用getLocationOnScreen 方法以获取当前迭代项的坐标
之后,可以在循环内部完成捏合手势坐标和每个项目坐标之间的一些比较,以获得必须插入新行的两个项目。
性能考虑appart我认为它可以工作,但也许有一种更简单的方法来获取这两个项目(?)。
谁是下一个? :)
更新
感谢小费@rhlnair,我借此机会告诉大家我在业余时间开始研究这个问题,欢迎你们提供帮助。
该项目位于https://github.com/arnaudbos/Android-GestureListView。我在两个不同的分支上开始了两个不同的实现,并且会喜欢任何人创建一个新的分支。
我在分支“尝试通过比例手势检测器”中有一些非常令人鼓舞的东西,但是ListView会产生一些副作用。
来吧伙计们!
答案 0 :(得分:1)
答案 1 :(得分:0)
当进行捏合手势时,屏幕上有两根手指,因此在这两点中间有一个点。这是一个简单的欧几里德算法来找到中间点。
然后在列表中找到这一点上面的元素。你提到了性能,我不认为这会是一个问题。你迭代一个循环几次并要求坐标。我在触摸事件方面做得更糟。
如果夹点之间的点位于列表项目的中间位置之上,则创建上面的项目,反之亦然。
请参阅底部使用比例监听器的部分: http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html
使用比例监听器,您可以使用比例来查明是否创建了新元素。如果比例高于(你是"缩放" out)阈值,你创建一个新元素并让视图从列表适配器重新填充。