我想在屏幕上从一个服务中绘制一个(鼠标指针)图标,覆盖其他应用程序。我已经实现了这个功能,我可以在屏幕上画图,除了导航栏。我研究了这里和这里以及这里的一些其他问题,并尝试使用TYPE_SYSTEM_OVERLAY
、TYPE_TOAST
、TYPE_SYSTEM_ERROR
和一些其他窗口类型,但没有成功。
我只是想在屏幕上画一个鼠标指针,不需要捕获焦点,仅持续一两秒钟。当我试图画导航栏时,它只会被覆盖在下方(实际上,RelativeLayout 结束于与导航栏的边界处,即使我手动指定高度)。下面的截图显示了屏幕右下角的手形指针,那是我能够将其放置的最低位置。请注意,我不想在我的应用程序中隐藏导航栏,而是想在其他应用程序上绘制它。
我甚至尝试设置 WindowManager.LayoutParams
实例中的 xpos
和 ypos
偏移量设置,但这只是偏移了布局,仍然在导航栏下面。
我正在使用以下布局参数显示此窗口:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
PixelFormat.TRANSPARENT);
然后我将带有这些参数的RelativeLayout
添加到WindowManager中:windowManager.addView(relativeLayout, params);
绘制在其他应用程序上层
的权限吗? - mr.icetea