Jaka jest różnica między kompatybilnością ActionBarSherlock i Action Bar
Kilka dni temu Google właśnie wydało kompatybilność ActionBar, która mnie tak zdezorientowała. Czy to, że Kompatybilność paska akcji działa tak samo jak ActionBarSherlock i czy kodowanie jest takie samo?
Przykład: Czy ikona aplikacji umożliwiająca nawigację „w górę” lub ActionBar.Tab jest obsługiwana w zgodności z paskiem akcji?
Odpowiedzi:
ActionBarSherlock zapewnia aplikacji pasek akcji niezależnie * od wersji Android API, na której jest uruchomiona. Zgodność paska akcji zapewnia pasek akcji tylko wtedy, gdy urządzenie, na którym uruchamiasz, ma poziom interfejsu API 3.0 lub nowszy.
* Zwróć uwagę, że jeśli urządzenie, na którym używasz, nie jest w wersji 3.0 lub nowszej, ActionBarSherlock użyje własnej niestandardowej implementacji paska akcji, a nie natywnej.
--EDYTOWAĆ--
Wygląda na to, że coś się zmieniło i tak naprawdę nie ma już różnicy między ActionBarSherlock a kompatybilnością paska akcji. Aby uzyskać szczegółowe informacje, przeczytaj poniższe komentarze.
--EDYTOWAĆ--
Po użyciu obu teraz mogę powiedzieć, że tak naprawdę wolę ActionBarSherlock od kompatybilności z Action Bar. ActionBarSherlock jest naprawdę łatwy i przyjemny w użyciu.
--EDIT-- Jak wspomniano w LOG_TAG, istnieje teraz obsługa paska akcji w Bibliotece obsługi Androida. Nie miałem jeszcze okazji go użyć, ale wyobrażam sobie, że jest to najlepszy w użyciu.
źródło
why
orazhow
do korzystania z nowego ActionBarCompat API android-developers.blogspot.in/2013/08/...ActionBarSherlock vs ActionBarCompat:
Chcę tylko umieścić kilka różnic w kodzie między ActionBarSherlock a ActionBarCompat Lib
Możemy przenieść niektóre aplikacje z ActionBarSherlock do ActionBarCompat:
kroki:
Importuj projekt AppCompat .
Wymień
SherlockFragmentActivity
sięActionBarActivity
.Wymień
SherlockFragment
sięFragment
.Zmiana
Menu
,MenuItem
igetSupportMenuInflater()
referencje. Zmodyfikuj sposób uzyskiwania widoków akcji.mSearchView = (SearchView)MenuItemCompat.getActionView(mSearchItem)
Aby uzyskać więcej informacji, zapoznaj się z tymi slajdami przez + NickButcher (Google)
Podziękowania dla źródeł: http://gmariotti.blogspot.in/2013/07/actionbarsherlock-vs-actionbarcompat.html http://antonioleiva.com/actionbarcompat-migrating-actionbarsherlock/
Nie zapomnij przeczytać tego developer.android, aby dowiedzieć się więcej o ABC!
Uwaga: ustawienie go do testów jednostkowych w taki sam sposób jak ABS nie jest niestety możliwe w przypadku biblioteki obsługi.
Wynik:
Kredyty: Gabriele Mariotti
źródło
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
i nie musi to być projekt biblioteki.Kończąc tylko to, co @Kurtis Nusbaum, na praktycznym przykładzie.
AKTUALIZACJA: jak powiedział @ rudy-s, z najnowszą biblioteką obsługi Androida (api 18), widziałem, że mają już wbudowaną obsługę paska akcji (zwaną klasą ActionBarCompat).
Zbudowałem dwie proste aplikacje, aby pokazać wizualną różnicę między ActionBarSherlock i ActionBar Compatibility. Zobacz zdjęcia porównawcze:
Teraz wygląd po naciśnięciu przycisku menu:
Jak widać, obrazy po prostu narzucają to, co zostało powiedziane. Zgodność paska akcji zapewnia pasek akcji tylko wtedy, gdy urządzenie, na którym uruchamiasz, ma poziom interfejsu API 3.0 lub nowszy. Podczas gdy Sherlock jest bardziej ogólny.
Poniżej możesz zobaczyć źródło aplikacji.
Plik XML menu jest taki sam:
Działalność w zakresie zgodności:
Działalność Sherlocka:
Wymagana była dodatkowa konfiguracja w aplikacji Sherlock:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
AKTUALIZACJA: jak powiedział @ rudy-s, z najnowszą biblioteką obsługi Androida (api 18), widziałem, że mają już wbudowaną obsługę paska akcji (zwaną klasą ActionBarCompat).
źródło
Actionbar Sherlock jest znacznie bardziej zaawansowany i ambitniejszy niż prosty projekt kompatybilności z Actionbar.
Kompatybilność paska akcji może być uważana za „próbkę” lub dobry punkt wyjścia, jeśli chcesz tylko uderzyć w pasek akcji u góry swojej aplikacji.
ActionBarSherlock opiera się na bibliotece zgodności i zapewnia (podobnie jak przykład zgodności paska akcji) pasek akcji na urządzeniach starszych niż 3.0. Ponadto ma dodatkowe funkcje, których nie ma w kodzie ActionBar Compat. Obejmuje to takie funkcje, jak między innymi
Jedyną wadą, jaką widzę w używaniu ActionbarSherlock, jest to, że zamykasz się w tej bibliotece. Jeśli z jakiegoś powodu wymrze w najbliższej przyszłości, będziesz musiał sam go utrzymywać (na przykład, jeśli nie pojawi się implementacja Jellybean). Jest to kłopotliwe (nie jest to duży problem), ponieważ wszystkie twoje fragmenty obejmują SherlockFragemnt i wszystkie twoje działania. SherlockActivity.
źródło
Cóż, implementacja @Jake idzie o wiele dalej niż to, co jest kompatybilne z Actionbar, a dokładniej Actionbar Compat to tylko podstawowy przykład tego, jak można obsługiwać wszystkie aplikacje za pomocą pseudo-actionbar dla wydań wcześniejszych niż Honeycomb (API 13). Chociaż ich celem jest ten sam pasek akcji kompatybilny z różnymi kombinacjami, mają inne podejście.
ActionbarCompat Aproach
Ta implementacja nie wykorzystuje wsparcia biblioteki Zgodność z Androidem zamiast tego utworzyć klasę bazową zwaną ActionBarActivity utworzyć pojedynczą instancję Helper ten akt jako pomocnik samej fabryce, która powraca zmierzających do wdrożenia trzech segmencie APIS, zwraca
Najciekawsza część znajduje się w ActionbarBaseHelper , ponieważ zawiera najważniejszy kod, sugeruję zrozumienie tej klasy, a otrzymasz cały przykład.
Pasek akcji Sherlock
Cóż, jest to trudne, ponieważ nie jestem autorem, może Jake mógłby to wyjaśnić dalej, ale spróbuję.
Tak jak kompatybilny Sherlock ma inną implementację, ale jedna jest dla "Compat", a druga jest natywna. Zmusza cię do rozszerzenia z SherlockActivity lub z SherlockFragmentActivity, ponieważ te dwie klasy podstawowe mają metodę wysyłania ActionBar.
To duży i złożony projekt, którego nie da się wyjaśnić w jednym poście. Zasugeruj, abyś przeszukał repozytorium Sherlocka Githuba, przyjrzyj się i jak mówi Jeff Atwood
źródło
Głęboko wierzę, że powinieneś używać go
ActionBarCompat
do wszystkich nowych projektów, które chcą obsługiwać starsze urządzenia.Migracja istniejących projektów może mieć również sens. Czytaj dalej, aby dowiedzieć się, dlaczego należy od razu przeprowadzić migrację lub użyć ActionBarCompat oraz jak migrować istniejące projekty.
Dlaczego powinieneś preferować ActionBarCompat zamiast ActionBarSherlock?
Istnieje wiele powodów, dla których powinieneś preferować ActionbarCompat zamiast ActionbarSherlock.
Przede wszystkim ten projekt jest autorstwa Google, jest częścią biblioteki wsparcia i dlatego prawdopodobnie będzie obsługiwał nowe rzeczy związane z Action Bar w tym samym czasie, gdy Google wypuszcza je z Androidem.
Innym dobrym powodem jest to, że obsługuje on
Navigation Drawer pattern
natychmiast po wyjęciu z pudełka, podczas gdy ActionBarSherlock nie. Dlatego jeśli chcesz dodać tę szufladę do istniejącego projektu / aplikacji, powinieneś przeprowadzić migrację.Ostatnie i ważne jest to, że twórca ActionBarSherlock, Jake Wharton, ogłosił na Google+, że dalszy rozwój ActionBarSherlock został zatrzymany. ActionBarSherlock 4.4 jest ostatnią wersją i może zawierać poprawki błędów - ale nie będzie żadnych nowych funkcji: Więc jeśli nowa funkcjonalność jest zawarta w pasku akcji, możesz nie nadążyć za nią z actionbarsherlock.
źródło
Może powinniśmy zaktualizować odpowiedź, ponieważ Google opublikowało oficjalne wsparcie Actionbar od API18 ?
blok poniżej pochodzi z oficjalnego bloga o tych dwóch bibliotekach:
źródło