Я хочу, чтобы плавающий макет отображался на всех экранах любых приложений на телефоне, и я могу выполнять действия с этим макетом, кроме того, что другое приложение, работающее рядом с этим макетом, может получать свои собственные действия и события.
А вот приложение, которое делает то, что я хочу https://play.google.com/store/apps/details?id=com.ninja.sms
Вот подход, над которым я работал: я использовал WindowManager для рисования макета и сервис для управления этим макетом.
Я использовал следующую библиотеку https://github.com/t0mm13b/TouchSoftly, но у нее есть некоторые проблемы 1 Макет не получает действия или сенсорные события, действия переходят к видам под тем, который нарисован этой библиотекой. 2. Макет исчезает, когда убивается активность, запустившая службу.
Итак, я сделал некоторые настройки в следующем фрагменте
_layOutParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
_layOutParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
_layOutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
_layOutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
if (_layOutParams != null) {
Log.d(TAG, "onCreate() - Got _layOutParams!");
_layOutParams.gravity = Gravity.RIGHT | Gravity.TOP;
} else
Log.d(TAG, "onCreate() - _layOutParams is null! :(");
_hudPageView = _layOutInflater.inflate(R.layout.service_hudpageview, null);
В результате: макет уже нарисован и может получить сенсорное событие, но кнопки «Домой», «Назад» и «Последние приложения» не работают или не влияют ни на какое приложение, пока макет отображается на экране.
Так что все еще не достигает того, что я хочу.
И вот исходный код и репозиторий, над которым я работаю, поэтому вы можете просмотреть мой исходный код https://github.com/mmelsabry/FloatingLayout
Я знаю, что здесь есть еще один вопрос Плавающий виджет/Оверлей на панели запуска Android
но это не помогает