Android: How to create a MotionEvent?

前端 未结 2 1200
粉色の甜心
粉色の甜心 2020-11-29 01:30

MotionEvent doesn\'t get a constructor, I wanted to manually create a MotionEvent in my unit test, then how to get that? Thanks.

2条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-29 01:50

    You should use one of the static obtain methods of the MotionEvent class to create a new event.

    The simplest way (besides wrapping a new event from an existing one) is:

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

    API Docs:

    Create a new MotionEvent, filling in a subset of the basic motion values. Those not specified here are: device id (always 0), pressure and size (always 1), x and y precision (always 1), and edgeFlags (always 0).

    Parameters:

    • downTime The time (in ms) when the user originally pressed down to start a stream of position events. This must be obtained from SystemClock.uptimeMillis().
    • eventTime The the time (in ms) when this specific event was generated. This must be obtained from SystemClock.uptimeMillis().
    • action The kind of action being performed -- one of either ACTION_DOWN, ACTION_MOVE, ACTION_UP, or ACTION_CANCEL.
    • x The X coordinate of this event.
    • y The Y coordinate of this event.
    • metaState The state of any meta / modifier keys that were in effect when the event was generated.

    Link to API Docs

提交回复
热议问题