我正在开发一个小型但不错的开源项目:一个RealViewSwitcher
允许通过执行水平投掷在多个视图之间切换的项目——就像 Android 的 Launcher 一样。它只是一个简单ViewGroup
的实现onInterceptTouchEvent
和onTouchEvent
使事情工作。事实上,大部分代码都取自文件Workspace.java
(第 572 行及以下),处理触摸事件的两种方法也是如此 - 没有太多更改。
但是,我没有让这件事起作用。我目前的工人阶级张贴在这里(在 pastebin 上,因为它非常大): http: //pastebin.com/8p8GCEZK
如果我执行我的类(只是创建它,添加一些 TextView,然后将其设置为活动的内容视图),如果我快速抛出,我会得到以下输出:
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
我现在的问题是:无论我做什么,我的ACTION_MOVE
方法都没有onInterceptTouchEvent
。我多次阅读文档并尝试使用返回值,但除了那里我没有得到任何其他事件ACTION_DOWN
- 这很丑陋,因为启动投掷的实际代码位于ACTION_MOVE
案例中。
你能帮帮我吗?我无法得到的烦人的事情:它似乎在官方 Launcher 应用程序中以相同的方式实现。但是他们的代码有效,我的无效。我错过了什么?