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
达到所需的测量值。
我制作了一个系统叠加层 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 达到所需的测量值。