Android - 如何让我的系统覆盖 window 在不同的屏幕上具有相同的尺寸

Android - How can I make my system overlay window have the same dimension on different screens

我制作了一个系统叠加层 window,它始终位于其他应用程序之上。 屏幕的宽度是 'MATCH_PARENT',我想从高度开始覆盖屏幕的某个区域,但我的问题是不同屏幕上的高度不一样。

这是我的代码:

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.MATCH_PARENT,
                1500,
                WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN |
                        WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSPARENT);

怎样才能让1500p在不同的屏幕上保持一致? 谢谢

尝试使用 window 高度维度创建维度资源 dimens.xml 文件:

<dimen name="window_height">1500dp</dimen>

然后通过从上下文调用 getRecources().getDimension() 将维度分配给 window 高度,如下所示:

int height = context.getResources().getDimension(R.dimen.window_height);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.MATCH_PARENT,
            height,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN |
                    WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSPARENT);

我的问题被微小的阳光解决了:

(int)(getResources().getDisplayMetrics().heightPixels* 0.8f)

你必须用这个替换所需的尺寸参数并调整 0,8F 达到所需的测量值。