首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:如何创建MotionEvent?

Android:如何创建MotionEvent?
EN

Stack Overflow用户
提问于 2011-05-03 16:40:04
回答 2查看 52.4K关注 0票数 58

MotionEvent没有构造函数,我想在我的单元测试中手动创建一个MotionEvent,那么如何获得它呢?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-03 16:49:19

您应该使用MotionEvent类的某个静态obtain方法来创建新事件。

最简单的方法(除了从现有事件包装新事件之外)是:

代码语言:javascript
复制
static public MotionEvent obtain(long downTime, long eventTime, int action,
        float x, float y, int metaState) {

接口文档

创建一个新的MotionEvent,填充基本运动值的子集。此处未指定的参数包括:设备id (始终为0)、压力和尺寸(始终为1)、x和y精度(始终为1)以及edgeFlags (始终为0)。

参数

  • downTime用户最初按下以启动位置事件流的时间(毫秒)。必须从SystemClock.uptimeMillis().
  • eventTime获取生成此特定事件的时间(以毫秒为单位)。这必须从正在执行的操作类型中获取-- ACTION_CANCEL.
  • x event.
  • y的X坐标event.
  • metaState ACTION_DOWN的Y坐标生成事件时生效的任何元/修饰符键的状态。ACTION_MOVE ACTION_UP

Link to API Docs

票数 99
EN

Stack Overflow用户

发布于 2017-10-07 16:09:57

补充答案

以下是一个示例,说明了公认的答案:

代码语言:javascript
复制
// get the coordinates of the view
int[] coordinates = new int[2];
myView.getLocationOnScreen(coordinates);

// MotionEvent parameters
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis();
int action = MotionEvent.ACTION_DOWN;
int x = coordinates[0];
int y = coordinates[1];
int metaState = 0;

// dispatch the event
MotionEvent event = MotionEvent.obtain(downTime, eventTime, action, x, y, metaState);
myView.dispatchTouchEvent(event);

备注

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5867059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档