2017-06-16 6 views
0

J'utilise Android Studio et je remarque que l'obtention des coordonnées d'une touche retourne le type de données float. J'ai toujours vu les coordonnées d'écran représentées comme des ints, ce qui est logique quand on regarde les pixels. Est-ce que android les divise en quelque sorte ou utilisons-nous un groupe standard de pixels comme unité? Peut-être représenter la largeur du doigt moyen?Pourquoi les coordonnées de l'écran tactile sont-elles indiquées dans les flottants?

Répondre

0

Je pense que cela permet aussi à MotionEvent de prendre en charge les joysticks.

De l'documentation of MotionEvent/DeviceTypes

Sur les périphériques joysticks avec classe source SOURCE_CLASS_JOYSTICK, le pointeur coordonnées préciser la position absolue des axes du joystick. Les valeurs de l'axe du joystick sont normalisées dans une plage de -1,0 à 1,0, où 0,0 correspond à la position centrale. Plus d'informations sur l'ensemble des axes disponibles et l'amplitude des mouvements peuvent être obtenus en utilisant getMotionRange (int). Les axes de joystick courants sont AXIS_X, AXIS_Y, AXIS_HAT_X, AXIS_HAT_Y, AXIS_Z et AXIS_RZ.

Si getX() et getY() retournerait ints cela voudrait dire que pour les périphériques joysticks les valeurs de retour seraient limitées à -1, 0 et 1.

0

J'ai testé, même 1 pixel peut être divisé en Android. U peut créer une vue personnalisée, dessiner un rect avec des coordonnées float, et le comparer avec un autre rect juste utiliser les coordonnées de type int, ce sera différent. Il dira différence inférieure à 1 pixel.