ViewDragHelper:如何使用它?

20

在2013年的Google IO大会上,Google宣布推出了一个新版本的支持库,其中包括ViewDragHelper类。

我看了文档,但找不到这个类的任何用法示例。

例如,一个非常典型的情况:我有一个自定义视图,继承自FrameLayout,并允许拖动其中某些View,例如一个Button。 我重写了我的自定义视图中的onTouchEvent()onInterceptTouchEvent()方法,如果矩形中的按钮包含触摸坐标并且这不是简单的点击,则开始拖动。

那么,我该如何使用ViewDragHelper来实现这个功能?确保Button上的点击事件能够正确处理。


你可以尝试在 Git Hub 上查看这个项目:https://github.com/umano/AndroidSlidingUpPanel实际上,我现在正在尝试弄清楚它是如何工作的。目前我遇到了一个问题,在我的支持库中找不到任何 ViewDragHelper。 :) - SSemashko
这个类只存在于Support Library的最新版本中,即2013年5月发布的版本。请尝试通过SDKManager更新您的Support Library。在android.v4.support.widget包中查找。 - bvitaliyg
你是否已经成功创建了一个既能处理点击又能处理拖动的按钮? - Sébastien
2个回答

19

2
链接已损坏。 - Mani
2
http://old.flavienlaurent.com/blog/2013/08/28/each-navigation-drawer-hides-a-viewdraghelper/ - Sachin Rao
@shaobin0604,我觉得你的文章非常有启发性,我已经几乎修改了YoutubeLayout类,以便我可以将其与我的内容(两个线性布局,具有非常不同的内容)一起使用。然而,我发现有些难以对该类进行一些微调,尽管我相信这与我对ViewDragHelper的了解不足有关。你认为是否可能使内容不完全占据屏幕的高度?我希望它能够保持我定义的android:layout_height="wrap_content",但目前它正在忽略它。 - xarlymg89
很好的教程,非常有帮助。 - Mightian

17

以下是一个很好的例子,展示了如何使用ViewDragHelper。 https://github.com/umano/AndroidSlidingUpPanel

使用ViewDragHelper.create()方法创建它。使用shouldInterceptTouchEvent()方法来确定是否应该拦截来自子视图的触摸事件。

使用smootSlideViewTo() 方法在自定义视图内移动子视图。


smootSlideViewTo 对我不起作用。此外,我找不到任何如何使用它的示例(除了 SlidingUpPanel)。 - Vetalll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接