MotionEvent n'a pas de constructeur, je voulais créer manuellement un MotionEvent dans mon test unitaire, puis comment l'obtenir? Merci.
Réponse
Trop de publicités?Vous devez utiliser l'un de la statique obtain
méthodes de l' MotionEvent
classe pour créer un nouvel événement.
La façon la plus simple (en dehors de l'emballage d'un nouvel événement à partir d'un existant) est:
static public MotionEvent obtain(long downTime, long eventTime, int action,
float x, float y, int metaState) {
Les Docs de l'API:
Créer un nouveau MotionEvent, en remplissant un sous-ensemble de la base de la motion valeurs. Ceux qui ne sont pas spécifiés ici sont: l'appareil id (toujours à 0), de la pression et de la taille (toujours 1), x et y de la précision (toujours 1), et edgeFlags (toujours à 0).
Paramètres:
-
downTime
Du temps (en ms) lors de la l'utilisateur à l'origine pressée vers le bas pour commencer un flux de position événements. Cette doit être obtenu à partir de SystemClock.uptimeMillis(). -
eventTime
Du temps (en ms) lors de la cet événement a été généré. Ce doit être obtenu à partir deSystemClock.uptimeMillis()
. -
action
Le genre d'action réalisée -- l'un ou l'autreACTION_DOWN
,ACTION_MOVE
,ACTION_UP
ouACTION_CANCEL
. -
x
De la coordonnée X de cet événement. -
y
La coordonnée Y de cet événement. -
metaState
De l'état des meta / les touches de modification qui étaient en vigueur lorsque l'événement a été généré.