155 votes

Différence entre ActionBarSherlock et ActionBar compatibilité

Quelle est la différence entre ActionBarSherlock et de la Barre d'Action de Compatibilité

Fews jours, Google vient de sortir la ActionBar de Compatibilité qui me font tellement confus. C'est que la Barre d'Action de Compatibilité des travaux de même que la ActionBarSherlock et est le codage de même?

Exemple : icône de l'application pour naviguer vers le "haut" ou ActionBar.Onglet pris en charge dans la Barre d'Action de Compatibilité ?

113voto

LOG_TAG Points 4506

ActionBarSherlock vs ActionBarCompat:

Je veux Juste mettre quelques code de la différence entre ActionBarSherlock vs ActionBarCompat Lib

ActionBarSherlock vs ActionBarCompat **strong text**

Nous pouvons migrer certaines applications de ActionBarSherlock à ActionBarCompat:

étapes:

  1. Importation AppCompat projet.

  2. Remplacer SherlockFragmentActivity avec ActionBarActivity.

  3. Remplacer SherlockFragment avec Fragment.

  4. Variation Menu, MenuItem et getSupportMenuInflater()références. Modifier la façon dont vous obtenez l'Action de Vues.

    mSearchView = (SearchView)MenuItemCompat.getActionView(mSearchItem)

  5. Modifier vos Thèmes et de Styles.

Pour plus d'informations, veuillez consulter cet de diapositives par +NickButcher (Google)

enter image description here

Grâce à des Sources: http://gmariotti.blogspot.in/2013/07/actionbarsherlock-vs-actionbarcompat.html http://antonioleiva.com/actionbarcompat-migrating-actionbarsherlock/

N'oubliez pas de lire ce développeur.android pour en savoir plus sur ABC!

Remarque: la mise en place de tests unitaires de la même façon que l'ABS n'est malheureusement pas possible avec le soutien de la bibliothèque.

Sortie:

enter image description here

Crédits: Gabriele Mariotti

61voto

Kurtis Nusbaum Points 16073

ActionBarSherlock permet à votre application d'une barre d'action, indépendamment* de quelle version de l'API android votre application est en cours d'exécution sur. Barre d'Action de Compatibilité vous donne la barre d'action uniquement si le périphérique que vous êtes en cours d'exécution de l'API de niveau 3.0 ou supérieur.

*Notez que si l'appareil que vous utilisez n'est pas 3.0 ou supérieur, ActionBarSherlock va utiliser sa propre mise en œuvre de la barre d'action, pas un natif.

--EDIT--

Il apparaît que les choses ont changé et il n'y a effectivement pas de différence entre ActionBarSherlock et la Barre d'Action de Compatibilité plus. Merci de lire les commentaires ci-dessous pour plus de détails.

--EDIT--

Après avoir utilisé les deux, je peux vous dire que je préfère ActionBarSherlock à l'Action de la Barre de Compatibilité. ActionBarSherlock est vraiment facile et agréable à utiliser.

--EDIT-- Comme LOG_TAG mentionné, il existe désormais un support pour la barre d'action dans l'Android Support Library. Je n'ai pas eu la chance de l'utiliser encore, mais j'imagine que c'est le meilleur à utiliser.

41voto

Bruno Mateus Points 1279

Juste de terminer ce @Kurtis Nusbaum avec un exemple pratique.

Mise à JOUR: @rudy-s, avec le plus récent android bibliothèque de prise en charge de l'api (18), j'ai vu qu'ils ont déjà un support intégré pour le contrôle actionbar (appelé ActionBarCompat classe).

J'ai construit deux applications simples pour montrer la différence visuelle entre ActionBarSherlock et ActionBar de Compatibilité. Voir les comparaisons, les images:

App using compatibility library

App using sherlock library

Maintenant l'apparence lorsque la touche menu est enfoncée:

App using compatibility on menu pressed

App using sherlock on menu pressed


Comme vous pouvez le voir, les images juste d'appliquer ce qui a été dit. Barre d'Action de Compatibilité vous donne la barre d'action uniquement si le périphérique que vous êtes en cours d'exécution de l'API de niveau 3.0 ou supérieur. Alors que Sherlock est plus général.

Ci-dessous vous pouvez voir la source de l'application.

