По-перше, подумайте довго, якщо ви дійсно хочете відключити Homeкнопку або будь-яку іншу кнопку (наприклад, Backкнопку), це не те, що потрібно робити (принаймні більшість випадків це поганий дизайн ). Я можу говорити лише за себе, але якщо я завантажив програму, яка не дозволяє мені робити щось на зразок натискання кнопки ОС, наступне, що я роблю - це видалити цю програму і залишити дуже поганий відгук. Я також вважаю, що ваш додаток не буде розміщений в App Store.
Зараз ...
Зверніть увагу, що MX Playerзапитується дозвіл малювати поверх інших програм:
Оскільки ви не можете замінити Homeкнопку на Androidпристрої (принаймні ні в останніх версіях ОС). MX Playerмалює себе на панелі запуску, коли ви "блокуєте" програму та натискаєте Homeкнопку.
Щоб побачити приклад, який трохи простіший і зрозуміліший, ви можете побачити додаток Facebook Messenger .
Оскільки мене попросили надати трохи більше інформації про програвач MX Status Barта Navigation Bar"заміщення", я редагую свою відповідь, щоб включити ці теми теж.
Перш за все, MX Player використовує іммерсивний повноекранний режим ( DevBytes Video ) KitKat.
Android 4.4 (API Level 19) представляє новий прапор SYSTEM_UI_FLAG_IMMERSIVE для setSystemUiVisibility (), який дозволяє вашій програмі справді переходити на "весь екран". Цей прапор у поєднанні з прапорами SYSTEM_UI_FLAG_HIDE_NAVIGATION та SYSTEM_UI_FLAG_FULLSCREEN приховує панелі навігації та стану та дозволяє додатку фіксувати всі події дотику на екрані.
Коли ввімкнено повноекранний повноекранний режим, ваша активність продовжує отримувати всі події дотику. Користувач може розкрити системні панелі, провевши всередину вздовж області, де зазвичай відображаються системні панелі. Це очищає прапор SYSTEM_UI_FLAG_HIDE_NAVIGATION (і прапор SYSTEM_UI_FLAG_FULLSCREEN , якщо застосовується), тому системні рядки стають видимими. Це також запускає ваш View.OnSystemUiVisibilityChangeListener , якщо встановлений. Однак якщо ви хочете, щоб системні панелі автоматично автоматично приховувались через кілька хвилин, ви можете замість цього використовувати прапор SYSTEM_UI_FLAG_IMMERSIVE_STICKY . Зверніть увагу, що "липка" версія прапора не викликає жодного слухача, оскільки системні панелі, тимчасово показані в цьому режимі, перехідні.
По-друге: приховування рядка стану
По-третє: приховування панелі навігації
Зверніть увагу, що хоча використання повного повного екрану є лише для KitKat, приховування Status Barта Navigation Barне лише для KitKat.
Я не маю багато що сказати про 2-е та 3-е. Ви розумієте, я вважаю, це швидке читання в будь-якому випадку. Просто не забудьте приділити пильну увагу View.OnSystemUiVisibilityChangeListener .
Я додав зміст, який пояснює, що я мав на увазі, він не повний і потребує певного виправлення, але ви зрозумієте ідею. https://gist.github.com/Epsiloni/8303531
Удачі вам у реалізації цього і отримуйте задоволення!