Jak zrobić aktywność na pełnym ekranie? Mam na myśli bez paska powiadomień. Jakieś pomysły?
605
Jak zrobić aktywność na pełnym ekranie? Mam na myśli bez paska powiadomień. Jakieś pomysły?
Możesz to zrobić programowo:
public class ActivityName extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// remove title
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
}
}
Lub możesz to zrobić za pomocą swojego AndroidManifest.xml
pliku:
<activity android:name=".ActivityName"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
Edytować:
Jeśli używasz AppCompatActivity, musisz dodać nowy motyw
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
a następnie użyj go.
<activity android:name=".ActivityName"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"/>
@android:style/Theme.Holo.Light.NoActionBar.Fullscreen
AppCompatActivity
, musiszrequestWindowFeature
wcześniejsuper.onCreate
. W przeciwnym razie otrzymasz:android.util.AndroidRuntimeException: requestFeature() must be called before adding content
W KitKat dostępna jest technika o nazwie Immersive Full-Screen Mode .
Przykład
źródło
Jeśli nie chcesz używać motywu,
@android:style/Theme.NoTitleBar.Fullscreen
ponieważ już używasz własnego motywu, możesz go użyćandroid:windowFullscreen
.W AndroidManifest.xml:
W styles.xml:
źródło
W pliku AndroidManifest.xml :
Lub w kodzie Java :
źródło
Jeśli używasz AppCompat i ActionBarActivity, użyj tego
getSupportActionBar().hide();
źródło
Uważaj z
Jeśli używasz dowolnej metody, aby ustawić pasek akcji w następujący sposób:
Spowoduje to wyjątek wskaźnika zerowego.
źródło
Wypróbuj to z appcompat z
style.xml
. Zapewnia obsługę wszystkich platform.źródło
Korzystanie z Android Studio (obecnie obecna wersja to 2.2.2) jest bardzo łatwe do dodania aktywności na pełnym ekranie.
Zobacz kroki:
Gotowy!
Teraz masz łatwą aktywność na pełnym ekranie (zobacz klasę Java i układ aktywności, aby wiedzieć, jak to działa)!
źródło
Dla korzystających z AppCompact ... style.xml
Następnie wpisz nazwę w swoim manifeście ...
źródło
Najpierw musisz ustawić motyw aplikacji za pomocą „NoActionBar”, jak poniżej
Następnie dodaj te linie do aktywności na pełnym ekranie.
Ukryje pasek akcji / pasek narzędzi, a także pasek stanu w aktywności na pełnym ekranie
źródło
AndroidManifest.xml
I. Twoją główną aplikacją jest Theme.AppCompat.Light.DarkActionBar
Do ukrywania ActionBar / StatusBar
style.xml
Aby ukryć pasek nawigacji systemu
II. Twoim głównym motywem aplikacji jest Theme.AppCompat.Light.NoActionBar
Do ukrywania ActionBar / StatusBar
style.xml
Aby ukryć pasek nawigacji systemu
Podobnie jak
Theme.AppCompat.Light.DarkActionBar
.Próbny
źródło
dzięki za odpowiedź @Cristian dostałem błąd
rozwiązałem to za pomocą
źródło
requestWindowFeature(Window.FEATURE_NO_TITLE);
wcześniejsuper.onCreate(savedInstanceState);
?pokaż pełny wciągający:
wyjść z trybu pełnego zanurzenia:
źródło
Chciałem użyć własnego motywu zamiast @android: style / Theme.NoTitleBar.Fullscreen. Ale to nie działało, jak wspomniano tutaj w jednym z postów, więc poprawiłem go, aby to rozgryźć.
W AndroidManifest.xml:
W styles.xml:
Uwaga: w moim przypadku musiałem użyć
name="windowActionBar"
zamiast,name="android:windowActionBar"
zanim zadziałało poprawnie. Więc użyłem obu, aby upewnić się, że w razie potrzeby muszę później przenieść się na nową wersję Androida.źródło
Oto przykładowy kod. Możesz włączyć / wyłączyć flagi, aby ukryć / pokazać określone części.
Następnie resetujesz do stanu domyślnego :
Możesz wywołać powyższe funkcje z
onCreate
:źródło
KOTLIN
Po dokumencie Google istnieje prosty sposób:
Dokumenty Google
źródło
WSKAZÓWKA: Korzystanie z getWindow (). SetLayout () może zepsuć wyświetlanie na pełnym ekranie! Uwaga dokumentacja tej metody mówi:
http://developer.android.com/reference/android/view/Window.html#setLayout%28int,%20int%29
Do moich celów stwierdziłem, że musiałem użyć setLayout z parametrami bezwzględnymi, aby poprawnie zmienić rozmiar okna pełnego ekranu. W większości przypadków działało to dobrze. Zostało wywołane przez zdarzenie onConfigurationChanged (). Wystąpił jednak czkawka. Jeśli użytkownik opuści aplikację, zmieni orientację i ponownie wejdzie, doprowadzi to do odpalenia mojego kodu, który zawiera setLayout (). Podczas tego okna czasu ponownego wejścia mój pasek stanu (który był ukryty przez manifest) zostałby ponownie wyświetlony, ale w żadnym innym przypadku setLayout () nie spowodowałby tego! Rozwiązaniem było dodanie dodatkowego wywołania setLayout () po tym z twardymi wartościami, takimi jak:
Następnie okno zmieniło odpowiednio rozmiar, a pasek stanu nie pojawił się ponownie, niezależnie od zdarzenia, które je wywołało.
źródło
źródło
Inside styles.xml ...
To zadziałało dla mnie. Mam nadzieję, że ci to pomoże.
źródło
Z kotlin tak właśnie zrobiłem:
Tryb immersyjny
Tryb zanurzenia jest przeznaczony dla aplikacji, w których użytkownik będzie intensywnie wchodził w interakcje z ekranem. Przykładami są gry, przeglądanie obrazów w galerii lub czytanie stronicowanych treści, takich jak książka lub slajdy w prezentacji. W tym celu wystarczy dodać następujące linie:
Lepkie zanurzenie
W zwykłym trybie immersyjnym za każdym razem, gdy użytkownik przesuwa się od krawędzi, system dba o odsłonięcie pasków systemowych - aplikacja nawet nie zdaje sobie sprawy z tego, że ten gest wystąpił. Jeśli więc użytkownik może rzeczywiście potrzebować przeciągnięcia palcem od krawędzi ekranu w ramach podstawowej aplikacji - na przykład podczas grania w grę wymagającą dużej liczby przeciągnięć lub korzystania z aplikacji do rysowania - należy zamiast tego włączyć tryb „lepki” .
Po więcej informacji: Włącz tryb pełnoekranowy
W przypadku korzystania z klawiatury czasami zdarza się, że pasek stanu pokazuje się, gdy pojawia się klawiatura. W takim przypadku zazwyczaj dodam to do mojego stylu xml
styles.xml
A także ta linia do mojego manifestu
źródło
Po prostu wklej ten kod do
onCreate()
metodyźródło
To zadziałało dla mnie.
źródło
źródło
Po wielu latach bez powodzenia przyjechałem z własnym rozwiązaniem, które jest zupełnie inne w przypadku innego programisty. Więc jeśli ktoś jej potrzebuje, to właśnie tak. Moim problemem było to, że pasek nawigacji systemu nie ukrywał się po wywołaniu. Również w moim przypadku potrzebowałem krajobrazu, więc na wszelki wypadek skomentuj tę linię i to wszystko. Przede wszystkim stwórz styl
To jest mój plik manifestu
To jest moja aktywność spalsh
}
I to jest moja główna aktywność na pełnym ekranie. onSystemUiVisibilityChange Ta metoda jest ważna, w przeciwnym razie główny pasek nawigacji Androida po wywołaniu pozostanie i nie zniknie. Naprawdę irytujący problem, ale ta funkcja rozwiązuje ten problem.
klasa publiczna MainActivity rozszerza AppCompatActivity {
}
Oto mój układ ekranu powitalnego:
mam nadzieję, że to Ci pomoże
źródło
https://developer.android.com/training/system-ui/immersive.html
Czynność :
AndroidManifesty:
źródło
Utwórz puste działanie i dodaj dwa wiersze
onCreate
.źródło
Użyj tej metody po setContentView w onCreate () i przekaż obiekt Window przez getWindow () .
Ten kod będzie działał również na ekranie wycięcia. Aby sprawdzić wycięcie na pełnym ekranie, potrzebujesz Androida P, ale jeśli masz telefon z wycięciem, przejdź do ustawienia -> Ustawienia wyświetlania -> współczynnik wyświetlania aplikacji ---> wybierz aplikację ---> będą dwie bezpieczne opcje wyświetlanie i pełny ekran, wybierz pełny ekran i uruchom aplikację, możesz zobaczyć pełny ekran w wycięciu również bez Androida Pie
źródło
Aby uczynić aktywność na pełnym ekranie, wykonaj następujące czynności:
Spowoduje to ukrycie paska narzędzi i paska stanu.
Ale w niektórych przypadkach możesz chcieć wyświetlić pasek stanu z przezroczystym tłem, w takim przypadku wykonaj następujące czynności:
Inne alternatywy do ukrywania paska narzędzi zamiast
getSupportActionBar().hide()
:<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
Dla miłośników kotlin skorzystać z funkcji rozszerzenia:
W pierwszym przypadku:
I zadzwoń wcześniej
setContentView
:Po drugie:
I nazwij to wcześniej
setContentView
:źródło
Na Androidzie 10 żaden nie działał dla mnie.
Ale ja działałem idealnie dobrze (pierwsza linia w utworzeniu):
cieszyć się :)
źródło
Aby wyświetlić zawartość przez wycięcie lub obszar wycięcia. Może to pomóc w dokumentach:
Kluczową rzeczą dla mnie była ta linia w stylu aktywności:
Dla mnie chciałem pokazać obraz w trybie immersyjnym. Po kliknięciu chcę wyświetlić interfejs użytkownika systemu (paski stanu i nawigacji).
Oto moje rozwiązanie:
1- W ćwiczeniu niektóre metody pokazywania / ukrywania interfejsu użytkownika systemu (paski stanu / nawigacji)
2- Upewnij się, że jest to w widoku głównym twojego układu xml
3- Styl dla pełnego ekranu Aktywność zapewni paski stanu / nawigacji półprzezroczyste tło, gdy się pojawią:
źródło