Подтвердить что ты не робот

Android - Знакомство с View.getLocalVisibleRect(Rect)

Я ищу любую подсказку, чтобы понять этот метод.

В официальной документации Android SDK об этом нет информации.

Какой прямоугольник он возвращает?

Заполняется ли Raw coorinates как в MotionEvent?

Что делать, если это представление не видно? Он возвращает null? Или какой-то прямоугольник с некоторыми значениями VIEW_INVISIBLE внутри?

Может ли кто-нибудь, у кого есть опыт работы с этим методом, дать мне руку?

4b9b3361

Ответ 1

Из JavaDoc getGlobalVisibleRect:

/**
 * If some part of this view is not clipped by any of its parents, then
 * return that area in r in global (root) coordinates. To convert r to local
 * coordinates (without taking possible View rotations into account), offset
 * it by -globalOffset (e.g. r.offset(-globalOffset.x, -globalOffset.y)).
 * If the view is completely clipped or translated out, return false.
 *
 * @param r If true is returned, r holds the global coordinates of the
 * visible portion of this view.
 * @param globalOffset If true is returned, globalOffset holds the dx,dy
 * between this view and its root. globalOffet may be null.
 * @return true if r is non-empty (i.e. part of the view is visible at the
 * root level.
 */

getLocalVisibleRect вызывает getGlobalVisibleRect, а затем делает его локальным, как было предложено:

r.offset(-offset.x, -offset.y); // make r local`

Итак:

  • Он не возвращает Rectangle, он возвращает логическое значение. Но он может задавать параметры прямоугольника, который вы передаете, и это должен быть прямоугольник android.graphics.Rect;
  • Прямоугольник r будет заполнен локальными координатами;
  • Я не уверен, но я думаю, что это то же самое для видимых и невидимых представлений, в то время как оно должно возвращать false для представлений с visibility="gone"