Uma das principais características no desenvolvimento atual de aplicativos para Android é a presença de uma Action Bar, e isso é uma coisa que a Google incentiva bastante. O único problema é que essa mesma Google só oferece uma API nativa para criar Action Bars a partir da versão 3.0 do Android (API level 11), e se você for depender disso estaria deixando de suportar apenas uns 60% dos usuários Android.

Mas ainda bem que vivemos em mundo onde as pessoas gostam de ajudar umas às outras, porque a solução vem em forma de software livre: ActionBarSherlock!

ActionBarSherlock

O ActionBarSherlock faz todo o trabalho que a Google esqueceu nas versões 2.x do Android. E nas versões mais recentes, apenas usa a barra padrão.

Bom, chega de falação e vamos ao que interessa antes que o mundo acabe! Antes de mais nada, atualize o seu SDK e o plugin ADT (nunca é demais verificar por atualizações). É necessário ter pelo menos as bibliotecas da API level 14 instaladas. Depois disso, baixe o ActionBarSherlock* e descompacte a pasta library (eu recomendo renomeá-la para algo como ActionBarSherlock, não é necessário mas ajuda a saber o que é essa pasta ;-)).

* o link do ActionBarSherlock é para a versão 4.1.0 porque a versão 4.2.0 possui centenas de erros no código, segundo o Eclipse: (clique na imagem para ampliar)

Erros no ActionBarSherlock

No Eclipse, crie um novo projeto para o ABS: File > New > Project > Android Application from existing code > Next. Em Root directory, selecione a pasta library (ou qualquer outro nome que você escolheu) descompactada anteriormente. Marque a opção “Copy projects into workspace” e clique em “Finish”. O ActionBarSherlock está quase configurado. Para terminar, selecione o projeto recém-criado no Package Explorer, clique com o botão direito do mouse sobre ele > “Build Path” > Configure Build Path. Na aba “Libraries”, clique em “Add JARs” e selecione o android-support-v4.jar na pasta libs.

Pronto. Agora que o ABS está configurado, vamos criar o nosso aplicativo.

Crie um projeto Android: File > New > Project > Android Application Project.

  • Application Name: Sherlock Test
  • Project Name: Sherlock Test
  • Package Name: seu.dominio.sherlocktest

Clique em Next. Desmarque a opção “Create activity”. Clique em Finish (ou Next se você escolheu criar um ícone).

Agora vamos incluir o ActionBarSherlock: clique com o botão auxiliar do mouse sobre o novo projeto e selecione Properties. No painel da esquerda selecione Android, e na janela à direita clique em Add e escolha o ActionBarSherlock. Pronto!

Finalmente vamos começar a criar o nosso App. Clique com o botão auxiliar do mouse na pasta src do SherlockTest > New > Class.

  • Package: seu.dominio.sherlocktest
  • Name: MainActivity
  • Superclass: com.actionbarsherlock.app.SherlockActivity

Esse último campo é o que faz toda diferença, com.actionbarsherlock.app.SherlockActivity! Lembre-se disso.

Com a classe criada, adicione-a ao AndroidManifest.xml (é só seguir os mesmos passos feitos no último post depois de criar a classe). Ainda no AndroidManifest.xml, precisamos referenciar o tema do ActionBarSherlock para ser usado no nosso aplicativo. No final, o arquivo deve ficar parecido com isso:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="seu.dominio.sherlocktest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Sherlock" >

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

    </application>

</manifest>

Pronto. Você já pode dizer que usa o ActionBarSherlock! Tá, mas e daí? Bom, agora vem a parte do código. :D

Vamos criar um menu para o nosso aplicativo: Primeiro, crie uma pasta chamada menu dentro do diretório res. Com a nova pasta selecionada, File > New > Other > Android XML File. Em “File” preencha main_menu e clique em Finish. Adicione alguns elementos ao menu, por exemplo um botão search: clique em Add e escolha Item. No painel de atributos, preencha os seguintes dados:

  • Id: @+id/menu_search
  • Title: Pesquisar
  • Icon: @android:drawable/ic_menu_search
  • Show as action: ifRoom

