Skip to content

获取屏幕相关高度

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)

越努力,越幸运


我的简书笔记

我的麦库分享

我的微博


梦想还是要有的

Clone this wiki locally