Navigator Drawer na ActionBar Android, Entendendo e Utilizando

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes! Você receberá um email de confirmação. Somente depois de confirma-lo é que eu poderei lhe enviar os conteúdos semanais exclusivos. Os artigos em PDF são entregues somente para os inscritos na lista.

Email inválido.
Blog /Android /Navigator Drawer na ActionBar Android, Entendendo e Utilizando

Navigator Drawer na ActionBar Android, Entendendo e Utilizando

Vinícius Thiengo
(11906) (29)
Go-ahead
"O método consciente de tentativa e erro é mais bem-sucedido que o planejamento de um gênio isolado."
Peter Skillman
Prototipagem Android
Capa do curso Prototipagem Profissional de Aplicativos
TítuloAndroid: Prototipagem Profissional de Aplicativos
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
Acessar Curso
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Lendo
TítuloManual de DevOps: como obter agilidade, confiabilidade e segurança em organizações tecnológicas
CategoriaEngenharia de Software
Autor(es)Gene Kim, Jez Humble, John Willis, Patrick Debois
EditoraAlta Books
Edição
Ano2018
Páginas464
Conteúdo Exclusivo
Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba gratuitamente conteúdos Android sem precedentes!
Email inválido

Opa! Blz?

Nesse vídeo mostro o estilo de design na ActionBarSherlock, Navigator Drawer, que é alcançado utilizando as classes DrawerLayout, ActionBarDrawerToggle e ActionBar (ou ActionBarSherlock para suporte) no Android. Muito comum hoje em dia nas APPs Android essa funcionalidade não é tão pequena em termos de código para implementar, porém é bem simples, não muita lógica a ser utilizada. No vídeo mostro também como fazemos para ocultar o menu do Android quando estamos com a Navigator Drawer ativada. Ressalto que é importante ficar atento ao uso da classe ActionBarDrawerToggle, pois é ela que nos permitirá realizar o vinculo funcional entre DrawerLayout e ActionBar. Não se espante com o tamanho do código como for necessário criar um método que retorna um android.view.Menu, pois ele só é grande devido aos métodos obrigatórios que devemos ter declarados, tendo em mente que o Eclipse coloca esses para nós automáticamente e temos de realizar alteração de código em apenas dois. Note também o uso da de um ListView personalizado, que deixa uma grande vantagem do uso do DrawerLayout ante ao uso convencional das Tabs do ActionBar, pois a personalização da ActionBar não é tão simples quanto a dos componentes do DrawerLayout. Mas ressalto que não digo que uma é mehlor que a outra, você terá de ver as necessidades de seu projeto para definir a escolha correta. Mas enfim, sem mais delongas vou deixar você assistir ao vídeo.

O link para download do projeto se encontra logo abaixo no post.

Se você ainda não view nenhum vídeo da série de vídeos sobre a ActionBar no blog, segue links das mesmas:

Iniciando ActionBar no Android, Trabalhando Com Menu

Adicionando Tabs na ActionBar Android

SearchView, Botão Home e Mudança de Título na ActionBar Android

Criando Suporte ActionBar Android Com ActionBarSherlock

Customizando ActionBar Android Com ActionBar Style Generator

Colocando Botão de Update no ActionBar Android

Segue links das páginas apresentadas no vídeos:

Página da classe DrawerLayout no site oficial do Android

Página da classe ActionBarDrawerLayout no site oficial do Android

Vlw

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes!
Email inválido

Relacionado

Linkify no Android, Entendendo e UtilizandoLinkify no Android, Entendendo e UtilizandoAndroid
API do YouTube na APP Android, IniciandoAPI do YouTube na APP Android, IniciandoAndroid
Upload de Vídeo e YouTubeIntents com YouTube API no AndroidUpload de Vídeo e YouTubeIntents com YouTube API no AndroidAndroid
Parser JSON no Android, Entendendo e UtilizandoParser JSON no Android, Entendendo e UtilizandoAndroid

Compartilhar

Comentários Facebook

