Quelle est la différence entre ActionBarSherlock et la compatibilité de la barre d'action
Il y a quelques jours, Google vient de publier la compatibilité ActionBar qui me rend si confus. Est-ce que la compatibilité de la barre d'action fonctionne de la même manière que l'ActionBarSherlock et le codage est-il le même?
Exemple: l' icône de l'application pour naviguer «vers le haut» ou ActionBar.Tab est-il pris en charge dans la compatibilité de la barre d'action?
Réponses:
ActionBarSherlock donne à votre application une barre d'action quelle que soit * la version de l'API Android sur laquelle votre application est exécutée. La compatibilité de la barre d'action vous donne la barre d'action uniquement si l'appareil sur lequel vous exécutez est de niveau API 3.0 ou supérieur.
* Notez que si l'appareil sur lequel vous exécutez n'est pas version 3.0 ou supérieure, ActionBarSherlock utilisera sa propre implémentation personnalisée de la barre d'actions, pas une implémentation native.
--ÉDITER--
Il semble que les choses ont changé et qu'il n'y a plus de différence entre ActionBarSherlock et la compatibilité de la barre d'action. Veuillez lire les commentaires ci-dessous pour plus de détails.
--ÉDITER--
Après avoir utilisé les deux maintenant, je peux dire que je préfère en fait ActionBarSherlock à la compatibilité Action Bar. ActionBarSherlock est vraiment facile et agréable à utiliser.
--EDIT-- Comme mentionné par LOG_TAG, la barre d'action est désormais prise en charge dans la bibliothèque de support Android. Je n'ai pas encore eu l'occasion de l'utiliser, mais j'imagine que c'est la meilleure à utiliser.
la source
why
et commenthow
utiliser la nouvelle API ActionBarCompat, android-developers.blogspot.in/2013/08/…ActionBarSherlock vs ActionBarCompat:
Je veux juste mettre quelques différences de code entre ActionBarSherlock et ActionBarCompat Lib
Nous pouvons migrer certaines applications d'ActionBarSherlock vers ActionBarCompat:
pas:
Importer projet AppCompat .
Remplacer
SherlockFragmentActivity
parActionBarActivity
.Remplacer
SherlockFragment
parFragment
.Changement
Menu
,MenuItem
et lesgetSupportMenuInflater()
références. Modifiez la façon dont vous obtenez les vues d'action.mSearchView = (SearchView)MenuItemCompat.getActionView(mSearchItem)
Pour plus d'informations, veuillez consulter ces diapositives de + NickButcher (Google)
Merci aux sources: http://gmariotti.blogspot.in/2013/07/actionbarsherlock-vs-actionbarcompat.html http://antonioleiva.com/actionbarcompat-migrating-actionbarsherlock/
N'oubliez pas de lire ceci developer.android pour en savoir plus sur ABC!
Remarque: la configuration pour les tests unitaires de la même manière que l'ABS n'est malheureusement pas possible avec la bibliothèque de support.
Production:
Crédits: Gabriele Mariotti
la source
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
et n'a pas besoin d'être un projet de bibliothèque.Je viens de compléter ce que @Kurtis Nusbaum avec un exemple pratique.
MISE À JOUR: comme @ rudy-s l'a dit, avec la dernière bibliothèque de support Android (api 18), j'ai vu qu'ils avaient déjà un support intégré pour la barre d'action (appelée classe ActionBarCompat).
J'ai créé deux applications simples pour montrer la différence visuelle entre ActionBarSherlock et ActionBar Compatibility. Voir les images comparatives:
Maintenant, l'apparence lorsque le bouton de menu est enfoncé:
Comme vous pouvez le voir, les images ne font que renforcer ce qui a été dit. La compatibilité de la barre d'action vous donne la barre d'action uniquement si l'appareil sur lequel vous exécutez est de niveau API 3.0 ou supérieur. Alors que Sherlock est plus général.
Ci-dessous, vous pouvez voir la source de l'application.
Le fichier xml du menu est le même:
Activité de compatibilité:
Activité de Sherlock:
Une configuration supplémentaire était nécessaire sur l'application sherlock:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
MISE À JOUR: comme @ rudy-s l'a dit, avec la dernière bibliothèque de support Android (api 18), j'ai vu qu'ils avaient déjà un support intégré pour la barre d'action (appelée classe ActionBarCompat).
la source
Actionbar Sherlock est beaucoup plus avancé et beaucoup plus ambitieux que le simple projet de compatibilité Actionbar.
La compatibilité de la barre d'action peut être considérée comme un «exemple» ou un bon point de départ si vous souhaitez seulement claquer une barre d'action au-dessus de votre application.
ActionBarSherlock s'appuie sur la bibliothèque de compatibilité et vous donne (comme l'exemple de compatibilité de la barre d'action) une barre d'action sur les appareils antérieurs à 3.0. En outre, il possède des fonctionnalités supplémentaires non présentes dans le code de compatibilité ActionBar. Cela inclut des fonctionnalités telles que, mais sans s'y limiter
Le seul inconvénient que je vois en utilisant ActionbarSherlock est que vous vous enfermez dans cette bibliothèque. Si, pour une raison quelconque, il s'éteint dans un proche avenir, vous devrez le maintenir vous-même (par exemple si aucune implémentation de Jellybean n'est disponible). C'est un problème (pas un gros problème) puisque tous vos fragments étendent SherlockFragemnt et toutes vos activités. SherlockActivity.
la source
Eh bien, l'implémentation de @Jake va bien plus loin que la compatibilité de la barre d'action, pour être plus précis, la compatibilité de la barre d'action n'est qu'un exemple de base sur la façon dont vous pouvez prendre en charge toutes les applications avec une pseudo-barre d'action pour les versions antérieures de Honeycomb (API 13). Bien que leur cible soit la même barre d'action compatible croisée, ils ont une approche différente.
ActionbarCompat Aproach
Cette implémentation n'utilise pas la bibliothèque de support de compatibilité Android à la place, elle crée une classe de base appelée ActionBarActivity crée une seule instance d'un Helper cet assistant agit comme une fabrique elle-même qui renvoie une implémentation différente pour les trois segments d'APIS, il retourne
La partie la plus intéressante est dans le ActionbarBaseHelper , car il a le code le plus important, je vous suggère de comprendre cette classe et vous obtiendrez l'exemple complet.
Barre d'action Sherlock
Eh bien, c'est délicat d'abord parce que, je ne suis pas l'auteur, peut-être que Jake peut l'expliquer davantage, mais je vais essayer.
Tout comme le compat Sherlock fait des implémentations différentes mais l'une est pour "Compat" et l'autre est native. Cela vous oblige à étendre soit de SherlockActivity, soit de SherlockFragmentActivity, car ces deux classes de base ont la méthode pour distribuer l'ActionBar.
Il s'agit d'un projet vaste et complexe, qui ne peut être expliqué dans un seul article. Vous suggère creusez Sherlock Github repo saisir un regard et comme Jeff Atwood dit
la source
Je crois fermement que vous devriez l'utiliser
ActionBarCompat
pour tous les nouveaux projets qui souhaitent prendre en charge des appareils plus anciens.Il peut également être judicieux de migrer des projets existants. Alors lisez la suite pour savoir pourquoi vous devez migrer ou utiliser ActionBarCompat immédiatement et comment migrer des projets existants.
Pourquoi devriez-vous préférer ActionBarCompat à ActionBarSherlock?
Il existe de nombreuses raisons pour lesquelles vous devriez préférer ActionbarCompat à ActionbarSherlock.
Tout d'abord, ce projet est de Google, fait partie de la bibliothèque de support et prendra donc probablement en charge de nouveaux éléments liés à la barre d'action en même temps que Google les publie avec Android.
Une autre bonne raison est qu'il prend en charge le
Navigation Drawer pattern
tout de suite, contrairement à ActionBarSherlock. Ainsi, si vous souhaitez ajouter ce tiroir à un projet / application existant, vous devez migrer.Le dernier et important est que le créateur d'ActionBarSherlock, Jake Wharton, a annoncé sur Google+ que le développement ultérieur d'ActionBarSherlock a été arrêté. ActionBarSherlock 4.4 est la dernière version et pourrait obtenir des corrections de bogues - mais il n'y aura pas de nouvelles fonctionnalités: Donc, si une nouvelle fonctionnalité est incluse dans la barre d'action, vous ne pouvez pas la suivre avec actionbarsherlock.
la source
Peut-être devrions-nous mettre à jour la réponse car Google a publié le support officiel de la barre d'action depuis l' API18 ?
Le bloc ci-dessous provient du blog officiel sur ces deux bibliothèques:
la source