Chciałem, aby moja aplikacja wyglądała bardziej profesjonalnie, więc zdecydowałem, że chcę zrobić ekran powitalny.
Jak mam go stworzyć, a następnie wdrożyć?
android
splash-screen
Efraim
źródło
źródło
Odpowiedzi:
Dalsza lektura:
Stara odpowiedź:
JAK : Prosty ekran powitalny
Te odpowiedzi pokazują, jak wyświetlać ekran powitalny przez określony czas, gdy aplikacja się uruchamia, np. Z powodów związanych z brandingiem. Np. Możesz wybrać wyświetlanie ekranu powitalnego przez 3 sekundy. Jeśli jednak chcesz wyświetlać ekran spash przez różny czas (np. Czas uruchamiania aplikacji), powinieneś sprawdzić odpowiedź Abdullaha https://stackoverflow.com/a/15832037/401025 . Należy jednak pamiętać, że uruchomienie aplikacji może być bardzo szybkie na nowych urządzeniach, więc użytkownik zobaczy tylko flash, który jest zły UX.
Najpierw musisz zdefiniować ekran spash w swoim
layout.xml
plikuA twoja aktywność:
To wszystko ;)
źródło
SPLASH_DISPLAY_LENGTH
czas. Powinieneś to zrobić zamiast tego: bignerdranch.com/blog/splash-screens-the-right-wayUwaga: to rozwiązanie nie pozwoli użytkownikowi czekać dłużej: opóźnienie ekranu powitalnego zależy od czasu uruchomienia aplikacji.
Gdy otworzysz dowolną aplikację na Androida, domyślnie pojawi się jakiś czarny ekran z tytułem i ikoną aplikacji na górze, możesz to zmienić za pomocą stylu / motywu.
Najpierw utwórz plik style.xml w folderze wartości i dodaj do niego styl.
Zamiast używać
@android:style/Theme.DeviceDefault.Light.NoActionBar
możesz użyć dowolnego innego motywu jako elementu nadrzędnego.Po drugie, w aplikacji Manifest.xml dodaj
android:theme="@style/splashScreenTheme"
do swojej głównej aktywności.Po trzecie, zaktualizuj motyw w swojej aktywności uruchamiania onCreate ().
AKTUALIZACJA Sprawdź ten post .
Dzięki @ mat1h i @adelriosantiago
źródło
<item name="android:background">
że zastąpiłoby towindowBackground
. I bezandroid:background
zdefiniowania moje tło w jakichkolwiek fragmentach byłoby przezroczyste, odsłaniając aktywność za treścią na pierwszym planie.twój Splash.java może wyglądać następująco:
zmień
ActivityB.class
na dowolną aktywność, którą chcesz rozpocząć po ekranie powitalnymsprawdź plik manifestu i powinien on wyglądać
źródło
Powyższe odpowiedzi są bardzo dobre, ale chciałbym dodać coś jeszcze. Jestem nowym użytkownikiem Androida, ten problem spotkałem podczas programowania. mam nadzieję, że to może pomóc komuś jak ja.
Ekran powitalny jest punktem wejściowym mojej aplikacji, więc dodaj następujące wiersze w AndroidManifest.xml.
Ekran powitalny powinien pokazywać się tylko raz w cyklu życia aplikacji, używam zmiennej boolean do rejestrowania stanu ekranu powitalnego i pokazuję go tylko za pierwszym razem.
szczęśliwego kodowania!
źródło
android:noHistory="true"
wAndroidManifest.xml
celu uniemożliwić użytkownikowi Wracając do ekranu powitalnego, używając przycisku Wstecz.Odpowiedź Abdullaha jest świetna. Ale chcę dodać więcej szczegółów do mojej odpowiedzi.
Wdrażanie ekranu powitalnego
Wdrożenie ekranu powitalnego jest trochę inne niż można sobie wyobrazić. Widok powitalny, który widzisz, musi być natychmiast gotowy, nawet zanim będziesz mógł nadmuchać plik układu w swojej aktywności powitania.
Więc nie będziesz używać pliku układu. Zamiast tego określ tło ekranu powitalnego jako tło motywu działania. Aby to zrobić, najpierw utwórz plik XML w formacie res / drawable.
background_splash.xml
Jest to po prostu lista warstw z logo w środkowym kolorze tła.
Teraz otwórz styles.xml i dodaj ten styl
Ten motyw będzie musiał mieć pasek akcji i tło, które właśnie utworzyliśmy powyżej.
I oczywiście musisz ustawić SplashTheme na aktywność, której chcesz użyć jako splash.
Następnie w kodzie aktywności przejdź do określonego ekranu po powitaniu, używając zamiaru.
To jest właściwy sposób. Użyłem tych referencji do odpowiedzi.
źródło
YouTube
ten temat. Myślę jednak, że problemem będzie rozmiar mapy bitowej, ponieważ nie można jej zmienić przy użyciulayer-list
.Stworzyć
Activity
SplashScreen.java
splashscreen.xml
tak będzieźródło
Splash Screnn domyślnie nie powoduje, że Twoja aplikacja wygląda bardziej profesjonalnie. Profesjonalnie zaprojektowany ekran powitalny może sprawić, że Twoja aplikacja będzie wyglądać bardziej profesjonalnie, ale jeśli nie wiesz, jak ją napisać, to jak profesjonalna będzie reszta aplikacji.
Jedynym powodem (usprawiedliwieniem) posiadania ekranu powitalnego jest to, że wykonujesz ogromną liczbę obliczeń lub czekasz na uruchomienie GPS / WiFi, ponieważ Twoja aplikacja opiera się na tym przed uruchomieniem. Bez wyniku tych obliczeń lub dostępu do GPS / WiFi (itp.) Twoja aplikacja jest martwa w wodzie, więc czujesz, że potrzebujesz ekranu powitalnego i MUSISZ zablokować widok ekranu dla innych uruchomionych programów (w tym tła ).
Taki ekran powitalny powinien wyglądać jak aplikacja pełnoekranowa, aby sprawiać wrażenie, że została już zainicjowana, a po zakończeniu długich obliczeń można uzupełnić końcowe szczegóły (poprawiono obraz). Szansa na to jest przypadek lub że jest to jedyny sposób, w jaki program mógłby być przeznaczony jest potężny małe .
Lepiej byłoby pozwolić użytkownikowi (i reszcie systemu operacyjnego) zrobić coś innego podczas oczekiwania, niż zaprojektować program tak, aby był zależny od czegoś, co potrwa chwilę (gdy czas oczekiwania jest niepewny).
W telefonie są już ikony, które mówią, że GPS / WiFi się uruchamia. Czas lub miejsce zajmowane przez ekran powitalny można poświęcić na ładowanie wstępnych obliczeń lub wykonywanie obliczeń. Zobacz pierwszy link poniżej, aby dowiedzieć się, jakie problemy tworzysz i co należy wziąć pod uwagę.
Jeśli absolutnie musisz poczekać na te Obliczenia lub GPS / WiFi, najlepiej po prostu pozwól aplikacji się uruchomić i wyświetlić wyskakujące okienko z informacją, że należy poczekać na Obliczenia (tekstowa „Inicjalizacja” komunikatu jest w porządku). Oczekiwanie na GPS / WiFi jest oczekiwane (jeśli nie zostały jeszcze włączone w innym Programie), więc ogłaszanie ich czasów oczekiwania jest niepotrzebne.
Pamiętaj, że kiedy zaczyna się ekran powitalny, twój program JEST już uruchomiony, wszystko, co robisz, to opóźnianie korzystania z programu i zmuszanie procesora / karty graficznej do zrobienia czegoś, co według większości nie jest konieczne.
Powinniśmy naprawdę chcieć czekać i zobaczyć Twój ekran powitalny za każdym razem, gdy uruchamiamy Twój program, w przeciwnym razie MY nie poczujemy, że jest bardzo profesjonalnie napisany. Tworzenie pełnego ekranu powitalnego i duplikatu rzeczywistego ekranu programu (więc uważamy, że jest on inicjowany, gdy tak naprawdę nie jest) MOGĄ osiągnąć cel (uczynić twój program bardziej profesjonalnym), ale nie postawiłbym na to wiele.
Dlaczego tego nie zrobić: http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/
Jak to zrobić: https://encrypted.google.com/search?q=Android+splash+screen+source
Jest więc dobry powód, aby tego nie robić, ale JEŚLI masz pewność, że Twoja sytuacja nie mieści się w tych przykładach, to sposoby na to, jak podano powyżej. Bądź pewien, że to naprawdę sprawia, że Twoja aplikacja wygląda bardziej profesjonalnie, lub pokonałeś jedyny powód, dla którego to zrobiłeś.
To jest jak kanał na YouTube, który rozpoczyna każdy film od długiego wstępu graficznego (i outro) lub odczuwa potrzebę opowiedzenia dowcipu lub wyjaśnienia, co wydarzyło się w ciągu ostatniego tygodnia (gdy nie jest to kanał komediowy lub LifeStyles). Po prostu pokaż program! (Wystarczy uruchomić program).
źródło
Przede wszystkim odpowiedzi są naprawdę bardzo dobre. Ale pojawia się problem wycieku pamięci. Ten problem jest często znany w społeczności Androida jako „Leaking an Activity” . Co to dokładnie oznacza?
Gdy nastąpi zmiana konfiguracji, na przykład zmiana orientacji, Android niszczy działanie i odtwarza je. Zwykle Garbage Collector po prostu wyczyści przydzieloną pamięć starej instancji Activity i wszyscy mamy się dobrze.
„Przeciekanie działania” odnosi się do sytuacji, w której Garbage Collector nie może wyczyścić przydzielonej pamięci starej instancji Activity, ponieważ pochodzi
being (strong) referenced
z obiektu, który przeżył instancję Activity. Każda aplikacja na Androida ma przydzieloną określoną ilość pamięci. Gdy Garbage Collector nie może zwolnić nieużywanej pamięci, wydajność aplikacji będzie się stopniowo zmniejszać i ostatecznie zawiesi się zOutOfMemory
błędem.Jak ustalić, czy aplikacja wycieka pamięć, czy nie? Najszybszym sposobem jest otwarcie karty Pamięć w Android Studio i zwracanie uwagi na przydzieloną pamięć podczas zmiany orientacji. Jeśli przydzielona pamięć stale rośnie i nigdy się nie zmniejsza, oznacza to, że występuje przeciek pamięci.
1. Wyciek pamięci, gdy użytkownik zmieni orientację.
Najpierw musisz zdefiniować ekran powitalny w
splashscreen.xml
pliku zasobów układuAby uzyskać więcej informacji, przejdź przez ten link
źródło
Zatrzymywanie się na ekranie powitalnym dla 4-tych 5 nie ma większego sensu. Jest ok, jeśli ładujesz coś w tle, postępuj zgodnie z tym podejściem, aby zaimplementować ekran powitalny: - Wdrożenie ekranu powitalnego jest nieco inne niż możesz sobie wyobrazić. Widok powitalny, który widzisz, musi być natychmiast gotowy, nawet zanim będziesz mógł nadmuchać plik układu w swojej aktywności powitania.
Więc nie będziesz używać pliku układu. Zamiast tego określ tło ekranu powitalnego jako tło motywu działania. Aby to zrobić, najpierw utwórz XML do rysowania w res / drawable.
Tutaj ustawiłem kolor tła i obraz.
Następnie ustaw to jako tło swojej aktywności powitalnej w motywie. Przejdź do pliku styles.xml i dodaj nowy motyw swojej aktywności splash:
W nowym SplashTheme ustaw atrybut tła okna na format XML do rysowania. Skonfiguruj to jako motyw swojej aktywności powitalnej w AndroidManifest.xml:
Na koniec klasa SplashActivity powinna po prostu przenieść Cię do głównej aktywności:
Więcej szczegółów przeczytaj: 1. https://www.bignerdranch.com/blog/splash-screens-the-right-way/ 2. http://blog.goodbarber.com/3-tips-to-create-a -great-splash-screen-for-your-mobile-app_a287.html
źródło
To jest pełny kod tutaj
SplashActivity.java
W drawables utwórz ten plik bg_splash.xml
W styles.xml stwórz własny motyw
i wreszcie w AndroidManifest.xml określ motyw swojej aktywności
Twoje zdrowie.
źródło
drawable
Ekrany powitalne nie powinny być ładowane z pliku układu, podczas ładowania może nadal występować pewne opóźnienie.
Najlepszym sposobem jest utworzenie motywu tylko dla SplashScreenActivity i ustawienie
the android:windowBackground
zasobu do rysowania.https://www.bignerdranch.com/blog/splash-screens-the-right-way/
W skrócie:
Zadeklaruj SplashScreenActivity w manifeście:
W swoim SplashScreenActivity.java:
Następnie utwórz zasób dla okna tła swojego motywu:
Plik rysunkowy splash.xml:
źródło
Po Androidzie Marshmallow , inne produktywne korzystanie z ekranu powitalnego, o którym myślę, jest wymagane
Android Permissions
na ekranie powitalnym aplikacji.Wygląda na to, że większość aplikacji obsługuje żądania uprawnień w ten sposób.
Okna dialogowe źle wpływają na UIX i przerywają główny przepływ i powodują, że decydujesz o czasie wykonywania, a prawda jest taka, że większość użytkowników może nawet nie dbać o to, czy Twoja aplikacja chce napisać coś na karcie SD. Niektóre z nich mogą nawet nie zrozumieć, co próbujemy przekazać, dopóki nie przetłumaczymy tego na zwykły angielski.
Żądanie uprawnień naraz zmniejsza liczbę „jeśli inaczej” przed każdą operacją i sprawia, że kod wydaje się niepotrzebny.
To jest przykład tego, w jaki sposób możesz poprosić o uprawnienia w swojej aktywności powitalnej dla urządzenia z systemem Android OS 23+.
Jeśli wszystkie uprawnienia są udzielone LUB już przyznane LUB aplikacja działa na Pre Marshmallow TO NASTĘPNIE po prostu przejdź i wyświetl główną zawartość z niewielkim opóźnieniem wynoszącym pół sekundy, aby użytkownik mógł docenić wysiłek włożony w czytanie tego pytania i staranie się jak najlepiej.
źródło
nie będziesz używać pliku układu. Zamiast tego określ tło ekranu powitalnego jako tło motywu działania. Aby to zrobić, najpierw utwórz plik XML w formacie res / drawable.
Uwaga: cały poniższy kod jest dostępny GitHub Link
Tutaj ustawiłem kolor tła i obraz.
Następnie ustaw to jako tło swojej aktywności powitalnej w motywie. Przejdź do pliku styles.xml i dodaj nowy motyw swojej aktywności splash:
W nowym SplashTheme ustaw atrybut tła okna na format XML do rysowania. Skonfiguruj to jako motyw swojej aktywności powitalnej w AndroidManifest.xml:
Wreszcie, twoja klasa SplashActivity powinna po prostu przenieść cię do głównej aktywności:
Zauważ, że nawet nie skonfigurowałeś widoku dla tej funkcji SplashActivity. Widok pochodzi z motywu. Po skonfigurowaniu interfejsu użytkownika dla działania powitalnego w kompozycji jest on dostępny natychmiast.
Jeśli masz plik układu dla działania powitalnego, ten plik układu będzie widoczny dla użytkownika dopiero po pełnej inicjalizacji aplikacji, co jest za późno. Chcesz, aby powitanie było wyświetlane tylko w tak krótkim czasie, zanim aplikacja zostanie zainicjowana.
źródło
źródło
Utwórz działanie, pozwól nam na działanie o nazwie „A”, a następnie utwórz plik xml o nazwie myscreen.xml, w tym zestawie obrazu ekranu powitalnego jako tła, a następnie użyj licznika odliczania czasu do przechodzenia od jednej Aktywności do drugiej. Aby dowiedzieć się, jak korzystać z odliczania, zobacz moją odpowiedź w tym pytaniu TimerTask w Androidzie?
źródło
Przykład ekranu powitalnego:
źródło
Ekran powitalny to mało przydatny obiekt w systemie Android: nie można go załadować tak szybko, jak to możliwe, aby ukryć opóźnienie rozpoczęcia głównej aktywności. Są dwa powody, aby z niego korzystać: reklama i operacje sieciowe.
Implementacja w oknie dialogowym powoduje natychmiastowe przejście z ekranu powitalnego do głównego interfejsu użytkownika aktywności.
Układ:
I zacznij:
źródło
Inne podejście uzyskuje się za pomocą CountDownTimer
źródło
źródło
Naprawdę łatwe i gr8 podejście:
Najpierw utwórz swój splash z następującą witryną:
https://www.norio.be/android-feature-graphic-generator/
Wybierz swoje logo i hasło, wybierz piękne tło. zmień rozmiar na 4096 x 4096.
Teraz pobierz to zdjęcie i umieść je na:
https://apetools.webprofusion.com/app/#/tools/imagegorilla
I wygeneruj wszystkie potrzebne ekrany powitalne, wszystkie urządzenia, wszystkie platformy.
Cieszyć się!
Tutaj jest wystarczająco dużo odpowiedzi, które pomogą we wdrożeniu. ten post miał pomóc innym w pierwszym etapie tworzenia ekranu powitalnego!
źródło
Co powiesz na superelastyczny ekran uruchamiania, który może używać tego samego kodu i jest zdefiniowany w pliku AndroidManifest.xml, więc kod nigdy nie będzie wymagał zmiany. Generalnie tworzę biblioteki kodu i nie lubię dostosowywać kodu, ponieważ jest niechlujny.
Następnie sam SpashActivity wyszukuje metadane dla „launch_class”, aby następnie wykonać sam Intent. „Czas trwania” metadanych określa, jak długo ekran powitalny pozostaje bezczynny.
źródło
Czasami użytkownik
SplashActivity
natychmiast otwiera i kończy pracę, ale aplikacja nadal działaMainActivity
poSPLASH_SCREEN_DISPLAY_LENGTH
.Aby temu zapobiec:
SplashActivity
należy sprawdzić, czySplashActivity
kończy się przed przejściem doMainActivity
Mam nadzieję, że to pomoże
źródło
Chociaż są dobre odpowiedzi, pokażę zalecany przez Google sposób:
1) Najpierw utwórz
Theme
ekran powitalny: masz motyw o nazwiesplashscreenTheme
, motywem uruchamiania będzie:Uwaga:
android:windowBackground
ustawia już twój ekran powitalny nrtrzeba tego ponownie robić w interfejsie użytkownika.
możesz także użyć tutaj koloru zamiast szuflady.
2) Ustaw temat, aby manifestował ekran powitalny Aktywność
3) upewnij się, że ekran uruchamiania
drawable
nie znajduje się wdrawable
folderze, jeśli obraz nie jest mały.Spowoduje to szybsze uruchomienie ekranu startowego i uratuje cię z czarnego ekranu
Pozwala to również uniknąć dodatkowego overdraw
źródło
To najlepszy post, jaki widziałem na ekranach powitalnych: http://saulmm.github.io/avoding-android-cold-starts
Saúl Molinero ma dwie różne opcje ekranów powitalnych: Wykorzystanie tła okna do animacji na ekranie początkowym i wyświetlenie zastępczego interfejsu użytkownika (który jest popularnym wyborem, którego Google używa obecnie w większości swoich aplikacji).
Odnoszę się do tego postu za każdym razem, gdy muszę wziąć pod uwagę czas zimnego startu i unikać rezygnacji użytkownika z powodu długich czasów uruchamiania.
Mam nadzieję że to pomoże!
źródło
W moim przypadku nie chciałem tworzyć nowego działania tylko po to, aby wyświetlać obraz przez 2 sekundy. Po uruchomieniu moje
MainAvtivity
obrazy są ładowane do uchwytów za pomocą Picassa, wiem, że ładowanie zajmuje około 1 sekundy, więc postanowiłem wykonać następujące czynności w mojej MainActivityOnCreate
:Podczas uruchamiania aplikacji pierwszą rzeczą, która się dzieje, jest
ImageView
wyświetlany, a pasek statusu jest usuwany poprzez ustawienie flag okna na pełny ekran. Następnie użyłem aHandler
do uruchomienia przez 2 sekundy, po 2 sekundach wyczyściłem flagi pełnego ekranu i ustawiłem widocznośćImageView
doGONE
. Łatwy, prosty, skuteczny.źródło
To jest naprawdę proste w Androidzie. Po prostu używamy koncepcji modułu obsługi do wdrożenia ekranu powitalnego
W twoim pliku Java SplashScreenActivity wklej ten kod.
W swoim pliku xml SplashScreenActivity umieść dowolne zdjęcie za pomocą podglądu obrazu.
źródło
Możesz to dodać w metodzie onCreate
I zainicjuj swoją wartość czasu w milisekundach, jak chcesz ...
po więcej szczegółów pobierz pełny kod z tego linku ...
https://github.com/Mr-Perfectt/Splash-Screen
źródło
W Kotlin wpisz ten kod: -
Mam nadzieję, że to ci pomoże. Dzięki ........
źródło
Prosty kod, to działa :) Prosty powitalny
źródło
źródło