Comentários Blog (29)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
Robert silva (2) (0)
29/11/2015
show seu site amigo continue ajudando sempre
Responder
Vinícius Thiengo (0) (0)
30/11/2015
Vlw Robert, abraço
Responder
Francisco Antonio (1) (0)
06/05/2015
Thiengo, muito bom seu post. Só gostaria de saber como faço para quando entrar na aplicação, o menu já apareça (ao invés de clicar na actionbar).  Que metodo devo utilizar?
Responder
Vinícius Thiengo (1) (0)
07/05/2015
Fala Francisco, blz?
Primeiro lhe informo que essa versão do Drawer está depreciada, logo recomendo que trabalhe com Toolbar (http://www.thiengo.com.br/toolbar-material-design-android-parte-1 ) e sua nova NavigationDrawer (http://www.thiengo.com.br/utilizando-navigationdrawer-material-design-android-parte-5 ). Até mesmo utilize RecyclerView (http://www.thiengo.com.br/recyclerview-material-design-android-parte-2 ) ao invés de ListView. Mas enfim, se for continuar com essa Nav, tente abrir o Nav assim que abrir o Activity e depois de gerar as instancias do Navigation, tente dessa forma:

drawerLayout.openDrawer(listViewDrawer);

Dando certo, vc então pode utilizar um SharedPreferences (http://www.thiengo.com.br/sharedpreferences-no-android-entendendo-e-utilizando ) para saber se o user já entrou em sua APP antes ou não, no caso teria uma flag boolean no SharedPreferences, ai na primeira vez que o user entra em sua APP o script abre o Nav, então muda o valor da flag no SharedPreferences e assim não abre mais ele quando o user entrar novamente na APP. Abraço
Responder
Carlos Eduardo (2) (0)
04/03/2015
Boa Tarde Vinícius.

Primeiramente, gostaria de parabenizar seu blog. Disparado o melhor portal voltado para android que eu já tive contato. Sua didática também é fora de série.

Me surgiu uma dúvida meio cruel, e acho que ela surgirá em outros programadores que estão tendo um contato de inicial para médio com android.

Para trabalhar com Navigator Drawer é obrigatório utilizar somente Fragments ou podemos fazer o mesmo funcionamento com Activity ?

Obrigado pela atenção, e novamente, parabéns pelo blog
Responder
Vinícius Thiengo (1) (0)
05/03/2015
Fala Carlos, blz?
É possível sim, porém não fica bom trabalhar com Activity se vc for implementar o mesmo Navigation nessa nova Activity, pois o máxima que vc consegue aproveitar é o código se estiver trabalhando com herança, pois o mesmo objeto, digo o objeto do Drawer da Activity anterior, vc não consegue utilizar na nova Activity, fora a transição total da tela que o usuário percebe quando troca de Activity. Com o Lollipop as coisas ficaram melhores para trabalhar com Activity, devido as transições animadas que tem, mas mesmo assim se for trabalhar com o Navigator e tiver de implementar o mesmo Navigator em outra tela recomendo ficar com fragments devido a não necessidade de uma nova implementação e de a transição ser mais suave que a entre Activities. Abraço
Responder
gabrielcdmd (0) (0)
20/09/2014
Thiengo usando actionbar com compatibilidade n?o esta aparecendo aqueles tr?s pontinhos do menu...
Responder
Vinícius Thiengo (0) (0)
21/09/2014
Fala Gabriel, blz?
Então, essa caracteristica é vc quem coloca, há várias formas de fazer, mas uma que pode funcionar sem problemas (se não me engano) é vc colocar alguns itens do menu ou todos com o atributo android:showAsAction igual a "never", dê uma olhada nesses dois links: http://developer.android.com/guide/topics/ui/menus.html e http://developer.android.com/guide/topics/resources/menu-resource.html. Abraço
Responder
22/09/2014
Meu problema é que ele só aparece não aparece no Android 2.3 nas outras versões funciona normalmente
Responder
Vinícius Thiengo (0) (0)
22/09/2014
Tentou colocar na mão? Eu tenho esse problema quando quero atualizar o icone do SearchView, tenho de fazer na mão. Verifica qual é a API e então altera na mão se for a 2.3, mas ela é realmente necessária no suporte de sua APP, muito antiga e muito pouco usuário. Abraço
Responder
Alexandre (0) (0)
30/07/2014
Boa tarde Vinicius, continuo com o mesmo problema, que anteriormente comentado, não consigo importar a lib do DrawerLayout e do ActionBarDrawerToggle..... Ja fiz o download no projeto novamente importei as lib do Sherlock e nada ......
Responder
Vinícius Thiengo (0) (0)
30/07/2014
Alexandre, quando vc cria o projeto está sendo criada uma Activity que extends ActionBarActivity? Se sim, crie uma "Empty Activity" no momento de criar um novo projeto e importe novamente as libs necessárias para utilizar o ActionBarSherlock. Depois informe se é isso. Abraço
Responder
Alexandre (0) (0)
25/06/2014
Então ja importei o projeto para o eclipse e já inseri, as libs do Sherlock, so que quando vou rodar da o seguinte mensagem:

[2014-06-25 11:28:20 - ExemploActionBar] 0420744857 disconnected! Cancelling 'br.exemploactionbar.NavigatorActivity activity launch'!
[2014-06-25 13:40:05 - Dex Loader] Unable to execute dex: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
[2014-06-25 13:40:05 - ExemploActionBar] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
Responder
Vinícius Thiengo (0) (0)
25/06/2014
Hum, acho que sei qual é o problema. Vai no seu projeto, no folder "libs" e apaga o android-support-v4.jar, se não me engano é isso, pois vc está com uma support-v4 tb na lib do Sherlock, porém vc apaga a de seu projeto. Depois informe se era isso mesmo. Abraço
Responder
Alexandre (0) (0)
31/07/2014
Bom dia Vinicius tentei fazer isso de excluir a lib, so que quando eu tiro ela do projeto, começa dar erro no projeto ai não consigo encontrar os imports.
Responder
Vinícius Thiengo (0) (0)
31/07/2014
Respondido em email. Abraço
Responder
Guilherme (0) (0)
18/12/2014
poderia me mandar a resposta que você mandou no e-mail ?

obrigado !
Responder
Vinícius Thiengo (0) (0)
19/12/2014
Fala Guilherme, blz?
Tinha solicitado a ele que me enviasse o projeto para eu dar uma olhada se passava no meu eclipse, e foi sem problemas, porém ele não conseguiu rodar até a ultima vez q falei com ele. Abraço
Responder
19/12/2014
Ahh  entendi.  Ã?  q estou  usando  o Android  Studio  e tenho  3 projetos.  Um  que  Ã©  o app  que  usa os  dois  outros  projetos. E os  2 usa  a mesma  lib  (support  v4)
aí qnd  tento  compilar ele dá  esse  erro  de  multiple  dex  file

No  eclipse  consigo  resolve  isso  desmarcanão a lib  de um dos  projetos  de  exportação .
Mas  no  Android  Studio não  há  essa  opção. Estou  há  semanas  com  o projeto  parado por  causa  disso.  
Vc  pode  me  ajudar ???
Muito  obrigado  pela  atenção
Responder
Vinícius Thiengo (1) (0)
20/12/2014
Of course! O problema na verdade que é que as libs utilizadas (support v4) estão em versões diferentes, uma é mais atual que a outra, so o Android reclama disso, se forem da mesma versão não há problemas. O que vc pode fazer para corrigir é colocar a support-v4 mais atual nas libs do projeto que está utilizando e tem a versão antiga do support-v4, comigo funcionou no Eclipse sem problemas, não precisei de desmarcar a lib, agora é fazer isso no AndroidStudio, pois sou novo nele tb e não tive esse problema ainda, porém encontrei um link no StackOverflow que pode lhe ajudar, veja a resposta certa o que o camarada fez no gradle (http://stackoverflow.com/questions/17974382/gradle-build-failure-when-trying-to-use-facebook-sdk/18069006#18069006 ). Mesmo assim acho que só atualizar o v4 mais antigo para o mesmo do projeto que tem o mais atual já é mais que o suficiente. Abraço
Responder
21/12/2014
Valeu cara !
Muito obrigado !
Site added nos favoritos !

vlaeu mesmo
Responder
Alexandre (0) (0)
25/06/2014
Bom dia, estou com o mesmo problema encontrado pelo Adriano Jesus, no momento de importar a Drawer Layout .... Como foi resolvido .. Não entendi direito
Responder
Vinícius Thiengo (0) (0)
25/06/2014
Fala Alexandre, blz?
Faz o seguinte baixe o projeto (se já não o baixou) e importe para o eclipse, o que pode estar acontecendo é que vc esta com a nova versão de SDK do Android que cria os projetos já estendendo a classe ActionBarActivity e trabalhando com fragments, e essa configuração atrapalha quando vamos utilizar um exemplo que está estendendo outra classe que não o ActionBarActivity. Com o projeto importado vc já terá a base. Note que esse projeto precisa de importar algumas libs, no caso a do ActionBar Sherlock, então vc import, caso contrário o projeto não roda. Essa lib do ActionBar Sherlock está incluida tb no zip do projeto. Abraço
Responder
José Clailton (1) (0)
10/05/2014
Thiego, eu estava testando criar um layout para ser o meu DrawerLayout. Vou falar o passo a passo que eu fiz: Eu criei um arquivo layout.xml, com uma imagem e 2 textos, Criei um MeuAdapter estendendo de BaseAdapter e inflei esse layout pelo MeuAdapter e retorno essa viem que pega o layout inflado. Mas quando eu clico no DrawerLayout ele não aparece nenhum layout, ele fica totalmente transparente. Pode me explicar como eu posso personalizar o meu DrawerLayout por um layout? Obrigado e ótimo site e ótimos vídeos.
Responder
Vinícius Thiengo (0) (0)
10/05/2014
Respondido no comentário do facebook
Responder
07/05/2014
Usem o Android Studio, ele vá vem com o appCompat, bem melhor que a Sherlock.
Responder
01/05/2014
Boa tarde, não estou conseguindo importar as classes DrawerLayout e ActionBarDrawerToggle. E ao realizar o download do post verifiquei que os arquivos do projeto não foram adicionados.
Responder
Vinícius Thiengo (1) (0)
01/05/2014
Fala Adriano, blz? Vlw cara, nem me toquei que o projeto para download estava bugado... já coloquei o projeto completo para Download agora... faz o seguinte, baoxe o projeto e veja se consegue fazer o import igual em seu projeto das classes DrawerLayout e ActionBarDrawerToggle. Se msmo assim não for, volte aqui e resolvemos de outra maneira. Abraço
Responder
03/05/2014
Deu certo agora, valeu. Só queria saber como colocar os ícones nos fragments.
Responder