Was ist der Unterschied zwischen ActionBarSherlock und Action Bar-Kompatibilität ?
Vor ein paar Tagen hat Google gerade die ActionBar-Kompatibilität veröffentlicht, die mich so verwirrt. Funktioniert die Kompatibilität der Aktionsleiste mit der des ActionBarSherlock und ist die Codierung identisch?
Beispiel: Wird das App-Symbol zum Navigieren nach "up" oder " ActionBar.Tab" in der Kompatibilität der Aktionsleiste unterstützt?
Antworten:
ActionBarSherlock gibt Ihrer Anwendung eine Aktionsleiste *, unabhängig davon, auf welcher Version der Android-API Ihre App ausgeführt wird. Durch die Kompatibilität der Aktionsleiste erhalten Sie die Aktionsleiste nur, wenn das Gerät, auf dem Sie ausgeführt werden, API-Version 3.0 oder höher ist.
* Beachten Sie, dass ActionBarSherlock, wenn das Gerät, auf dem Sie ausgeführt werden, nicht 3.0 oder höher ist, eine eigene benutzerdefinierte Implementierung der Aktionsleiste verwendet, keine native.
--BEARBEITEN--
Es scheint, dass sich die Dinge geändert haben und es tatsächlich keinen Unterschied mehr zwischen ActionBarSherlock und der Kompatibilität der Aktionsleiste gibt. Bitte lesen Sie die Kommentare unten für Details.
--BEARBEITEN--
Nachdem ich jetzt beide verwendet habe, kann ich sagen, dass ich ActionBarSherlock der Action Bar-Kompatibilität vorziehe. ActionBarSherlock ist wirklich einfach und schön zu bedienen.
--EDIT-- Wie bereits in LOG_TAG erwähnt, wird die Aktionsleiste in der Android-Supportbibliothek jetzt unterstützt. Ich hatte noch keine Chance, es zu benutzen, aber ich würde mir vorstellen, dass es das beste ist, um es zu benutzen.
quelle
why
undhow
um den neuen ActionBarCompat API zu verwenden, android-developers.blogspot.in/2013/08/...ActionBarSherlock vs ActionBarCompat:
Ich möchte nur ein paar Codeunterschiede zwischen ActionBarSherlock und ActionBarCompat Lib setzen
Wir können einige Apps von ActionBarSherlock auf ActionBarCompat migrieren:
Schritte:
Import AppCompat Projekt.
Ersetzen
SherlockFragmentActivity
durchActionBarActivity
.Ersetzen
SherlockFragment
durchFragment
.Ändern
Menu
,MenuItem
undgetSupportMenuInflater()
Verweise. Ändern Sie die Art und Weise, wie Sie Aktionsansichten erhalten.mSearchView = (SearchView)MenuItemCompat.getActionView(mSearchItem)
Weitere Informationen finden Sie auf diesen Folien von + NickButcher (Google).
Dank an Quellen: http://gmariotti.blogspot.in/2013/07/actionbarsherlock-vs-actionbarcompat.html http://antonioleiva.com/actionbarcompat-migrating-actionbarsherlock/
Vergessen Sie nicht, diese developer.android zu lesen , um mehr über ABC zu erfahren!
Hinweis: Das Einrichten für Unit-Tests wie ABS ist mit der Support-Bibliothek leider nicht möglich.
Ausgabe:
Credits: Gabriele Mariotti
quelle
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
und kein Bibliotheksprojekt sein muss.Vervollständigen Sie einfach das, was @Kurtis Nusbaum mit einem praktischen Beispiel.
UPDATE: Wie @ rudy-s sagte, habe ich mit der neuesten Android-Unterstützungsbibliothek (API 18) gesehen, dass sie bereits eine integrierte Unterstützung für die Aktionsleiste (ActionBarCompat-Klasse genannt) haben.
Ich habe zwei einfache Anwendungen erstellt, um den visuellen Unterschied zwischen ActionBarSherlock und ActionBar-Kompatibilität zu zeigen. Siehe die Vergleichsbilder:
Nun das Aussehen, wenn die Menütaste gedrückt wird:
Wie Sie sehen können, erzwingen die Bilder nur das, was gesagt wurde. Mit der Aktionsleisten-Kompatibilität erhalten Sie die Aktionsleiste nur, wenn das Gerät, auf dem Sie ausgeführt werden, API-Level 3.0 oder höher ist. Während Sherlock allgemeiner ist.
Unten sehen Sie die Anwendungsquelle.
Die Menü-XML-Datei ist dieselbe:
Aktivität der Kompatibilität:
Sherlocks Aktivität:
Eine zusätzliche Konfiguration war für die Sherlock-App erforderlich:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
UPDATE: Wie @ rudy-s sagte, habe ich mit der neuesten Android-Unterstützungsbibliothek (API 18) gesehen, dass sie bereits eine integrierte Unterstützung für die Aktionsleiste (ActionBarCompat-Klasse genannt) haben.
quelle
Actionbar Sherlock ist weitaus fortschrittlicher und ehrgeiziger als das einfache Actionbar-Kompatibilitätsprojekt.
Die Kompatibilität der Aktionsleiste kann als "Beispiel" oder als guter Ausgangspunkt angesehen werden, wenn Sie nur eine Aktionsleiste über Ihre App schlagen möchten.
ActionBarSherlock baut auf der Kompatibilitätsbibliothek auf und bietet Ihnen (wie das Kompatibilitätsbeispiel für die Aktionsleiste) eine Aktionsleiste auf Geräten vor 3.0. Darüber hinaus verfügt es über zusätzliche Funktionen, die im ActionBar Compat-Code nicht enthalten sind. Dies beinhaltet Funktionen wie, ist aber nicht beschränkt auf
Der einzige Nachteil, den ich bei der Verwendung von ActionbarSherlock sehe, ist, dass Sie sich an diese Bibliothek binden. Wenn es aus irgendeinem Grund in naher Zukunft aussterben wird, müssen Sie es selbst warten (zum Beispiel, wenn keine Jellybean-Implementierung erfolgt). Dies ist ein Ärger (kein großes Problem), da alle Ihre Fragmente SherlockFragemnt und alle Ihre Aktivitäten erweitern. SherlockActivity.
quelle
Die Implementierung von @Jake geht weit über die Actionbar-Kompatibilität hinaus, genauer gesagt, Actionbar Compat ist nur ein grundlegendes Beispiel dafür, wie Sie alle Anwendungen mit einer Pseudo-Actionbar für Releases vor Honeycomb (API 13) unterstützen können. Obwohl ihr Ziel dieselbe kreuzkompatible Aktionsleiste ist, haben sie einen anderen Ansatz.
ActionbarCompat-Ansatz
Diese Implementierung macht keinen Gebrauch von der Bibliothek Kompatibilität Android - Unterstützung , anstatt es eine Basisklasse erstellen genannt ActionBarActivity eine einzelne Instanz eines erstellen Helfers dieser Helfer fungieren als Fabrik selbst , dass die Renditen diferent Implementierung für die drei Segmente von APIS, es kehrt
Der interessanteste Teil ist der ActionbarBaseHelper , da er den wichtigsten Code enthält. Ich schlage vor, Sie verstehen diese Klasse und erhalten das gesamte Beispiel.
Aktionsleiste Sherlock
Nun, das ist schwierig, weil ich nicht der Autor bin, vielleicht kann Jake das weiter erklären, aber ich werde es versuchen.
Genau wie der kompatible Sherlock eine andere Implementierung vornimmt, ist einer für "Compat" und der andere für Native. Sie müssen entweder von SherlockActivity oder von SherlockFragmentActivity aus erweitert werden, da diese beiden Basisklassen über die Methode zum Versenden der ActionBar verfügen.
Dies ist ein großes und komplexes Projekt, das nicht in einem einzigen Beitrag erklärt werden kann. Schlagen Sie vor, dass Sie sich in Sherlock Github Repo umschauen und einen Blick darauf werfen, wie Jeff Atwood sagt
quelle
Ich bin der festen Überzeugung, dass Sie
ActionBarCompat
für alle neuen Projekte verwenden sollten, die ältere Geräte unterstützen möchten.Es kann auch sinnvoll sein, vorhandene Projekte zu migrieren. Lesen Sie also weiter, um zu erfahren, warum Sie ActionBarCompat sofort migrieren oder verwenden sollten und wie Sie vorhandene Projekte migrieren können.
Warum sollten Sie ActionBarCompat ActionBarSherlock vorziehen?
Es gibt viele Gründe, warum Sie ActionbarCompat ActionbarSherlock vorziehen sollten.
Zuallererst ist dieses Projekt von Google, Teil der Support-Bibliothek und wird daher wahrscheinlich neue Action Bar-bezogene Inhalte unterstützen, während Google sie mit Standard-Android veröffentlicht.
Ein weiterer guter Grund ist, dass es das
Navigation Drawer pattern
sofort einsatzbereite unterstützt, ActionBarSherlock jedoch nicht. Wenn Sie diese Schublade einem vorhandenen Projekt / einer vorhandenen App hinzufügen möchten, sollten Sie migrieren.Das letzte und wichtigste ist, dass der Schöpfer von ActionBarSherlock, Jake Wharton, auf Google+ bekannt gab, dass die Weiterentwicklung von ActionBarSherlock gestoppt wurde. ActionBarSherlock 4.4 ist die letzte Version und wird möglicherweise Fehlerbehebungen erhalten - es gibt jedoch keine neuen Funktionen: Wenn also neue Funktionen in der Aktionsleiste enthalten sind, können Sie mit actionbarsherlock möglicherweise nicht mithalten.
quelle
Vielleicht sollten wir die Antwort aktualisieren, weil Google die offizielle Actionbar-Unterstützung seit API18 veröffentlicht hat ?
Der folgende Block stammt aus einem offiziellen Blog über diese beiden Bibliotheken:
quelle