getWindowVisibleDisplayFrame()是View类下的一个方法,从方法的名字就可以看出,它是用来获取当前窗口可视区域大小的。
此方法的原型为
public void getWindowVisibleDisplayFrame(Rect outRect);
它接受一个Rect对象作为参数,执行过程中会根据当前窗口可视区域大小更新outRect的值,执行完毕后,就可以根据更新后的outRect来确定窗口可视区域的大小
由于getWindowVisibleDisplayFrame()方法是View类下的一个方法,所以只能通过View对象来调用。一个窗口中通常都会有多个View,getWindowVisibleDisplayFrame()方法的返回结果和该窗口中选取的View并没有关系。在某个时刻,使用当前窗口中的任意View执行getWindowVisibleDisplayFrame()返回的结果都是一样的。
一般来说可以使用当前窗口的根View来执行这个方法,也就是调用Window对象getDecorView().getWindowVisibleDisplayFrame()来获取。在Acitivity和Dialog中可以用getWindow()来得到Window对象,合起来就是这样的。
Rect rect = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
getWindowVisibleDisplayFrame()的执行结果和View对象状态的关系
虽然getWindowV