android - 有没有办法检查状态栏的可见性?

标签 android android-layout statusbar

我有一项服务应该定期检查状态栏的可见性,当某些顶级 Activity 处于(或不处于)全屏模式时。 可能吗?

最佳答案

最后我发现了如何检查状态栏是否可见。它是某种技巧,但对我有用。我在我的服务中创建了那个方法:

private void createHelperWnd() {
        WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
        final WindowManager.LayoutParams p = new WindowManager.LayoutParams();
        p.type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
        p.gravity = Gravity.RIGHT | Gravity.TOP;
        p.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
        p.width = 1;
        p.height = LayoutParams.MATCH_PARENT;
        p.format = PixelFormat.TRANSPARENT;
        helperWnd = new View(this); //View helperWnd;

        wm.addView(helperWnd, p);
        final ViewTreeObserver vto = helperWnd.getViewTreeObserver();
        vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

            @Override
            public void onGlobalLayout() {

                if (heightS == helperWnd.getHeight()) {
                    isFullScreen = true;
                } else {
                    isFullScreen = false;
                }
            }
        });

    }

其中 widthS 和 heightS 是我们的全局屏幕尺寸; 在这里,我只是将不可见的帮助窗口高度与屏幕高度进行了比较,并决定状态栏是否可见。并且不要忘记在您的服务的 onDestroy 中删除 helperWnd。

关于android - 有没有办法检查状态栏的可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8200838/

相关文章:

java - 从android中的另一个 Activity 获取图像时获取空指针异常

java - 计数不将光标移动到android中的位置1

jquery - 如何将错误消息显示回 ASP.NET MVC 页面?

java - 如何去除应用栏上方的阴影?

delphi - 加快Delphi状态栏的更新速度

Android OpenGL 只渲染一半的屏幕

android - 对于只计划使用一个屏幕的布局,仅使用 LinearLayout 是一种好的做法吗?

android - 以编程方式静默安装 .apk

Android:防止手机振动功能影响加速度计数据

安卓NDK : calling java method from JNI C class