¿Cuál es la diferencia entre ActionBarSherlock y Action Bar Compatibility?
Hace unos días, Google acaba de lanzar la compatibilidad de ActionBar que me confunde mucho. ¿Es que la barra de acción de compatibilidad funciona igual que ActionBarSherlock y es la misma codificación?
Ejemplo: ¿El ícono de la aplicación para navegar "arriba" o ActionBar.Tab es compatible con Action Bar Compatibility?
Respuestas:
ActionBarSherlock le da a su aplicación una barra de acción independientemente de la versión de la API de Android en la que se ejecuta su aplicación. La Compatibilidad de la barra de acción le proporciona la barra de acción solo si el dispositivo en el que está ejecutando es API nivel 3.0 o superior.
* Tenga en cuenta que si el dispositivo en el que está ejecutando no es 3.0 o superior, ActionBarSherlock usará su propia implementación personalizada de la barra de acción, no una nativa.
--EDITAR--
Parece que las cosas han cambiado y en realidad ya no hay diferencia entre ActionBarSherlock y la Compatibilidad de la barra de acción. Por favor lea los comentarios a continuación para más detalles.
--EDITAR--
Después de haber usado ambos ahora, puedo decir que en realidad prefiero ActionBarSherlock a Action Bar Compatibility. ActionBarSherlock es realmente fácil y agradable de usar.
--EDIT-- Como se mencionó LOG_TAG, ahora hay soporte para la barra de acción en la Biblioteca de soporte de Android. Todavía no he tenido la oportunidad de usarlo, pero me imagino que es el mejor.
fuente
why
yhow
debe usar la nueva API ActionBarCompatActionBarSherlock vs ActionBarCompat:
Solo quiero poner algunas diferencias de código entre ActionBarSherlock y ActionBarCompat Lib
Podemos migrar algunas aplicaciones de ActionBarSherlock a ActionBarCompat:
pasos:
Importar proyecto AppCompat .
Reemplazar
SherlockFragmentActivity
conActionBarActivity
.Reemplazar
SherlockFragment
conFragment
.Cambio
Menu
,MenuItem
ygetSupportMenuInflater()
referencias. Modifique la forma en que obtiene las vistas de acción.mSearchView = (SearchView)MenuItemCompat.getActionView(mSearchItem)
Para obtener más información, consulte estas diapositivas de + NickButcher (Google)
Gracias a las fuentes: http://gmariotti.blogspot.in/2013/07/actionbarsherlock-vs-actionbarcompat.html http://antonioleiva.com/actionbarcompat-migrating-actionbarsherlock/
¡No olvides leer este desarrollador.android para obtener más información sobre ABC!
Nota: La configuración para pruebas unitarias de la misma manera que ABS desafortunadamente no es posible con la biblioteca de soporte.
Salida:
Créditos: Gabriele Mariotti
fuente
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
y no tiene que ser un proyecto de biblioteca.Simplemente completando lo que @Kurtis Nusbaum con un ejemplo práctico.
ACTUALIZACIÓN: como dijo @ rudy-s, con la nueva biblioteca de soporte de Android (api 18), vi que ya tienen soporte integrado para actionbar (llamada clase ActionBarCompat).
Creé dos aplicaciones simples para mostrar la diferencia visual entre ActionBarSherlock y ActionBar Compatibility. Ver las imágenes comparativas:
Ahora la apariencia cuando se presiona el botón de menú:
Como puede ver, las imágenes simplemente imponen lo que se dijo. La Compatibilidad de la barra de acción le proporciona la barra de acción solo si el dispositivo en el que está ejecutando es API nivel 3.0 o superior. Mientras Sherlock es más general.
A continuación puede ver la fuente de la aplicación.
El archivo xml del menú es el mismo:
Actividad de compatibilidad:
La actividad de Sherlock:
Se necesitaba una configuración adicional en la aplicación Sherlock:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
ACTUALIZACIÓN: como dijo @ rudy-s, con la nueva biblioteca de soporte de Android (api 18), vi que ya tienen soporte integrado para actionbar (llamada clase ActionBarCompat).
fuente
Actionbar Sherlock es mucho más avanzado y mucho más ambicioso que el simple proyecto de compatibilidad Actionbar.
La compatibilidad de la barra de acción puede considerarse una "muestra" o un buen punto de partida si solo desea golpear una barra de acción en la parte superior de su aplicación.
ActionBarSherlock se basa en la biblioteca de compatibilidad y le proporciona (como el ejemplo de compatibilidad de la barra de acción) una Barra de acción en dispositivos anteriores a 3.0. Además, tiene características adicionales que no están presentes en el código de ActionBar Compat. Esto incluye características como, pero no limitado a
El único inconveniente que veo al usar ActionbarSherlock es que te encierras en esa biblioteca. Si por alguna razón se extinguirá en el futuro cercano, tendrá que mantenerlo usted mismo (por ejemplo, si no aparece la implementación de Jellybean). Esto es una molestia (no un gran problema) ya que todos sus fragmentos extienden SherlockFragemnt y todas sus actividades. SherlockActividad.
fuente
Bueno, la implementación de @Jake va mucho más allá de lo que es compatible con Actionbar, para ser más precisos, Actionbar Compat es solo un ejemplo básico de cómo puede admitir todas las aplicaciones con una pseudo-barra de acción para versiones anteriores de Honeycomb (API 13). Aunque su objetivo es la misma barra de acción compatible con cruces, tienen un enfoque diferente.
Acercamiento de la barra de acción
Esta implementación no hace uso de la biblioteca de compatibilidad de Android Compatibility, sino que crea una clase base llamada ActionBarActivity, crea una sola instancia de un Helper, este helper actúa como la propia fábrica que devuelve una implementación diferente para los tres segmentos de APIS.
La parte más interesante está en ActionbarBaseHelper , ya que tiene el código más importante, le sugiero que entienda esta clase y obtendrá el ejemplo completo.
Action Bar Sherlock
Bueno, esto es difícil porque no soy el autor, tal vez Jake pueda explicarlo más, pero lo intentaré.
Del mismo modo que el Sherlock compatible realiza diferentes implementaciones, pero una es para "Compat" y la otra es Native. Te obliga a extender ya sea desde SherlockActivity o desde SherlockFragmentActivity, porque estas dos clases base tienen el método para enviar ActionBar.
Este es un proyecto grande y complejo, que no se puede explicar en una sola publicación. Te sugiero que busques en el repositorio de Sherlock Github, echa un vistazo y, como dice Jeff Atwood
fuente
Creo firmemente que debe usarlo
ActionBarCompat
para todos los proyectos nuevos que quieran admitir dispositivos más antiguos.También podría tener sentido migrar proyectos existentes. Siga leyendo para saber por qué debería migrar o usar ActionBarCompat de inmediato y cómo migrar proyectos existentes.
¿Por qué debería preferir ActionBarCompat sobre ActionBarSherlock?
Hay muchas razones por las que debería preferir ActionbarCompat sobre ActionbarSherlock.
En primer lugar, este proyecto es de Google, forma parte de la Biblioteca de soporte y, por lo tanto, probablemente admitirá nuevas cosas relacionadas con la barra de acción al mismo tiempo que Google las lanza con Android de serie.
Otra buena razón es que admite la
Navigation Drawer pattern
configuración inmediata, mientras que ActionBarSherlock no. Por lo tanto, si desea agregar este cajón a un proyecto / aplicación existente, debe migrar.Lo último e importante es que el creador de ActionBarSherlock, Jake Wharton, anunció en Google+ que se ha detenido el desarrollo posterior de ActionBarSherlock. ActionBarSherlock 4.4 es la última versión y puede obtener correcciones de errores, pero no habrá nuevas características: por lo tanto, si se incluye una nueva funcionalidad en actionbar, es posible que no se mantenga al día con actionbarsherlock.
fuente
¿Quizás deberíamos actualizar la respuesta porque Google publicó soporte oficial de Actionbar desde API18 ?
El siguiente bloque es del blog oficial sobre estas dos bibliotecas:
fuente