Ответ 1
Это довольно поздно для игры, но я подозреваю, что getGlobalVisibleRect
делает то, что вы хотите.
Предположим, у меня есть Android View
, который частично маскируется другим View
. Например, представьте, что маскарадный вид имеет прозрачное прямоугольное "окно" в центре его, а мой взгляд центрирован под окном и имеет размеры, размер которых больше размеров окна. В этом случае будет видна какая-то прямоугольная часть вида, а остальная часть будет скрыта маской.
Итак, мой вопрос: есть ли простой способ получить позицию и размеры видимой области без какого-либо доступа к самому экранирующему виду (поэтому, не зная, насколько велика сама "окно" маски)?
Я попробовал позвонить getLocalVisibleRect()
, который звучал многообещающе, но похоже, что только возвращает прямоугольник макета представления, а не тот прямоугольник, который на самом деле видимый.
Это довольно поздно для игры, но я подозреваю, что getGlobalVisibleRect
делает то, что вы хотите.
Я использовал метод getWindowVisibleDisplayFrame
, чтобы определить, является ли вид частично видимым или нет, чтобы определить, открыта ли мягкая клавиатура. Вы можете попробовать.
Rect r = new Rect();
// r will be populated with the coordinates of your view
// that area still visible.
rootView.getWindowVisibleDisplayFrame(r);
Не работает ли это: http://developer.android.com/reference/android/view/View.html#getDrawingRect(android.graphics.Rect)
В документации говорится, что он делает то, что вы хотите.