Имитация жестов в Android
Как я могу симулировать жесты программно.
Я получил все баллы и хотел бы, чтобы мое приложение повторило эти рисунки.
public void onGestureStarted(GestureOverlayView gestureOverlayView, MotionEvent motionEvent) {
Log.d("TAG", "Started gesture: \n" + motionEvent.getRawX() + "\n" +
motionEvent.getRawY() + "\n" + motionEvent.getEventTime());
gestures.add(new GesturePoint(motionEvent.getRawX(), motionEvent.getRawY(), 100));
}
@Override
public void onGesture(GestureOverlayView gestureOverlayView, MotionEvent motionEvent) {
//To change body of implemented methods use File | Settings | File Templates.
gestures.add(new GesturePoint(motionEvent.getRawX(), motionEvent.getRawY(), 100));
Log.e("TAG", "gesture: \n" + motionEvent.getRawX() + "\n" +
motionEvent.getRawY() + "\n" + motionEvent.getEventTime());
}
@Override
public void onGestureEnded(GestureOverlayView gestureOverlayView, MotionEvent motionEvent) {
gestures.add(new GesturePoint(motionEvent.getRawX(), motionEvent.getRawY(), 100));
Log.d("TAG", "Ended gesture: \n" + motionEvent.getRawX() + "\n" +
motionEvent.getRawY() + "\n" + motionEvent.getEventTime());
g.addStroke(new GestureStroke(gestures));
gestureOverlayView.setGesture(g);
Есть ли метод, как startDraw(Arraylist)?
Мне нужно, чтобы имитировать взаимодействие с пользователем.
1 ответ
Вы можете использовать класс MotionEvent. Простое использование:
MotionEvent emulateActionDown = MotionEvent.obtain
(
// The time (in ms) when the user originally pressed down to start a stream of position events.
// This must be obtained from uptimeMillis().
SystemClock.uptimeMillis(),
// The the time (in ms) when this specific event was generated.
// This must be obtained from uptimeMillis().
SystemClock.uptimeMillis()+20,
// The kind of action being performed, such as ACTION_DOWN.
MotionEvent.ACTION_DOWN,
// The X coordinate of this event.
1,
// The Y coordinate of this event.
1,
// The state of any meta / modifier keys that were in effect when the event was generated.
0
)
Пример показывает простую эмуляцию ACTION_DOWN. Затем вы можете передать это событие в метод onTouchEvent объекта View:
myView.onTouchEvent(emulateActionDown);
Посмотрите здесь: MotionEvent -> получить