Я пытаюсь создать кнопку, которая всегда находится на экране.
- Кнопка должна быть интерактивной и ничего прямо под кнопкой не следует активировать при нажатии.
- Работа или домашний экран за кнопкой все равно работать, что пользователь должен по-прежнему способность взаимодействовать с домом экрана или приложения.
- Программная клавиша кнопки должны по-прежнему работать: дома, назад, меню и т.д.
Следующий код содержит # 1 и # 2, но кнопки софт-клавиш больше не работают:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
Изменение этого параметра отключает наложение от кликов, но # 2 и # 3 работают:
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
Наконец, в этом примере накладывается оверлей и то, что прямо за ним:
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
Как я могу изменить это так, чтобы наложение было кликабельным, что непосредственно под ним не доступно для кликов, и все, что находится за пределами наложения, включая домашние кнопки?
Пример приложения, выполняющего все это, - это Super Manager.
UPDATE: я обнаружил, что следующее позволяет использовать кнопку дома, но все же не остальные кнопки:
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT |
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH