Simulate gestures in Android

只谈情不闲聊 提交于 2019-12-11 09:05:24

问题


How can I simulate gestures programmatically.

I get all the points and I would like my app to repeat these drawings.

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

Is there any method like startDraw(Arraylist)?

i need it to simulate user interaction.


回答1:


You can use MotionEvent class. Simple use:

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
)

Example shows a simple ACTION_DOWN emulation. Then, you can pass this event to onTouchEvent method of a View:

myView.onTouchEvent(emulateActionDown);

Take a look here: MotionEvent -> obtain



来源:https://stackoverflow.com/questions/16462343/simulate-gestures-in-android

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!