une - programmation android pour les nuls pdf




Android: Comment créer un MotionEvent? (2)

MotionEvent n'obtient pas de constructeur, je voulais créer manuellement un MotionEvent dans mon test unitaire, puis comment l'obtenir? Merci.


Réponse supplémentaire

Voici un exemple illustrant la réponse acceptée:

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

Remarques

  • D'autres méta-états incluent des choses comme KeyEvent.META_SHIFT_ON , etc.
  • Merci à cette réponse pour l'aide avec l'exemple.

Vous devez utiliser l'une des méthodes MotionEvent classe MotionEvent pour créer un nouvel événement.

Le moyen le plus simple (en plus d'encapsuler un nouvel événement à partir d'un événement existant) est:

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

API Docs :

Créez un nouveau MotionEvent, en remplissant un sous-ensemble des valeurs de mouvement de base. Ceux qui ne sont pas spécifiés ici sont: id de l'appareil (toujours 0), pression et taille (toujours 1), précision x et y (toujours 1), et edgeFlags (toujours 0).

Paramètres :

  • downTime Heure (en ms) à laquelle l'utilisateur a initialement appuyé pour lancer un flux d'événements de position. Cela doit être obtenu à partir de SystemClock.uptimeMillis ().
  • eventTime L'heure (en ms) à laquelle cet événement spécifique a été généré. Cela doit être obtenu à partir de SystemClock.uptimeMillis() .
  • action ACTION_DOWN d'action en cours: ACTION_DOWN , ACTION_MOVE , ACTION_UP ou ACTION_CANCEL .
  • x La coordonnée X de cet événement.
  • y La coordonnée Y de cet événement.
  • metaState État de toutes les clés méta / modificatrices qui étaient en vigueur lors de la génération de l'événement.

Lien vers les documents API





events