1

我有一个Activity生成一些MotionEvents (通过MotionEvent.obtain())。我想将这些生成的触摸/运动事件传递给Activity的子视图。从文档中,Activity.onTouchEvent()仅当其中一个子视图不处理事件时才调用,这意味着我不能调用它来将生成的触摸事件传递给孩子。

有没有办法将生成的触摸事件从父MainActivity视图发送到其子视图,以使它们正常响应(例如,如果子视图有一个OnClickListener集合,并且我将生成的向下/向上触摸事件发送到子视图,我希望OnClickListener被调用)?

请注意,我并没有尝试将触摸事件从一个活动发送到另一个活动,而这一切都在我自己的应用程序中。另外,我的设备没有root,所以需要root的解决方案对我没有帮助。

4

1 回答 1

1

刚刚想通了。解决方案是使用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));
于 2012-11-29T17:47:30.507 回答