По-перше, подумайте довго, якщо ви дійсно хочете відключити 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
Удачі вам у реалізації цього і отримуйте задоволення!