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

Android - получить видимую область просмотра?

Предположим, у меня есть Android View, который частично маскируется другим View. Например, представьте, что маскарадный вид имеет прозрачное прямоугольное "окно" в центре его, а мой взгляд центрирован под окном и имеет размеры, размер которых больше размеров окна. В этом случае будет видна какая-то прямоугольная часть вида, а остальная часть будет скрыта маской.

Итак, мой вопрос: есть ли простой способ получить позицию и размеры видимой области без какого-либо доступа к самому экранирующему виду (поэтому, не зная, насколько велика сама "окно" маски)?

Я попробовал позвонить getLocalVisibleRect(), который звучал многообещающе, но похоже, что только возвращает прямоугольник макета представления, а не тот прямоугольник, который на самом деле видимый.

4b9b3361

Ответ 1

Это довольно поздно для игры, но я подозреваю, что getGlobalVisibleRect делает то, что вы хотите.

Ответ 2

Я использовал метод getWindowVisibleDisplayFrame, чтобы определить, является ли вид частично видимым или нет, чтобы определить, открыта ли мягкая клавиатура. Вы можете попробовать.

Rect r = new Rect();
// r will be populated with the coordinates of     your view
// that area still visible.
rootView.getWindowVisibleDisplayFrame(r);