Le menu fichier xml est le même:

<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>

La compatibilité de l'activité:

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;
     }
}

Sherlock activité:

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);
    }

}

Un supplément de config était nécessaire sur sherlock app:

<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">

Mise à JOUR: @rudy-s, avec le plus récent android bibliothèque de prise en charge de l'api (18), j'ai vu qu'ils ont déjà un support intégré pour le contrôle actionbar (appelé ActionBarCompat classe).

39voto

Glenn Bech Points 2009

Actionbar Sherlock est beaucoup plus avancé et beaucoup plus ambitieux que la simple Actionbar compatibilité du projet.

La barre d'Action de compatibilité peut être considéré comme un "échantillon" ou un bon point de départ si vous souhaitez uniquement pour frapper une Barre d'Action en haut de votre application.

ActionBarSherlock s'appuie sur la bibliothèque de compatibilité, et vous donne (comme la barre d'action de la compatibilité de l'échantillon) une Barre d'Action sur la pré-3.0 périphériques. En outre, il a des fonctionnalités supplémentaires n'est pas présent dans l'ActionBar Compat code. Cela inclut des fonctionnalités telles que, mais non limité à

  • setNavigationMode (pour les Onglets et les filateurs dans la barre d'action)
  • Dialogue Fragments
  • Contextuel de la Barre d'Action (ACR) un menu qui prend le relais de la barre d'action, utilisés par exemple pour la sélection multiple (http://developer.android.com/design/patterns/new-4-0.html C'est une fonctionnalité ICS (!) Pour cela, une mise en œuvre de la ActionMode classe (présenté dans l'API de niveau 11) a dû être introduit dans le ActionbarSherlock bibliothèque
  • Fragment et FragmentActivity implémentations - parce que les fragments peuvent mettre en œuvre les onCreateOptions menu, nous devons nous assurer que le SupportMenuInflater est utilisé.
  • Deux thèmes pas très différent de Holo.Sombre et Holo.La Lumière (Thème.Sherlock, Thème.Sherlock.De la lumière)
  • L'ICS fonction "split barre d'action"

Le seul inconvénient que je vois à l'aide de ActionbarSherlock est que vous bloquez vous-même dans à la bibliothèque. Si, pour une raison quelconque, il va mourir dans un proche avenir, vous devrez l'entretenir vous-même (par exemple si aucune Jellybean mise en œuvre vient le long). C'est un souci (pas un gros problème) depuis tous vos fragments s'étend SherlockFragemnt et toutes vos Activités. SherlockActivity.

26voto

Necronet Points 3212

Bien @Jake mise en œuvre va bien au-delà de ce que l'Actionbar compat, pour être plus précis Actionbar Compat est juste un exemple de base sur comment pouvez-vous soutenir tous les aplication avec un pseudo-actionbar pour les versions antérieures à partir de Nid d'abeilles de l'API (13). Bien que leur cible est la même croix compatible actionbar, ils ont diferent approche.

ActionbarCompat L'Approche

Cette mise en œuvre ne font pas usage de la Compatibilité Android bibliothèque de prise en charge au lieu de créer une classe de base appelée ActionBarActivity créer une instance unique d'un Helper de ce helper loi de l'usine en elle-même qui renvoie diferent mise en œuvre pour les trois segment de l'API, il retourne

La partie la plus intéressante est dans le ActionbarBaseHelper, parce que c'est le code le plus important, je vous suggère de comprendre cette classe et vous obtiendrez l'ensemble de l'exemple.

Barre D'Action Sherlock

Eh bien, c'est difficile firstable parce que, je ne suis pas l'auteur peut-être que Jake peut s'expliquer davantage, mais je vais essayer.

Tout comme la compat Sherlock faire diferent mise en œuvre, mais on est pour "Compat" et l'autre est originaire. Il vous force à se prolonge, soit à partir de SherlockActivity ou de SherlockFragmentActivity, car ces deux classes de base ont la méthode d'envoi de l'ActionBar.

C'est un projet aussi vaste et complexe, qui ne peut pas être expliqué dans un post unique. Vous suggère de creuser autour de Sherlock dépôt Github prenez un coup d'oeil et comme Jeff Atwood dit

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X