Android - получить видимую область просмотра? - PullRequest
26 голосов
/ 31 января 2012

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

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

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

Ответы [ 3 ]

12 голосов
/ 01 октября 2013

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

3 голосов
/ 01 октября 2013

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

Rect r = new Rect();
// r will be populated with the coordinates of     your view
// that area still visible.
rootView.getWindowVisibleDisplayFrame(r);
0 голосов
/ 31 января 2012

Это не работает: http://developer.android.com/reference/android/view/View.html#getDrawingRect(android.graphics.Rect)

В документации сказано, что он делает то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...