根据触摸事件更改视图
Change views based on touch events
假设我有一个包含一些项目的列表 (RecyclerView
),当用户将手指放在其中一个项目上时,我需要显示一个完全不同的屏幕,并且基于用户将手指从不同的屏幕上移开,我的应用程序会执行一些不同的操作。
我已经通过 Fragment
交易取得了一些成就(当我收到一个 ACTION_DOWN
MotionEvent
在列表的一项 View
s 中),但问题是第二个 Fragment
无法接收 ACTION_UP
或任何其他 MotionEvent
因为 ACTION_DOWN
从未被派遣过,我需要一种方法来知道用户何时将手指移开。
有什么方法可以实现我想要的行为(也许使用一些不同于替换 Fragments
的技术)?
当您在视图的 onTouchEvent 中 return 为 true 时,它将完全控制其余手势,直到并包括 ACTION_UP MotionEvent。
如果您从原始侦听器获取 ACTION_UP 的坐标,然后将它们发送到您想要处理该信息的任何地方,它将执行您想要的操作。
另一种技术是在 ViewGroup 中覆盖 onInterceptTouchEvent()。这将使您能够在视图项收到 ACTION_DOWN MotionEvent 后立即拦截事件。然后,包括 ACTION_UP 在内的其余手势将被重定向到视图组 onTouchEvent().
假设我有一个包含一些项目的列表 (RecyclerView
),当用户将手指放在其中一个项目上时,我需要显示一个完全不同的屏幕,并且基于用户将手指从不同的屏幕上移开,我的应用程序会执行一些不同的操作。
我已经通过 Fragment
交易取得了一些成就(当我收到一个 ACTION_DOWN
MotionEvent
在列表的一项 View
s 中),但问题是第二个 Fragment
无法接收 ACTION_UP
或任何其他 MotionEvent
因为 ACTION_DOWN
从未被派遣过,我需要一种方法来知道用户何时将手指移开。
有什么方法可以实现我想要的行为(也许使用一些不同于替换 Fragments
的技术)?
当您在视图的 onTouchEvent 中 return 为 true 时,它将完全控制其余手势,直到并包括 ACTION_UP MotionEvent。
如果您从原始侦听器获取 ACTION_UP 的坐标,然后将它们发送到您想要处理该信息的任何地方,它将执行您想要的操作。
另一种技术是在 ViewGroup 中覆盖 onInterceptTouchEvent()。这将使您能够在视图项收到 ACTION_DOWN MotionEvent 后立即拦截事件。然后,包括 ACTION_UP 在内的其余手势将被重定向到视图组 onTouchEvent().