我正在开发一个小而不错的开源项目:一个RealViewSwitcher,它允许通过水平滑动来切换多个视图 - 就像Android的Launcher一样。它只是一个简单的ViewGroup,实现了
然而,我无法让这个东西工作。我的当前工作类发布在这里(在pastebin上,因为它非常大):http://pastebin.com/8p8GCEZK 如果我执行我的类(只是创建它,添加一些TextViews,然后将其设置为活动的内容视图),如果我快速滑动,我会得到以下输出:
我的问题是:无论我做什么,都无法在
onInterceptTouchEvent
和onTouchEvent
来使事情正常工作。实际上,大部分代码都来自文件Workspace.java
(第572行及以下),因此这两种处理触摸事件的方法没有太多变化。然而,我无法让这个东西工作。我的当前工作类发布在这里(在pastebin上,因为它非常大):http://pastebin.com/8p8GCEZK 如果我执行我的类(只是创建它,添加一些TextViews,然后将其设置为活动的内容视图),如果我快速滑动,我会得到以下输出:
12-15 23:53:04.797: INFO/RealViewSwitcher(7477): intercept ACTION_DOWN
12-15 23:53:04.797: INFO/RealViewSwitcher(7477): touch ACTION_DOWN
12-15 23:53:04.807: INFO/RealViewSwitcher(7477): touch ACTION_MOVE
12-15 23:53:04.840: INFO/RealViewSwitcher(7477): touch ACTION_MOVE
12-15 23:53:04.867: INFO/RealViewSwitcher(7477): touch ACTION_MOVE
12-15 23:53:04.897: INFO/RealViewSwitcher(7477): touch ACTION_MOVE
12-15 23:53:04.897: INFO/RealViewSwitcher(7477): touch ACTION_UP
我的问题是:无论我做什么,都无法在
onInterceptTouchEvent
方法中得到ACTION_MOVE
。我多次阅读文档并尝试更改返回值,但我没有得到任何其他事件,只有那个丑陋的ACTION_DOWN
- 这很烦人,因为实际启动fling的代码位于ACTION_MOVE
中。
你能帮助我吗?让我感到困扰的是:官方Launcher应用程序以相同的方式实现。但他们的代码可以工作,我的不可以。我错过了什么?