Po pierwsze, zastanów się długo i intensywnie, jeśli naprawdę chcesz wyłączyć Home
przycisk lub jakikolwiek inny przycisk w tej sprawie (np. Back
Przycisk), nie jest to coś, co należy robić (przynajmniej w większości przypadków jest to zły projekt ). Mogę mówić tylko za siebie, ale jeśli pobrałem aplikację, która nie pozwala mi zrobić czegoś takiego jak kliknięcie przycisku systemu operacyjnego, następną rzeczą, jaką robię, jest odinstalowanie tej aplikacji i pozostawienie bardzo złej recenzji. Uważam również, że Twoja aplikacja nie będzie prezentowana w App Store.
Teraz...
Zwróć uwagę, że MX Player
prosi się o pozwolenie na rysowanie na innych aplikacjach:
Ponieważ nie możesz zastąpić Home
przycisku na Android
urządzeniu (przynajmniej nie w najnowszych wersjach systemu operacyjnego). MX Player
rysuje się nad programem uruchamiającym po „zablokowaniu” aplikacji i kliknięciu Home
przycisku.
Aby zobaczyć przykład tego, który jest nieco prostszy i bardziej zrozumiały, możesz zobaczyć aplikację Facebook Messenger .
Ponieważ poproszono mnie o podanie więcej informacji na temat MX Player Status Bar
i Navigation Bar
„zastępowania”, edytuję moją odpowiedź, aby uwzględnić również te tematy.
Po pierwsze, MX Player korzysta z wciągającego trybu pełnoekranowego ( DevBytes Video ) KitKat
.
Android 4.4 (poziom API 19) wprowadza nową flagę SYSTEM_UI_FLAG_IMMERSIVE dla setSystemUiVisibility () , dzięki której Twoja aplikacja może działać naprawdę „na pełnym ekranie”. Ta flaga w połączeniu z flagami SYSTEM_UI_FLAG_HIDE_NAVIGATION i SYSTEM_UI_FLAG_FULLSCREEN ukrywa paski nawigacji i stanu oraz umożliwia aplikacji przechwytywanie wszystkich zdarzeń dotykowych na ekranie.
Gdy włączony jest wciągający tryb pełnoekranowy, wszystkie zdarzenia dotyku są nadal odbierane podczas Twojej aktywności. Użytkownik może odsłonić paski systemowe, przesuwając palcem do wewnątrz w obszarze, w którym zwykle pojawiają się paski systemowe. Spowoduje to wyczyszczenie flagi SYSTEM_UI_FLAG_HIDE_NAVIGATION (i flagi SYSTEM_UI_FLAG_FULLSCREEN , jeśli jest stosowana), dzięki czemu paski systemowe staną się widoczne. Spowoduje to również wyzwolenie twojego View.OnSystemUiVisibilityChangeListener , jeśli jest ustawiony. Jeśli jednak chcesz, aby paski systemowe ponownie się automatycznie ukrywały po kilku chwilach, możesz zamiast tego użyć flagi SYSTEM_UI_FLAG_IMMERSIVE_STICKY . Zwróć uwagę, że „lepka” wersja flagi nie wyzwala żadnych nasłuchujących, ponieważ paski systemowe pokazane tymczasowo w tym trybie są w stanie przejściowym.
Po drugie: ukrycie paska stanu
Po trzecie: ukrycie paska nawigacji
Należy pamiętać, że chociaż korzystanie z wciągającego trybu pełnoekranowego służy tylko do KitKat
, ukrywanie Status Bar
i Navigation Bar
nie tylko KitKat
.
Nie mam wiele do powiedzenia na temat drugiego i trzeciego, rozumiesz, wierzę, że w każdym razie jest to szybka lektura. Tylko pamiętaj, aby zwrócić szczególną uwagę na View.OnSystemUiVisibilityChangeListener .
Dodałem streszczenie, które wyjaśnia, o co mi chodzi, nie jest kompletne i wymaga naprawy, ale masz pomysł. https://gist.github.com/Epsiloni/8303531
Powodzenia we wdrażaniu tego i dobrej zabawy!