Jak Facebook tworzy czaty na Androidzie? Co to jest interfejs API do tworzenia widoków pływających nad wszystkimi innymi widokami?
android
facebook
android-windowmanager
Daniel A. White
źródło
źródło
Odpowiedzi:
Ten :
// EDYCJA: Pełny kod tutaj :
Nie zapomnij jakoś uruchomić usługi:
.. I dodaj tę usługę do swojego manifestu.
źródło
Z reguły działania Androida to pełnoekranowe, koncepcyjnie dedykowane interfejsy użytkownika, które biorą całą interakcję. Jest kilka wyjątków od tego. Na początek są wyskakujące okna dialogowe, które nie wypełniają ekranu. Kolejnym jest toast na Androida, który jest nieinteraktywnym okienkiem wyskakującym - nie możesz go dotknąć, a jeśli spróbujesz, przejdzie do wszystkiego, co jest pod nim.
Możesz także tworzyć własne specjalne interfejsy użytkownika. Możesz dodać widoki bezpośrednio do
WindowManager
, określając flagę typu. Głowy czatu prawdopodobnie używają TYPE_PHONE . Istnieje kilka podobnych typów, ale cel jest taki sam: nakładki specjalnego przeznaczenia, które mogą pojawiać się nad czymkolwiek innym, bez widocznej obecności aplikacji nadrzędnej.To dotrwa tylko do tej pory z powodu problemów z interakcją. Na początku twoja nakładka pochłonie całą interakcję, więc nie tylko głowa otrzymuje zdarzenia, ale blokujesz interakcję ze wszystkim pod spodem.
To zachowanie konfiguruje się za pomocą LayoutParams .
FLAG_NOT_TOUCH_MODAL
oznacza, że zdarzenia poza obszarem wyświetlania przechodzą do podstawowych interfejsów użytkownika. Przekonasz się, że to działa, ale wciąż zdarzają się inne złe rzeczy, takie jak przyciski Wstecz / Menu nie są kierowane do aplikacji, a także bez klawiatury. Aby rozwiązać ten problemFLAG_NOT_FOCUSABLE
.Uzyskujesz również efekt uboczny z nieregulowanego bitu, który nie jest już przyjemną interakcją z twoją nakładką, np. Naciśnięciem przycisku. Możesz jednak uzyskać podstawowe zdarzenia dotykowe, na których zawsze możesz wykonywać matematykę, i to prawdopodobnie wystarcza dla szefów czatów. Tylko pamiętaj, że pozostawia cię na własną rękę w wielu obszarach, takich jak animacja interfejsu użytkownika.
Dobry przegląd szczegółów, w tym umożliwienie selektywnego zużycia interakcji, można znaleźć w tym wątku StackOverflow . W szczególności jeden z linków odpowiedzi ostatecznie doprowadzi cię tutaj , co jest dobrym przykładem projektu. Zauważ, że ICS zmieniło nieco to, ale wątki to wyjaśniają.
To wszystko są publiczne interfejsy API, ale tak naprawdę nie wygląda to na główny nurt, który należy robić jako coś oczywistego. Dokumentacja jest pełna odnośników do specjalnych zachowań aplikacji systemowych i nie bez powodu; co jeśli wszyscy to zrobili?
źródło
Sprężyste głowy dają wiosenne zachowanie głów czatu po wyjęciu z pudełka. Wszystko, co musisz zdefiniować, to możliwość rysowania dla głowy czatu i fragment, który otworzy się po kliknięciu. Głowice czatu upadają po zminimalizowaniu i podążają za palcem po przeciągnięciu.
Projekt zawiera aplikację demonstracyjną, która demonstruje wszystkie wbudowane funkcje. Aby go użyć, musisz dodać to do swoich zależności między stopniami.
źródło