Я успешно реализовал плавающее окно, которое будет отображаться из службы поверх всех действий с использованием служб оконного менеджера. Кроме того, я обрабатываю сенсорные события, чтобы иметь возможность перетаскивать их. По желанию, события касания и щелчка в плавающем окне работают хорошо. Кроме того, любые клики за пределами окна корректно обрабатываются действиями под окном.
Однако есть эти две проблемы, которые беспокоят меня уже давно.
-
- The back and menu buttons do not react to the touch events while the floating window is around
-
- If the activity beneath the floating window displays a list view, the list elements do not react to click events. What is even more weird is that it does correctly handle any click event on the sub-components within the list element e.g. a check-box in each row in the list view. But the list element click handler would not get called no matter what despite showing the click animation.
Here is the relevant code. Any help is deeply appreciated.
final WindowManager.LayoutParams parameters = new WindowManager.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,FrameLayout.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|WindowManager.LayoutParams.FLAG_DIM_BEHIND,
PixelFormat.TRANSLUCENT);
wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(<myView>, parameters);