Qual é a diferença entre ActionBarSherlock e Action Bar Compatibility
Poucos dias atrás, o Google lançou a Compatibilidade ActionBar que me deixa tão confusa. A Compatibilidade da Barra de Ação funciona da mesma forma que o ActionBarSherlock e a codificação é a mesma?
Exemplo: O ícone do aplicativo para navegar "para cima" ou o ActionBar.Tab é compatível com a Compatibilidade da barra de ação?
Respostas:
O ActionBarSherlock fornece ao seu aplicativo uma barra de ação, independentemente * da versão da API do Android em que seu aplicativo está sendo executado. A Compatibilidade da barra de ação fornece a barra de ação apenas se o dispositivo em que você está executando for de nível de API 3.0 ou superior.
* Observe que, se o dispositivo em que você está executando não for 3.0 ou superior, o ActionBarSherlock usará sua própria implementação personalizada da barra de ação, não uma nativa.
--EDITAR--
Parece que as coisas mudaram e, na verdade, não há mais diferença entre o ActionBarSherlock e a Compatibilidade da Barra de Ação. Por favor, leia os comentários abaixo para obter detalhes.
--EDITAR--
Depois de ter usado os dois agora, posso dizer que realmente prefiro o ActionBarSherlock à Compatibilidade da barra de ação. ActionBarSherlock é realmente fácil e agradável de usar.
--EDIT-- Como LOG_TAG mencionou, agora há suporte para a barra de ação na Biblioteca de suporte do Android. Ainda não tive chance de usá-lo, mas imagino que seja o melhor para usar.
fonte
why
ehow
para usar a nova API ActionBarCompat, android-developers.blogspot.in/2013/08/...ActionBarSherlock vs ActionBarCompat:
Eu só quero colocar algumas diferenças de código entre ActionBarSherlock vs ActionBarCompat Lib
Podemos migrar alguns aplicativos do ActionBarSherlock para o ActionBarCompat:
passos:
Importe o projeto AppCompat .
Substituir
SherlockFragmentActivity
porActionBarActivity
.Substituir
SherlockFragment
porFragment
.Change
Menu
,MenuItem
egetSupportMenuInflater()
referências. Modifique a maneira como você obtém as visualizações de ação.mSearchView = (SearchView)MenuItemCompat.getActionView(mSearchItem)
Para mais informações, consulte os slides de + NickButcher (Google)
Agradecimentos às fontes: http://gmariotti.blogspot.in/2013/07/actionbarsherlock-vs-actionbarcompat.html http://antonioleiva.com/actionbarcompat-migrating-actionbarsherlock/
Não se esqueça de ler este developer.android para saber mais sobre o ABC!
Nota: Infelizmente, não é possível configurá-lo para testes de unidade da mesma maneira que o ABS na biblioteca de suporte.
Resultado:
Créditos: Gabriele Mariotti
fonte
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
e não precisa ser um projeto de biblioteca.Acabei de completar o que @Kurtis Nusbaum com um exemplo prático.
ATUALIZAÇÃO: como o @ rudy-s disse, com a mais recente biblioteca de suporte ao Android (api 18), vi que eles já têm suporte interno para a actionbar (chamada classe ActionBarCompat).
Criei dois aplicativos simples para mostrar a diferença visual entre o ActionBarSherlock e o ActionBar Compatibility. Veja as imagens comparativas:
Agora, a aparência quando o botão de menu é pressionado:
Como você pode ver, as imagens apenas reforçam o que foi dito. A Compatibilidade da barra de ação fornece a barra de ação apenas se o dispositivo em que você está executando for de nível de API 3.0 ou superior. Enquanto Sherlock é mais geral.
Abaixo você pode ver a fonte do aplicativo.
O arquivo xml do menu é o mesmo:
Atividade de compatibilidade:
Atividade de Sherlock:
Uma configuração adicional foi necessária no aplicativo sherlock:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
ATUALIZAÇÃO: como o @ rudy-s disse, com a mais recente biblioteca de suporte ao Android (api 18), vi que eles já têm suporte interno para a actionbar (chamada classe ActionBarCompat).
fonte
Actionbar Sherlock é muito mais avançado e muito mais ambicioso do que o simples projeto de compatibilidade do Actionbar.
A compatibilidade da barra de ação pode ser considerada uma "amostra" ou um bom ponto de partida se você quiser apenas bater uma barra de ação na parte superior do seu aplicativo.
O ActionBarSherlock baseia-se na biblioteca de compatibilidade e fornece (como o exemplo de compatibilidade da barra de ação) uma Barra de Ação em dispositivos anteriores à 3.0. Além disso, possui recursos extras não presentes no código Compatível com o ActionBar. Isso inclui recursos como, entre outros,
A única desvantagem que vejo ao usar o ActionbarSherlock é que você se trava nessa biblioteca. Se, por algum motivo, ele desaparecer no futuro próximo, você precisará mantê-lo (por exemplo, se nenhuma implementação do Jellybean aparecer). Isso é um aborrecimento (não é um grande problema), pois todos os seus fragmentos estendem o SherlockFragemnt e todas as suas atividades. SherlockActivity.
fonte
Bem, a implementação do @Jake vai muito além do que o compatível com o Actionbar, para ser mais preciso, o Actionbar Compat é apenas um exemplo básico de como você pode suportar todas as aplicações com uma pseudo-actionbar para lançamentos anteriores ao Honeycomb (API 13). Embora seu alvo seja a mesma barra de ação compatível com eles, eles têm uma abordagem diferente.
ActionbarCompat Aproach
Essa implementação não utiliza a biblioteca de suporte do Compatibility Android, mas cria uma classe base chamada ActionBarActivity, cria uma única instância de um Helper, esse auxiliar atua como a própria fábrica que retorna uma implementação diferente para os três segmentos do APIS, retorna
A parte mais interessante está no ActionbarBaseHelper , porque possui o código mais importante, sugiro que você entenda essa classe e obterá o exemplo inteiro.
Barra de ação Sherlock
Bem, isso é complicado de se iniciar, porque, eu não sou o autor, talvez Jake possa explicar mais sobre isso, mas vou tentar.
Assim como o compat Sherlock faz uma implementação diferente, mas um é para "Compat" e o outro é nativo. Isso força você a se estender de SherlockActivity ou de SherlockFragmentActivity, porque essas duas classes base têm o método para despachar a ActionBar.
Este é um projeto grande e complexo, que não pode ser explicado em um único post. Sugiro que você procure o repositório Sherlock Github e dê uma olhada e, como Jeff Atwood diz
fonte
Eu acredito fortemente que você deve usar
ActionBarCompat
para todos os novos projetos que desejam oferecer suporte a dispositivos mais antigos.Também pode fazer sentido migrar projetos existentes. Portanto, continue lendo para saber por que você deve migrar ou usar o ActionBarCompat imediatamente e como migrar projetos existentes.
Por que você deve preferir o ActionBarCompat ao ActionBarSherlock?
Há muitas razões pelas quais você deve preferir o ActionbarCompat ao ActionbarSherlock.
Antes de tudo, esse projeto é do Google, faz parte da Biblioteca de suporte e, portanto, provavelmente oferecerá suporte a novos itens relacionados à Action Bar ao mesmo tempo em que o Google os libera com o Android padrão.
Outro bom motivo é que ele oferece suporte
Navigation Drawer pattern
imediato, enquanto o ActionBarSherlock não. Portanto, se você deseja adicionar essa gaveta a um projeto / aplicativo existente, deve migrar.A última e importante é que o criador da ActionBarSherlock, Jake Wharton, anunciou no Google+ que o desenvolvimento adicional da ActionBarSherlock foi interrompido. O ActionBarSherlock 4.4 é a última versão e pode receber correções de bugs - mas não haverá novos recursos: portanto, se uma nova funcionalidade estiver incluída na actionbar, você não poderá acompanhá-la com o actionbarsherlock.
fonte
Talvez devêssemos atualizar a resposta porque o Google publicou o suporte oficial da Actionbar desde API18 ?
O bloco abaixo é do blog oficial sobre essas duas bibliotecas:
fonte