gpt4 book ai didi

Android:使用 RealViewSwitcher 像主屏幕一样在 View 之间切换

转载 作者:太空狗 更新时间:2023-10-29 13:42:05 27 4
gpt4 key购买 nike

我正在开发一个小型但不错的开源项目:一个 RealViewSwitcher 允许通过执行水平滑动在多个 View 之间切换 - 就像 Android 的启动器一样。它只是一个实现了 onInterceptTouchEvent 的简单 ViewGrouponTouchEvent使事情正常进行。事实上,大部分代码都取自文件 Workspace.java。 (第 572 行及以下),处理触摸事件的两种方法也是如此 - 没有太多变化。

但是,我没有让这个东西工作。我当前的工作类(class)发布在这里(在 pastebin 上,因为它非常大): http://pastebin.com/8p8GCEZK

如果我执行我的类(只是创建它,添加一些 TextView,然后将其设置为 Activity 的内容 View ),如果我快速浏览,我会得到以下输出:

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 案例。

你能帮帮我吗?我无法得到的烦人的事情:它似乎在官方启动器应用程序中以相同的方式实现。但是他们的代码有效,我的却不行。我错过了什么?

最佳答案

其实很简单:

1) 如果您从 onInterceptTouchEvent 返回 false:

  • 当前事件,如果你愿意的话,在你处理它之后,也将被分派(dispatch)到目标(子) View 的 onTouchEvent 方法;
  • 下一个事件还是会派发到onInterceptTouchEvent

2) 如果你从 onInterceptTouchEvent 返回 true:

  • 当前事件将不会被目标 View 处理,目标 View 将接收相同的事件但带有 Action ACTION_CANCEL;
  • 所有进一步的事件都将传递给此 View 的 onTouchEvent 方法,并且不再出现在 onInterceptTouchEvent 中。

因此,如果你想在 onInterceptTouchEvent() 中处理事件并将它们转发到目标 View ,则使用选项 1),如果你想接管所有事件流,则使用选项 2),切断目标 View 和处理您 parent 的 onTouchEvent() View 中的所有事件就好像它是原始目标一样。

我已经测试了选项 1),它适用于我。

关于Android:使用 RealViewSwitcher 像主屏幕一样在 View 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4455891/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com