Android: как создать MotionEvent? - PullRequest
49 голосов
/ 03 мая 2011

MotionEvent не получает конструктор, я хотел вручную создать MotionEvent в моем модульном тесте, тогда как его получить?Спасибо.

Ответы [ 2 ]

89 голосов
/ 03 мая 2011

Вы должны использовать один из статических obtain методов класса MotionEvent для создания нового события.

Самый простой способ (помимо добавления нового события из существующего):

static public MotionEvent obtain(long downTime, long eventTime, int action,
        float x, float y, int metaState) {

Документы API :

Создать новый MotionEvent, заполнив подмножество основных значений движения. Те, которые не указаны здесь: устройство id (всегда 0), давление и размер (всегда 1), точность x и y (всегда 1) и edgeFlags (всегда 0).

Параметры :

  • downTime Время (в мс), когда пользователь изначально нажал, чтобы начать поток событий позиции. это должен быть получен из SystemClock.uptimeMillis ().
  • eventTime Время (в мс), когда это конкретное событие было сгенерировано. Это должно быть получено от SystemClock.uptimeMillis().
  • action Вид действия выполнено - один из ACTION_DOWN, ACTION_MOVE, ACTION_UP или ACTION_CANCEL.
  • x Координата X этого события.
  • y Координата Y этого события.
  • metaState Состояние любой мета / действующие клавиши-модификаторы когда событие было сгенерировано.

Ссылка на API Документы

8 голосов
/ 07 октября 2017

Дополнительный ответ

Вот пример, иллюстрирующий принятый ответ:

// 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);

Примечания

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...