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