Differenza tra ActionBarSherlock e Compatibilità ActionBar

Qual è la differenza tra ActionBarSherlock e Compatibilità Barra Azione?

Fews giorni fa Google ha appena rilasciato la Compatibilità ActionBar che mi rende così confusa. È che la compatibilità della barra d'azione funziona come l'ActionBarSherlock ed è la stessa codifica?

  • Quale versione di Apache HTTP Client è in bundle in Android 1.6?
  • Android arresta il servizio quando esci dall'app
  • Deselect un file zip su scheda SD in applicazione Android
  • Crea Android con Superuser
  • Come posso assicurare la compatibilità tra i livelli di API Android per RotationVector?
  • onCreate essere chiamato in attività A in navigazione in alto
  • Esempio: l' icona app per navigare "in su" o ActionBar.Tab supportta in Compatibilità Barra Azione?

    7 Solutions collect form web for “Differenza tra ActionBarSherlock e Compatibilità ActionBar”

    ActionBarSherlock dà all'applicazione una barra d'azione a prescindere * di quale versione dell'applicazione android API la tua applicazione è in esecuzione. La Compatibilità Barra Azione ti dà la barra di azione solo se il dispositivo in uso è API 3.0 o superiore.

    * Si noti che se il dispositivo in esecuzione non è 3,0 o superiore, ActionBarSherlock utilizza la propria implementazione personalizzata della barra di azione, non quella nativa.

    –EDIT–

    Sembra che le cose sono cambiate e che in realtà non esista alcuna differenza tra ActionBarSherlock e la Compatibilità Barra Azione. Si prega di leggere i commenti qui sotto per i dettagli.

    –EDIT–

    Dopo aver usato entrambi adesso, posso dire che preferisco ActionBarSherlock per Compatibilità Barra Azione. ActionBarSherlock è veramente facile e piacevole da usare.

    –EDIT– Come indicato da LOG_TAG, ora è disponibile il supporto per la barra delle azioni nella libreria di supporto Android. Non ho avuto la possibilità di usarlo ancora, ma immagino che sia il migliore da usare.

    ActionBarSherlock vs ActionBarCompat:

    Voglio solo mettere poche differenze di codice tra ActionBarSherlock vs ActionBarCompat Lib

    ActionBarSherlock vs ActionBarCompat ** testo forte **

    Possiamo eseguire la migrazione di alcune applicazioni da ActionBarSherlock a ActionBarCompat:

    passaggi:

    1. Import progetto AppCompat .

    2. Sostituisci SherlockFragmentActivity con ActionBarActivity .

    3. Sostituisci SherlockFragment con Fragment .

    4. Cambia Menu , MenuItem e getSupportMenuInflater() . Modifica il modo in cui vengono visualizzate le visualizzazioni di azione.

      mSearchView = (SearchView)MenuItemCompat.getActionView(mSearchItem)

    5. Modifica i tuoi themes e stili .

    Per ulteriori informazioni, consulta le diapositive da + NickButcher (Google)

    immettere qui la descrizione dell'immagine

    Grazie alle fonti: http://gmariotti.blogspot.in/2013/07/actionbarsherlock-vs-actionbarcompat.html http://antonioleiva.com/actionbarcompat-migrating-actionbarsherlock/

    Non dimenticare di leggere questo developer.android per ulteriori informazioni su ABC!

    Nota: l'impostazione per test di unità come l'ABS non è purtroppo ansible con la libreria di supporto.

    Produzione:

    immettere qui la descrizione dell'immagine

    Crediti: Gabriele Mariotti

    Basta completare ciò che @Kurtis Nusbaum con un esempio pratico.

    UPDATE: come ha detto @ rudy-s, con la più recente libreria di supporto Android (api 18), ho visto che hanno già il supporto integrato per la barra di azione (chiamata class ActionBarCompat).

    Ho costruito due semplici applicazioni per mostrare la differenza visiva tra ActionBarSherlock e Compatibilità ActionBar. Vedi le immagini comparative:

    App utilizzando la libreria di compatibilità

    Applicazione tramite libreria sherlock

    Ora l'aspetto quando si preme il button di menu:

    App utilizzando la compatibilità nel menu premuto

    Applicazione tramite sherlock sul menu premuto


    Come potete vedere, le immagini impongono solo ciò che è stato detto. La Compatibilità Barra Azione ti dà la barra di azione solo se il dispositivo in uso è API 3.0 o superiore. Mentre Sherlock è più generale.

    Di seguito puoi vedere l'origine dell'applicazione.

    Il file xml di menu è lo stesso:

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

    Attività di compatibilità:

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

    Attività di Sherlock:

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

    Una configuration aggiuntiva era necessaria per l'applicazione sherlock:

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

    UPDATE: come ha detto @ rudy-s, con la più recente libreria di supporto Android (api 18), ho visto che hanno già il supporto integrato per la barra di azione (chiamata class ActionBarCompat).

    Actionbar Sherlock è molto più avanzato e molto più ambizioso del semplice progetto di compatibilità Actionbar.

    La compatibilità della barra d'azione può essere considerata un "esempio" o un buon punto di partenza se si desidera solo sbarcare una barra d'azione in cima alla tua app.

    ActionBarSherlock si basa sulla libreria di compatibilità e ti dà (come il campione di compatibilità della barra delle azioni) una barra di azione sui dispositivi pre-3.0. Inoltre ha funzionalità extra non presenti nel codice ActionBar Compat. Ciò include funzionalità come, ma non limitate a

    • setNavigationMode (per tabs e spinner nella barra degli strumenti)
    • Dialog Fragments
    • Barra di azione contestuale (CAB) un menu che riprende la barra degli strumenti, ad esempio per la selezione multipla (http://developer.android.com/design/patterns/new-4-0.html) Questa è una funzionalità ICS ( !) Per questo, un'iniziativa della class ActionMode (introdotta nel livello API 11) whereva essere introdotta nella libreria ActionbarSherlock
    • Implementazioni di frammento e frammentazione dell'Activity – poiché i frammenti possono implementare il menu onCreateOptions, dobbiamo verificare che sia utilizzato il SupportMenuInflater.
    • Due themes non molto diversi da Holo.Dark e Holo.Light (Theme.Sherlock, Theme.Sherlock.Light)
    • La function ICS "barra di azione split"

    L'unico lato negativo che vedo nell'uso di ActionbarSherlock è che si blocca in quella libreria. Se per qualche motivo perderà nel prossimo futuro, dovrai mantenerla stessa (per esempio se non viene fornita l'implementazione di Jellybean). Questo è un problema (non un problema enorme) in quanto tutti i tuoi frammenti estendono SherlockFragemnt e tutte le tue attività. SherlockActivity.

    L'implementazione Well @Jake va oltre il comportmento di Actionbar, per essere più precisi Actionbar Compat è solo un esempio di base su come è ansible supportre tutte le applicazioni con una barra pseudo-azione per le versioni prima di Honeycomb (API 13). Anche se il loro objective è la stessa barra di azione cross-compatibile, hanno un approccio diverso.

    ActionbarCompat Aproach

    Questa implementazione non utilizza la libreria di supporto di compatibilità di Android ma crea una class di base chiamata ActionBarActivity crea una singola istanza di un helper che questo helper agisce come fabbrica che restituisce un'implementazione differente per i tre segmenti di APIS, restituisce

    • ActionbarBaseHelper : per prima di HoneyComb.
    • ActionBarHoneyComb : per HoneyComb
    • ActionBarHelperICS : per i dispositivi base ICS.

    La parte più interessante è nell'ActionbarBaseHelper , perché ha il codice più importnte, ti suggerisco di capire questa class e avrai l'integer esempio.

    Barra d'azione Sherlock

    Beh, questo è difficile perchè non sono l'autore, forse Jake può spiegare ulteriormente questo problema, ma ti farò una prova.

    Proprio come il compatto Sherlock realizza un'implementazione differente, ma uno è per "Compat" e l'altro è Nativo. Ti costringe a estendersi sia da SherlockActivity che da SherlockFragmentActivity, poiché queste due classi di base dispongono del metodo per spedire l'ActionBar.

    Questo è un progetto di grande e complesso, che non può essere spiegato in un unico post. Suggerisci di scavare intorno Sherlock Github repo afferrare un look e come Jeff Atwood dice

    immettere qui la descrizione dell'immagine

    • Credo fortemente che si dovrebbe utilizzare ActionBarCompat per tutti i nuovi progetti che desiderano supportre i dispositivi più vecchi.

    • Può anche avere senso spostare progetti esistenti. Quindi leggere per scoprire perché dovresti migrare o utilizzare ActionBarCompat subito e come migrare i progetti esistenti.

    Perché preferisci ActionBarCompat su ActionBarSherlock?

    Ci sono molti motivi per cui si dovrebbe preferire ActionbarCompat su ActionbarSherlock.

    1. Prima di tutto questo progetto è da parte di Google, fa parte della Biblioteca di Supporto e quindi probabilmente supporterà la roba relativa a New Action Bar allo stesso tempo che Google li rilascerà con Android di riserva.

    2. Un'altra buona ragione è che support il Navigation Drawer pattern appena fuori dalla scatola, mentre ActionBarSherlock non lo fa. Pertanto, se si desidera aggiungere questo cassetto a un progetto / app esistente, è necessario migrare.

    3. L'ultimo e importnte è che il creatore di ActionBarSherlock, Jake Wharton, ha annunciato su Google+ che l'ulteriore sviluppo di ActionBarSherlock è stato interrotto. ActionBarSherlock 4.4 è l'ultima versione e potrebbe avere correzioni di bug – ma non ci saranno nuove funzionalità: quindi se nuove funzionalità sono incluse nella barra degli strumenti, non è ansible continuare ad eseguire il process con actionbarsherlock.

    Forse dovremmo aggiornare la risposta perché Google ha pubblicato il supporto ufficiale Actionbar sin dall' API18 ?

    il block sotto è dal blog ufficiale di queste due biblioteche:

    Se stai utilizzando una soluzione di terze parti (ad esempio ActionBarSherlock), ci sono alcune ragioni per considerare l'aggiornamento:

    • Può essere mantenuto aggiornato quando l'API della barra di azione si evolve.
    • Supporto di navigazione ancestrale integrato.
    • Utilizzo di classi di menu e MenuItem.
    • Continuare a utilizzare la class Fragment della libreria di supporto.
    • Supporto integrato per ActionBarDrawerToggle per l'utilizzo con DrawerLayout.
    • Backport di PopupMenu.

    ActionBarSherlock è una libreria solida e ben testata che ha servito agli sviluppatori molto bene per molto tempo. Se lo si utilizza e non richiede attualmente alcuna delle precedenti, non c'è bisogno di migrare.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.