Różnica między ActionBarSherlock a kompatybilnością ActionBar
Jaka jest różnica między ActionBarSherlock a Zgodność paska akcji
Kilka dni temu Google wypuściło ActionBar Compatibility, który sprawia, że jestem tak zdezorientowany. Czy zgodność Z Paskiem akcji działa tak samo jak ActionBarSherlock i czy kodowanie jest takie samo?
Przykład: czy ikona aplikacji do nawigacji " up " lub ActionBar.Karta obsługiwana w pasku akcji ?
7 answers
ActionBarSherlock nadaje aplikacji pasek akcji niezależnie* od wersji interfejsu API Androida, na której aplikacja jest uruchamiana. Zgodność z paskiem akcji zapewnia pasek akcji tylko wtedy, gdy urządzenie, na którym pracujesz, ma poziom API 3.0 lub wyższy.
*zauważ, że jeśli urządzenie, na którym pracujesz, nie ma wersji 3.0 lub wyższej, ActionBarSherlock użyje własnej, niestandardowej implementacji paska akcji, a nie natywnej.
-- EDIT--
Wygląda na to, że rzeczy się zmieniły i w rzeczywistości nie ma już różnicy między ActionBarSherlock a zgodnością z paskiem akcji. Przeczytaj poniższe komentarze, aby uzyskać szczegółowe informacje.
-- EDIT--
Po użyciu obu obecnie mogę powiedzieć, że wolę ActionBarSherlock niż zgodność Z Paskiem akcji. ActionBarSherlock jest naprawdę łatwy i przyjemny w użyciu.
-- edytuj-- Jak wspomniano w LOG_TAG, w Bibliotece wsparcia dla Androida jest teraz wsparcie dla paska akcji. Nie miałem jeszcze okazji go użyć, ale chciałbym wyobraź sobie, że jest najlepszy w użyciu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-26 10:04:48
ActionBarSherlock vs ActionBarCompat:
Chcę tylko umieścić kilka różnic w kodzie pomiędzy ActionBarSherlock a ActionBarCompat Lib
Możemy przenieść niektóre aplikacje z ActionBarSherlock do ActionBarCompat:
Kroki:
Import AppCompat projekt.
Zastąp
SherlockFragmentActivity
ZActionBarActivity
.Zastąp
SherlockFragment
ZFragment
.-
Zmień
Menu
,MenuItem
orazgetSupportMenuInflater()
referencje. Zmodyfikuj sposób uzyskiwania widoków akcji.mSearchView = (SearchView)MenuItemCompat.getActionView(mSearchItem)
- zmodyfikuj swoje motywy i Style .
Aby uzyskać więcej informacji, zapoznaj się z tym slajdami przez + NickButcher (Google)
Dzięki źródłom: http://gmariotti.blogspot.in/2013/07/actionbarsherlock-vs-actionbarcompat.html http://antonioleiva.com/actionbarcompat-migrating-actionbarsherlock/
Nie zapomnij przeczytać tego dewelopera.android więcej o ABC!
Uwaga: ustawienie go do testów jednostkowych w taki sam sposób jak ABS nie jest niestety możliwe dzięki bibliotece wsparcia.
Wyjście:
Napisy: Gabriele Mariotti
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-03 06:50:54
Właśnie uzupełniam to, co @Kurtis Nusbaum z praktycznym przykładem.
UPDATE: jak powiedział @ rudy - s, z najnowszą biblioteką wsparcia dla Androida (api 18), widziałem, że mają już wbudowaną obsługę actionbar (o nazwie Klasa ActionBarCompat).
Zbudowałem dwie proste aplikacje, aby pokazać wizualną różnicę między ActionBarSherlock i kompatybilnością ActionBar. Zobacz zdjęcia porównawcze:
Teraz wygląd, gdy przycisk menu jest wciśnięty:
Jak widzisz, obrazy tylko wymuszają to, co zostało powiedziane. zgodność Z Paskiem akcji zapewnia pasek akcji tylko wtedy, gdy urządzenie, na którym pracujesz, ma poziom API 3.0 lub wyższy. Podczas gdy Sherlock jest bardziej ogólny.
Poniżej możesz zobaczyć źródło aplikacji.
Plik XML menu jest taki sam:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_1"
android:orderInCategory="100"
android:showAsAction="always"
android:title="@string/action1"/>
<item
android:id="@+id/action_2"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="@string/action2"/>
<item
android:id="@+id/action_3"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="@string/action3"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
</menu>
Aktywność kompatybilności:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Aktywność Sherlocka:
public class MainActivity extends SherlockActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
getSupportMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
}
Dodatkowy konfiguracja była konieczna w aplikacji sherlock:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
UPDATE: jak powiedział @ rudy - s, z najnowszą biblioteką wsparcia dla Androida (api 18), widziałem, że mają już wbudowane wsparcie dla actionbar (o nazwie Klasa ActionBarCompat).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-30 13:46:49
Actionbar Sherlock jest znacznie bardziej zaawansowany i ambitniejszy niż prosty projekt zgodności Actionbar.
Zgodność Z Paskiem akcji można uznać za" próbkę " lub dobry punkt wyjścia, jeśli chcesz tylko uderzyć pasek akcji na górze aplikacji.
ActionBarSherlock opiera się na bibliotece zgodności i udostępnia (podobnie jak przykład zgodności paska akcji) pasek akcji na urządzeniach przed wersją 3.0. Dodatkowo posiada dodatkowe funkcje nie występujące w pasku czynności Kod kompat. Obejmuje to funkcje takie jak, ale nie ograniczając się do
- setNavigationMode (dla tabulatorów i spinnerów na pasku akcji)
- Fragmenty Dialogów
- kontekstowy pasek akcji (CAB) menu, które przejmuje pasek akcji, używane na przykład dla multi select (http://developer.android.com/design/patterns/new-4-0.html) jest to funkcja ICS (!) W tym celu do ActionbarSherlock musiała zostać wprowadzona Implementacja klasy ActionMode (wprowadzona w API na poziomie 11) biblioteka
- implementacje Fragment i FragmentActivity - ponieważ fragmenty mogą zaimplementować menu onCreateOptions, musimy upewnić się, że SupportMenuInflater jest używany.
- dwa tematy niezbyt podobne do Holo.Dark i Holo.Światło (Theme.Sherlock, Temat.Sherlock.Light)
- funkcja ICS "split action bar"
Jedynym minusem, jaki widzę w użyciu ActionbarSherlock jest to, że zamykasz się w tej bibliotece. Jeśli z jakiegoś powodu wygaśnie w niedalekiej przyszłości, będziesz musiał go utrzymywać samodzielnie(na przykład, jeśli nie pojawi się Żadna implementacja Jellybean). Jest to kłopotliwe (nie ogromny problem), ponieważ wszystkie fragmenty rozszerza SherlockFragemnt i wszystkie swoje działania. Sherlock.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-24 08:14:04
Well @Jake implementacja idzie znacznie dalej niż to, co Actionbar compat, mówiąc dokładniej ActionBar Compat jest tylko podstawowym przykładem na to, jak można obsługiwać wszystkie aplikacje za pomocą pseudo-actionbar dla wydań wcześniejszych z Honeycomb (API 13). Chociaż ich celem jest ten sam krzyżowy Pasek działania, mają różne podejście.
ActionbarCompat Aproach
Ta implementacja nie korzysta z kompatybilnej biblioteki wsparcia dla Androida, zamiast tego tworzy bazę Klasa o nazwie ActionBarActivity tworzy pojedynczą instancję Helper Ten helper działa jak sama fabryka, która zwraca różne implementacje dla trzech segmentów API, zwraca
- ActionbarBaseHelper : przed plastrem miodu.
- ActionBarHoneyComb : for HoneyComb
- ActionBarHelperICS : dla urządzeń bazowych ICS.
Najciekawsza część znajduje się w ActionbarBaseHelper , ponieważ ma najważniejszy kod, proponuję zrozumieć tę klasę, a otrzymasz cały przykład.
Action Bar Sherlock
Cóż to jest trudne na początku, ponieważ, nie jestem autorem może Jake może wyjaśnić to dalej, ale spróbuję.
Podobnie jak implementacja compat jest różna, ale jedna jest dla" Compat", a druga jest natywna. Zmusza cię do rozszerzenia albo z Sherlockfragmentactivity albo z SherlockFragmentActivity, ponieważ te dwa klasy bazowe mają metodę wysyłania paska akcji.
Jest to duży i złożony projekt, którego nie da się wyjaśnić w jednym poście. Zasugeruj, aby kopać wokół Sherlock Github repo chwyć spojrzenie i jak Jeff Atwood mówi
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-15 22:15:24
Mocno wierzę, że należy używać
ActionBarCompat
dla wszystkich nowych projekty, które chcą obsługiwać starsze urządzenia.Może też mieć sens migracja istniejących projektów. Więc czytaj dalej dowiedz się, dlaczego powinieneś natychmiast migrować lub korzystać z ActionBarCompat i jak przenieść istniejące projekty.
Dlaczego wolisz ActionBarCompat niż ActionBarSherlock?
Istnieje wiele powodów, dla których powinieneś preferować ActionbarCompat niż ActionbarSherlock.
Przede wszystkim ten projekt jest przez Google, jest częścią wsparcia Biblioteki, a tym samym prawdopodobnie będzie obsługiwać nowe rzeczy związane z paskiem akcji w W Tym Samym Czasie Google wypuszcza je z zapasowym Androidem.
Innym dobrym powodem jest to, że obsługuje
Navigation Drawer pattern
zaraz po wyjęciu z pudełka, podczas gdy ActionBarSherlock nie. Tak więc jeśli chcesz dodać tę szufladę do istniejącego projektu / aplikacji, powinieneś migrować.Ostatnim i ważnym jest to, że twórca ActionBarSherlock, Jake Wharton, ogłosił na Google+, że dalszy rozwój ActionBarSherlock został zatrzymany. ActionBarSherlock 4.4 jest ostatnia wersja i może dostać poprawki błędów-ale nie będzie żadnych nowych cechy: więc jeśli nowa funkcjonalność jest dołączona do actionbar, możesz nie nadążaj za tym z actionbarsherlock.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-07 08:50:12
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:
Jeśli używasz rozwiązania innej firmy (takiego jak ActionBarSherlock), istnieje kilka powodów, aby rozważyć aktualizację:]}
- mogą być aktualizowane w miarę rozwoju interfejsu API paska akcji.
- zintegrowana obsługa nawigacji przodków.
- użycie menu framework i Zajęcia MenuItem.
- kontynuuj używanie klasy Fragmentowej biblioteki wsparcia.
- Zintegrowane wsparcie dla ActionBarDrawerToggle do użytku z szuflady.
- Backport PopupMenu.
ActionBarSherlock jest solidną i dobrze przetestowaną biblioteką, która od dawna bardzo dobrze służy programistom. Jeśli już go używasz i obecnie nie potrzebujesz żadnego z powyższych, nie ma potrzeby migracji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-27 08:40:30