Я хотел бы нарисовать значок (указатель мыши) на экране поверх других приложений из службы. Я реализовал функциональность, и я могу рисовать на экране, кроме панели навигации. Я изучил несколько other questions здесь и безуспешно пробовал TYPE_SYSTEM_OVERLAY
, TYPE_TOAST
, TYPE_SYSTEM_ERROR
и некоторые другие типы окон.
Я не пытаюсь захватить фокус, просто рисую указатель мыши на экране в течение секунды или двух. Когда я пытаюсь нарисовать панель навигации, она просто исчезает (на самом деле RelativeLayout заканчивается на границе с панелью навигации, даже когда я указываю размер вручную для высоты). На скриншоте ниже показан указатель в виде руки в нижней правой части экрана. Это настолько низко, насколько я могу его позиционировать. Обратите внимание, что я не пытаюсь скрыть панель навигации в своем приложении — пытаюсь рисовать поверх других приложений.
Я даже пытался установить параметры смещения xpos
и ypos
в экземпляре WindowManager.LayoutParams
, но это просто смещает макет и все еще находится ниже панели навигации).
Параметры макета, которые я использую для отображения этого окна:
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);
draw over other apps
в файле манифеста? - person mr.icetea   schedule 26.08.2015