Crie outros itens assim, mas deixe o “Show as action” em branco para ver a diferença.

Voltando à nossa MainActivity.java, vamos criar alguns métodos para adicionar alguma funcionalidade básica ao aplicativo:

package seu.dominio.sherlocktest;

import android.os.Bundle;
import android.widget.TextView;

import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;

public class MainActivity extends SherlockActivity {

    /** Executado ao iniciar o aplicativo */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // por enquanto vamos criar um layout muito básico...
        TextView view = new TextView(this);
        view.setText("Olá mundo");
        setContentView(view);
    }

    /** Método chamado para exibir o menu de opções. Carrega o menu que criamos antes. */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.main_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    /** Método chamado quando um item do menu de opções é selecionado. */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_search:
                // Ação executada ao clicar no item search
                return true;

            // outros itens do menu aqui...
        }
        return super.onOptionsItemSelected(item);
    }

}

Rode e veja como ficou. O layout ficou bem simples (só uma mensagem “Olá mundo”), mas se o mundo não acaber eu quero incluir Fragments no próximo post. O grande detalhe aqui é a ActionBar, que (você deve ter percebido se já rodou o app) ficou com o botão de Pesquisa pra ela e os outros itens de menu ficaram no menu (por causa da opção Show as action)!

Sherlock Test

Por enquanto era isso, e se o mundo não acabar eu espero postar uma continuação ainda esse ano :D

Com as tags → 

6 Responses to Introdução ao ActionBarSherlock

  1. Dailson Campos disse:

    Fale Eduardo!
    Sou novo no desenvolvimento para android e estou estudando seus materiais. Tentei fazer a aplicação de Searchview, mas tive uma pequena dúvida. Os elementos que devo inserir são os que estão dentro da janela de criação do novo arquivo xml ou pela parte gráfica mesmo? Pq tentei das duas formas e ele não aparece ao lado do nome da aplicação.

    • Eduardo disse:

      Olá Dailson.

      Me desculpe, mas não entendi muito bem o seu problema. Quais elementos você quer exibir ao lado do nome da aplicação?

  2. Matheus Magela disse:

    Eduardo, na action bar, tem como adicionar por exemplo um botao pra salvar, os dados de uma activity?
    Thanks.

    • Eduardo disse:

      Sim, basta adicionar a opção no layout do “main_menu”, como foi feito com a opção de pesquisa nesse post. Depois a ação pode ser tratada no callback onOptionsItemSelected. Qualquer coisa pode ser executada dentro desse método, inclusive salvar esses dados que você quer.

      Só uma dica: forçar o usuário a tocar em uma opção “Salvar” para salvar os dados não é uma boa ideia. Por padrão, o usuário espera que tudo seja salvo “automaticamente”.

      Qualquer dúvida pode perguntar.

  3. angelo disse:

    Tentei fazer o exemplo porem o pacote import com.actionbarsherlock.internal.view.menu; não foi importado tentei analisar o motivo e verifiquei que no porjeto que criamos para importar o actionbarsherlock existe um alerta (interogação em amarelo) disendo The method setBackgroundDrawable(Drawable) from the type View is deprecated o metodo é o seguinte setBackgroundDrawable(mBackground); e esta sublinhado

    • Eduardo disse:

      Bom, esse post foi escrito utilizando a versão 4.1.0 do ActionBarSherlock. Atualmente, já existe a versão 4.4.0 e a própria API do Android deve ter mudado bastante. Eu sugiro que você tente utilizar a versão mais recente do ActionBarSherlock (assumindo que você utilizou a versão 4.1.0 que eu indiquei no post), e se encontrar algum novo problema pode deixar um comentário aqui.

Plataforma Wordpress Latest (GPLv2)
Tema PageLines Lite Improved (GPLv3)
Hospedado por OpenShift by RedHat
Domínio registrado pela Neep Host
Creative Commons Attribution-ShareAlike License
Copyleft © 2016 Eduardo Weiland
Utilize um leitor de QR Code para acessar o blog no seu celular:
21
%d blogueiros gostam disto: