-
Notifications
You must be signed in to change notification settings - Fork 23
获取屏幕相关高度
wswenyue edited this page Oct 11, 2015
·
1 revision
#窗口的几个区域如下图所示:
#获取除状态栏,标题栏之外的文本区域的高度,也就是正文区域高度(黄色边框区域)
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
View windows = getWindow().findViewById(Window.ID_ANDROID_CONTENT);///获得根视图
int height = windows.getHeight();//这个高度就是正文区域高度
if (hasFocus) {
//TODO 当Activity获取到焦点的时候执行其他任务
}
}
注: 为什么要在这个方法获取,因为在Activity的生命周期方法里获取不到,获取的全是0
Activity生命周期中,onStart, onResume, onCreate都不是真正visible的时间点,真正的visible时间点是onWindowFocusChanged()函数被执行时。参考博文
相关方法的执行顺序:
1: entry: onStart---->onResume---->onAttachedToWindow----------->onWindowVisibilityChanged--visibility=0---------->onWindowFocusChanged(true)------->
2. exit: onPause---->onStop---->onWindowFocusChanged(false) ---------------------- (lockscreen)
3. exit : onPause----->onWindowFocusChanged(false)-------->onWindowVisibilityChanged--visibility=8------------>onStop(to another activity)