Первое! я do знать о ViewTreeObserver.onGlobalLayoutListener
.
Что заставило меня задаться этим вопросом, так это следующее уведомление на веб-сайте документации разработчика Android:
Ниже приведен фрагмент ниже:
- Получает родительское представление и отправляет Runnable в поток пользовательского интерфейса. Это гарантирует, что родитель выдает свои дочерние элементы перед вызовом Метод getHitRect(). Метод getHitRect() получает дочерний удар прямоугольник (осязаемая область) в родительских координатах.
Сам фрагмент:
parentView.post(new Runnable() {
// Post in the parent message queue to make sure the parent
// lays out its children before you call getHitRect()
@Override
public void run() {
/// do UI stuff
}
});
(вы можете посмотреть полную статью)
Так это неправильное утверждение или это правда? Я прошу, потому что публикация runnable кажется проще и удобнее по сравнению с тем, что делает танец register-listenener/handle-event/unregister-listener с ViewTreeObserver:)
ОБНОВЛЕНИЕ: Еще один вопрос, чтобы придать ясность всему предмету:
Если все это хорошо, а Runnable может быть размещен вместо использования глобального приемника раскладки, то почему у нас есть этот механизм ViewTreeObserver.onGlobalLayoutListener
вообще? Когда лучше использовать его, а не размещать Runnable и какая разница между этими методами?