2015-10-20 25 views
5

Podobnie jak wielu innych programistów Androida, nie jestem wielkim fanem ekranów powitalnych, ale większość klientów chce je mieć, ponieważ iPhone ma je lub inny "wspaniały" powód.Android, jak zrobić ekran powitalny jako ekran startowy bez białego ekranu?

w Android wytycznych mówi:

Naturalnie chcesz wszyscy szybko nauczyć się lin, odkrywanie ciekawych funkcji i uzyskać jak najwięcej z Twojej aplikacji. Możesz więc pokusić się o zaprezentowanie jednorazowego pokazu slajdów, filmu lub ekranu powitalnego wszystkim nowym użytkownikom po pierwszym otwarciu aplikacji. Możesz też zwrócić uwagę na pomysł wyświetlania przydatnych baniek tekstowych lub okien dialogowych, gdy użytkownicy wchodzą w interakcję z pewnymi funkcjami po raz pierwszy.

link here akapit pierwszy w „Nie pokazuj niechcianych pomocy, z wyjątkiem bardzo nielicznych przypadkach”

A teraz w materialnych wytycznych projektowych zalecają programistom używać "Launch Screen"

Ponieważ uruchomienie aplikacji podczas wyświetlania pustego płótna zwiększa jego postrzegany czas ładowania, rozważ użycie zastępczego interfejsu użytkownika lub markowego ekranu uruchamiania.

Zgaduję, że strona z Androidem nie została jeszcze zaktualizowana. W każdym razie ostatnia wersja Hangouts (5.0.104 ...) ma bardzo ładny i szybki ekran uruchamiania. Jest natychmiast wyświetlany na moim Nexusie 5 z Marshmallow. Więc moje pytanie, czy istnieje "oficjalny" sposób robienia tego?

Szukałem przykładów, ale nie mogę znaleźć niczego poza obejściami takimi jak ten przykład here, który wykorzystuje to, co uważam za najbardziej powszechne podejście z Aktywnością ekranu powitalnego. Ten jednak pokazuje biały ekran, gdy aplikacja została zniszczona, zanim zostanie wyświetlony ekran powitalny.

Ten motyw second example wykorzystuje motyw z tłem okna, które jest wyświetlane natychmiastowo, ale znika równie szybko.

Jak Google tworzy ekran uruchamiania w Google Hangouts, który jest wyświetlany bez opóźnień i bez białego ekranu?

Odpowiedz

12

Kolega z mojej pracy były w materiałach szkoleniowych projektu w siedzibie Google w Londynie oraz ich urzędowej sposób to zrobić jest użycie windowBackground w temacie, jak pisał na swoim pytaniem: http://antonioleiva.com/branded-launch-screen/

Chodzi o to, że motyw XML jest bardzo szybko wyświetlany przez framework i jak tylko zostanie załadowany twój aktualny układ, będzie widoczny.

Różnica między Spotkaniami a nawet Mapami Google polega na tym, że ich układ jest bardzo ciężkim/złożonym układem, a ich ładowanie trwa dłużej niż aplikacja HelloWorld.

W miarę jak aplikacja będzie się rozwijać i będzie bardziej złożona, a więcej elementów zostanie zainicjowanych podczas Application.onCreate lub Activity.onCreate, twój ukośnik będzie również widoczny przez dłuższy czas.

edit:

Znalazłem post Google+ z oficjalnej "Android Developers" profilu i odśwież od inżyniera Google Ian Lake mówią to samo:

https://plus.google.com/+AndroidDevelopers/posts/Z1Wwainpjhd https://plus.google.com/+IanLake/posts/SW7F2CJvAmU

+1

ps .: sprawdź moją edycję. Znalazłem na niej kilka postów w G +. – Budius

0

Dzieje się tak, ponieważ pierwsze rozwiązanie (http://antonioleiva.com/branded-launch-screen/) zmienia motyw w onCreate. Ale widżety Twojej aktywności nie są jeszcze renderowane w trybie OnCreate. Dlatego widzisz biały ekran. Drugi przykład jest dobry. Jeśli potrzebujesz dłuższego czasu, ustaw dłuższy czas na SPLASH_TIME. Sprawdź linię Thread.sleep (SPLASH_TIME) w funkcji doInBackground. Możesz poczekać dłużej.

Powiązane problemy