Sur l'émulateur Android 2.1.
Dans une classe de test ActivityInstrumentationtestCase2,
Je vérifie que phototButton est au-dessus de sendButton.
@UiThreadTest public void testViewLocationOnScreen() {
// Essayer de déclencher la disposition
activity.findViewById(R.id.rootSnap).forceLayout();
activity.findViewById(R.id.rootSnap).requestLayout();
activity.photoButton.getRootView().requestLayout();
activity.photoButton.requestLayout();
activity.photoButton.invalidate();
activity.onWindowFocusChanged(true);
// Assertions réussies
assertTrue(activity.hasWindowFocus());
ViewAsserts.assertOnScreen(activity.photoButton.getRootView(), activity.photoButton);
ViewAsserts.assertOnScreen(activity.sendButton.getRootView(), activity.sendButton);
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Assert.assertTrue(activity.photoButton.isShown());
Assert.assertTrue(activity.sendButton.isShown());
// Coordonnées d'écran inattendues renvoyées par
// getLocationOnScreen() et getLocationInWindow()
int[] above = new int[2];
activity.photoButton.getLocationOnScreen(above);
int[] below = new int[2];
activity.sendButton.getLocationOnScreen(below);
log("getLocationOnScreen-above", above);
log("getLocationOnScreen-below", below);
// Enregistre les coordonnées d'écran [0, 76] et [0, 178]
above = new int[2];
activity.photoButton.getLocationInWindow(above);
below = new int[2];
activity.sendButton.getLocationInWindow(below);
log("getLocationInWindow-above", above);
log("getLocationInWindow-below", below);
// Enregistre les coordonnées de fenêtre [0, 76] et [0, 178]
}
J'attendais des valeurs différentes de ces méthodes.
Pourquoi getLocationOnScreen() et getLocationInWindow() renvoient-ils les mêmes valeurs ?