Я пытался создать наложения на экране так же, как Facebook Messenger, наложение имеет два статуса: расширенный , который занимает полный экран и свернутый Который состоит только из перетаскиваемого пузыря . После нажатия на пузырь, представление расширяется, а при нажатии на пузырь снова, представление рушится.
Мне удалось добиться этого, проблема, с которой я столкнулся сейчас, заключается в том, что я хочу, чтобы приложение свернулось сверните в пузырек при нажатии кнопок «Домой», «Меню» или «Назад», или когда в телефоне происходит другое изменение, например, прием телефонного звонка, поскольку сейчас приложение остается на вершине всего, даже когда кнопка «Домой» нажата или получен телефонный звонок.
Загрузка всплывающей подсказки
int LAYOUT_FLAG;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_PHONE;
}
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
LAYOUT_FLAG,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
mWindowManager.addView(mFloatingWidget, params);
Расширение просмотра
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
LAYOUT_FLAG,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
params.x = 0;
params.y = 100;
mWindowManager.updateViewLayout(mFloatingWidget, params);
collapsedView.setVisibility(View.GONE);
expandedView.setVisibility(View.VISIBLE);
Я долго искал решение, прежде чем опубликовать вопрос здесь, есть ли способ прослушать такие изменения в системе? Заранее спасибо