在 Gingerbread 中实现拖放

Posted

技术标签:

【中文标题】在 Gingerbread 中实现拖放【英文标题】:Implement Drag & Drop in Gingerbread 【发布时间】:2012-02-06 20:19:10 【问题描述】:

我需要知道如何在 android 中为 Gingerbread 版本实现拖放。据我所知,Gingerbread 默认不支持。

我编码的内容:一个ViewGroup 类来保存动态添加的孩子,每个孩子都应该在长按后 能够通过手指点击/移动来移动。为了解决这个问题,我有一个OnLongClickListener 附加到每个View 的孩子,我的ViewGroup 已经实现了onTouch() 方法来获取向下/向上/移动事件和方法onLongClick() 来响应长按每个孩子。

现在我的问题如下:我长按一个孩子,我可以移动它,可以通过ACTION_UP事件结束动作。但是,我不能再长时间点击这个孩子了 - 有没有办法或图书馆可以处理这个问题?

我认为,我不需要真正的 D&D 库/函数,因为我只会在这个 ViewGroup 中订购一些图标 - 每个孩子都通过代码添加到 ViewGroup,所以我没有真正的我认为是 DropTarget。

【问题讨论】:

我将问题修复如下: 1.) 让每个孩子都有一个新的 OnLongClickListener 实例,这样可以防止父母响应 LongClick 事件。 2.) 在 onTouch() 事件中返回正确的值(真/假) 【参考方案1】:

This 示例可能会对您有所帮助。这个例子有一个完整的 3.0 之前的拖放框架。还有你要求的功能,默认为“拖动一个被丢弃的孩子”。

【讨论】:

【参考方案2】:

查看https://github.com/thquinn/DraggableGridView 的项目。这段代码真的帮了我很大的忙。

关注DraggableGridView 类中的onLayout()onTouch()。让我知道这是否有帮助。在ViewGroup 和添加视图方面,这与您的情况非常相似。

【讨论】:

以上是关于在 Gingerbread 中实现拖放的主要内容,如果未能解决你的问题,请参考以下文章

Java 7:如何在 Java 中实现拖放?

有没有办法在 phonegap angular js 项目中实现拖放?

在 Avalonia 中实现 TreeView 节点的拖放

如何在图像上实现拖放,改变其位置

用于 Silverlight 中拖放的 TranslateTransform

在 UITextView 中拖放时显示文本光标