我有一个Activity
,它生成一些MotionEvent
(通过MotionEvent.obtain()
)。我想将这些生成的触摸/运动事件传递给Activity
的children视图。在文档中,只有当其中一个子视图没有处理该事件时,才会调用Activity.onTouchEvent()
,这意味着我不能调用它来将生成的触摸事件传递给子视图。
有没有办法将生成的触摸事件从父视图MainActivity
发送到其子视图,使其正常响应(例如,如果子视图设置了OnClickListener
,并且我将生成的向下/向上触摸事件发送到子视图,我希望调用OnClickListener
)?
请注意,我并没有试图将触摸事件从一个活动发送到另一个活动,这一切都在我自己的应用程序中。此外,我的设备没有root,所以需要root的解决方案对我没有帮助。
刚刚想好了。解决方案是使用Activity.dispatchTouchEvent()
。例如,以下在我的视图中注册为点击事件:
dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 200, 200, 0));
dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, 200, 200, 0));