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

时间:2016-01-01 13:49:22

标签: android dimensions

我制作了一个始终位于其他应用之上的系统覆盖窗口。 屏幕的宽度是'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变得相同? 感谢。

2 个答案:

答案 0 :(得分:0)

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

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

然后通过从上下文中调用getRecources()。getDimension()将维度指定给窗口高度,如下所示:

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);

答案 1 :(得分:0)

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

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

您必须用此替换所需的尺寸参数并调整0,8F 达到预期的测量值。