Toolbar, Material Design Android - Parte 1

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 /Toolbar, Material Design Android - Parte 1

Toolbar, Material Design Android - Parte 1

Vinícius Thiengo
(30968) (53)
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ítuloCraftsmanship Limpo: Disciplinas, Padrões e ética
CategoriaDesenvolvimento Web
Autor(es)Robert C. Martin
EditoraAlta Books
Edição
Ano2023
Páginas416
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

Tudo bem?

No vídeo acima é iniciada a série sobre os componentes do Material Design e outras novas entidades no Android.

Neste primeiro vídeo são apresentadas algumas maneiras de utilizar (standalone mode, por exemplo), em projetos Android, o componente Toolbar, o mais novo componente de barra de topo, substituto do antigo e depreciado ActionBar.

Uma das principais características da Toolbar, que é na verdade um novo ViewGroup, é a simplicidade na configuração, algo totalmente em contraste com a antiga ActionBar que era parte da API Activity.

No vídeo acima eu implemento, além do modelo convencional de barra de topo, uma Toolbar no fundo do layout do projeto de exemplo, simulando uma barra de fundo com as redes sociais do aplicativo e também uma área de acesso à parte de configurações do app.

Mas confesso que para barra de fundo você deve na verdade utilizar a BottomNavigationView, pois este componente visual foi criado especificamente para isso.

Ainda sobre o conteúdo do vídeo acima, na SecondActivity é apresentada uma maneira de se construir uma Floating Toolbar, componente comum em aplicativos de mapas. Essa construção será:

  • Utilizando <selector> quando em versões maiores ou iguais a API 21 (Lollipop) do Android;
  • e Utilizando 9patch caso contrário.

Importante: fique atento, quando no vídeo, ao modo de colocar o listener de clique ao ImageView que está dentro da Toolbar.

Note também que a barra de redes sociais apresentada no vídeo é uma barra fake, pois não foram configuradas as URLs corretas das páginas sociais do Blog. Caso você queira reaproveitar a barra de fundo, então altere as URLs para as das redes sociais do projeto em que você esta envolvido.

Não esqueça de configurar no Gradle Nível de Aplicativo, ou build.gradle (Module: app), a biblioteca de suporte que permitirá a utilização da Toolbar em versões anteriores a API 21 do Android. Alias, faça melhor:

Utilize o AndroidX para isso, suporte a versões antigas do Android. Com o AndroidX o seu projeto já estará em conformidade com as novas APIs de suporte para desenvolvimento de aplicativos deste sistema operacional mobile do Google.

Vale ressaltar que este artigo (e o vídeo acima) é apenas um dos conteúdos da série do Blog no YouTube: Android Material Design. Todos os vídeos estão acompanhados de seus respectivos artigos com o passo a passo de como utilizar o componente em estudo. Está é uma das séries do Blog e canal e já esta finalizada, com exatos 20 vídeos e artigos.

Antes de fechar este conteúdo, deixo a seguir alguns links de posts aqui do Blog, com vídeos, que lhe colocarão em dia com o que há de novo no desenvolvimento mobile:

E caso você tenha como meta aprender a construir projetos Android, ou evoluir nesta área, também com os conteúdos gratuitos do Blog, então não deixe de acessar a lista de estudos em: Estudando Android - Lista de Conteúdos do Blog.

E... não esqueça de se inscrever 📫na lista de e-mails do Blog para receber todos os conteúdos exclusivos Android em primeira mão.

Se inscreva também no canal do Blog no YouTube para acompanhar as últimas novidades disponíveis lá e aqui no Blog.

Surgindo dúvidas ou dicas, pode enviar abaixo na área de comentários que logo eu lhe retorno.

Obs. : o link para download do projeto apresentado em vídeo se encontra logo abaixo no artigo, na seção "Download".

Abraço.

Próxima aula

A próxima aula a está, "Toolbar, Material Design Android - Parte 1", é a 2ª aula, no link a seguir:

É importante que você siga as aulas na ordem correta para assim poder tirar o máximo proveito da série e então evoluir como esperado no mundo de desenvolvimento de apps Android.

Códigos do projeto

Para acessar os códigos completos do projeto desenvolvido na série "Android Material Design", basta entrar nos repositórios GitHub a seguir:

Fontes

Toolbar - documentação oficial Android

Styles and Themes - documentação oficial Android

AppCompat v21 — Material Design for Pre-Lollipop Devices!

Implementing Material Design in Your Android app

App bars: top - documentação oficial material Design

Material Palette

Material Design Icons

Android Asset Studio

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

Obtendo Localização Com Location API no Android - Parte 1Obtendo Localização Com Location API no Android - Parte 1Android
JobScheduler API no Android, Entendendo e UtilizandoJobScheduler API no Android, Entendendo e UtilizandoAndroid
Tracking Com Location API, JobScheduler e Google Maps V2 no Android - Parte 4Tracking Com Location API, JobScheduler e Google Maps V2 no Android - Parte 4Android
Busca Por Locais Próximos, Location API Android - Parte 5Busca Por Locais Próximos, Location API Android - Parte 5Android

Compartilhar

Comentários Facebook

Comentários Blog (53)

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...
Thiago Peres (1) (0)
29/08/2017
Thiengo, fala ai, beleza?
Então meu camarada, estou tentando implementar a Toolbar no meu App, só que está dando erro ao abrir o aplicativo no emulador... Eu baixei o seu exemplo e quando rodo, ele funciona normalmente... Criei a Toolbar e os menus igualmente como está no video tutorial, e começou a dar erro no meu App, antes funcionava normalmente, a tela de Login e etc... Segue abaixo o erro que dá no LogCat...

FATAL EXCEPTION: main
                                                                                               Process: com.caixinhadosmotoristas.caixinhamotoristasapp, PID: 5059
                                                                                               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.caixinhadosmotoristas.caixinhamotoristasapp/com.caixinhadosmotoristas.caixinhamotoristasapp.PerfilActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.Toolbar.setTitle(java.lang.CharSequence)' on a null object reference
                                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
                                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
                                                                                                   at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
                                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                                   at android.os.Looper.loop(Looper.java:154)
                                                                                                   at android.app.ActivityThread.main(ActivityThread.java:6077)
                                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
                                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
                                                                                                Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.Toolbar.setTitle(java.lang.CharSequence)' on a null object reference
                                                                                                   at com.caixinhadosmotoristas.caixinhamotoristasapp.PerfilActivity.onCreate(PerfilActivity.java:28)
                                                                                                   at android.app.Activity.performCreate(Activity.java:6662)
                                                                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
                                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
                                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 
                                                                                                   at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
                                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                                   at android.os.Looper.loop(Looper.java:154) 
                                                                                                   at android.app.ActivityThread.main(ActivityThread.java:6077) 
                                                                                                   at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) 
                                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Responder
Vinícius Thiengo (0) (0)
01/09/2017
Thiago, tudo bem?

O Toolbar não está preenchido antes da invocação do método setTitle().

Certifique-se de que está utilizando o ID correto no findViewById() e que o Toolbar não está nulo até antes da invocação do setTitle().

Um outro detalhe. O setTitle() tende a ser eficiente no método onResume(), então ante essa atualização de título neste método do ciclo de vida da atividade.

Abraço.
Responder
24/01/2017
Thiengo, como vai cara? Beleza?
Procurei no seu blog algo que tenha haver mas não achei nada e esse post é algo que mais tem haver...
Minha dúvida é o seguinte... Minha aplicação tem um tema padrão que é executado automaticamente com a aplicação, no entanto, dependendo da escolha do usuário, um webservice trás informações de três cores para mudar na aplicação (primaryColor, darkPrimaryColor e accentColor), ressalto que essas cores são retiradas do "materialpalette.com" seguindo o padrão exigido pela google. Minha idéia é carregar o tema padrão de alguma forma, mudar apenas esses 3 parametros e ao inicializar a próxima activity já instanciar ela com esse tema alterado. (Pelo que li, a única forma de mudar de fato o tema é antes de iniciar uma activity.
Você já viu algo sobre isso? Procurei bastante e não achei nada.

Desde já um obrigado.
Responder
Vinícius Thiengo (0) (0)
25/01/2017
Alex, tudo bem?

Não vou lhe falar que é impossível, pois ainda não li na documentação do Android sobre ?ser impossível?, digo, a alteração das cores de template em tempo de execução.

O que tenho certeza ser possível é você ter vários temas já definidos, com suas próprias cores, e então vinculai-los a diferentes activities para assim ter a característica de activities distintas ao longo do uso do APP.

Mas nada relacionado a mudança em tempo de execução.

Na versão 2.0 do aplicativo do Blog, precisei de uma Bottom Bar para os botões de compartilhamento em redes sociais. Nessa época ainda não era comum a avalanche de libraries que temos hoje no Android.

Sendo assim eu tive de desenvolver, com Views, essa Bottom Bar, incluindo versões distintas para landscape e portrait.

O que quero lhe dizer com isso é que ainda há a possibilidade de você alterar as cores de cada View no código? incluindo os textos e ícones. Terá de fazer o teste para ver se, por exemplo, essa tática funcionaria com a mudança de cor da Toolbar.

Vale a busca também no AndroidArsenal (https://android-arsenal.com/ ) para ver se já não existe algo similar ao que você precisa, digo, uma library que lhe ajuda com essa tarefa. Abraço.
Responder
Jairo Souza (1) (0)
16/04/2016
Olá Vinícius, estou com um problema aqui.


java.lang.NoClassDefFoundError: android/support/v4/content/ContextCompatApi21
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:319)
at android.support.v7.internal.widget.TintManager.getDrawable(TintManager.java:137)
at android.support.v7.internal.widget.TintTypedArray.getDrawable(TintTypedArray.java:62)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:250)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:192)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:458)
at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:170)
at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:103)
at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:168)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:247)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:171)
at android.view.LayoutInflater_Delegate.parseInclude(LayoutInflater_Delegate.java:157)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:879)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:831)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:811)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:223)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:426)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:510)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:498)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:888)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:498)
at com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:72)
at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:610)
at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:607)
at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:362)
at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:607)
at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:629)
at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$6.run(AndroidDesignerEditorPanel.java:480)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:351)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Responder
Vinícius Thiengo (1) (0)
16/04/2016
Fala Jairo, blz?
Colocou as libraries necessárias (e em versões mais atuais que as utilizadas em vídeos) em seu projeto e logo depois deu um Build > Rebuild Project? Caso ainda não faça isso. Não esqueça de adiocionar tb a versão de support do material design (compile 'com.android.support:design:23.3.0') Abraço
Responder
12/04/2016
Boa noite Thiengo. Ótimo App.  tenho uma dúvida. eu tenho um recyclerview e no evento onlongpress eu ativo um ActionMode com uma nova toolbar com botões para excluir.  Só que na minha App está ficando está nova toolbar e abaixo a toolbar principal com menu home e titulo. Gostaria de saber como esconder está toolbar principal e fixar somente a toolbar da ActionMode? grato.
Responder
Vinícius Thiengo (0) (0)
17/04/2016
Fala Wagner, blz?
O que está utilizando para tentar esconder a Toolbar principal? Utilizou setVisibility(View.Gone)? Abraço
Responder
01/01/2016
Ola thiengo gostaria de perguntar se dar para, fazer as mesmas coisas e  trazer o material Design do Android desse Video para o Eclipse ADT
Responder
Vinícius Thiengo (0) (0)
02/01/2016
Fala Dan, blz?
Provavelmente sim, primeiro configure o Gradle em seu Eclipse como nesse tutorial (http://www.vogella.com/tutorials/EclipseGradle/article.html ). Logo depois é seguir a série colocando as libraries como se estivesse com o AndroidStudio. Abraço
Responder
Thiago Melo (1) (0)
10/11/2015
Thiengo, estou iniciando no desenvolvimento android e gostaria de uma dica de onde e por qual video seu começar.

Estou tendo dificuldades pois, a sua aula "Toolbar, Material Design Android - Parte 1" parece estar faltando  algum pedaço inicial, pois não estou conseguindo seguir as aulas quando eu executo a aplicação no emulador esta dando erro.
Responder
Vinícius Thiengo (1) (0)
14/11/2015
Fala Thiago, blz?
Veja primeiro como debugar os erros pelo LogCat (http://www.thiengo.com.br/entendendo-e-utilizando-o-a-classe-log-com-o-logcat-no-android ). Na época o ActionBarActivity ainda estava sendo utilizado, hj já é o AppCompatActivity, logo realize essa mudança no extends de suas Actities, pode ser esse tb o problema. Abraço
Responder
Rafael Mayer (1) (0)
25/08/2015
Muito bom o vídeo, mas aumente o volume do áudio no vídeos está muito baixo.
Responder
Claudson (2) (0)
06/08/2015
Thiengo,
Ao criar a activity ela extend a ActionBarActivitymas diz is deprecated e o nome está com o risco e n me deixa fazer o setSupportActionBar
Responder
Vinícius Thiengo (3) (0)
07/08/2015
Fala Claudson, blz?
Coloque para herdar de AppCompatActivity. Abraço
Responder
Claudson (1) (0)
07/08/2015
Muito Obrigado Thiengo, funcionou! :)
Responder
Eduardo (1) (0)
16/07/2015
Fala Thiengo blz?
Então, dei uma revirada nos seus videos e não achei nenhum que ensinava como configurar o botão back do android, estou com um problema nele que é quando eu aperto back ele destrói a atividade, gostaria que quando eu saísse a atividade desse um stop, vlww
Responder
Vinícius Thiengo (0) (0)
17/07/2015
Fala Eduardo, blz sim.
Vc diz parada no método onStop()? De qualquer forma, até onde sei isso não é possível, com uma Activity não, pois depois que vc deu o back, vc não tem mais controle da Activity a ponto de poder mante-la na pilha de Activities sendo que ela estava no topo anteriormente. Vc tem o onBackPressed (http://stackoverflow.com/a/18337567/2578331 ) no qual pode dar um override e mudar como será a volta para a Activity anterior. Se tiver de deixar algo rodando no background quando sai da Activity, utilize um Service para isso. Abraço
Responder
Danilo Furtado (1) (0)
15/07/2015
Thiengo, só uma Dúvida, esse material designer, qual o menor api ele suporta, tipo, posso desenvolver uma app com target de android 3.0 por exemplo ?
Responder
Vinícius Thiengo (0) (0)
16/07/2015
Fala Danilo, blz?
Na verdade hj o Google já disponibilizou a lib de suporte para aplicação do Material Design em APIs anteriores a API 21 (http://android-developers.blogspot.com.br/2015/05/android-design-support-library.html ). Porém ainda há algumas features que não estão disponíveis nesse lib de suporte, logo ainda dependemos de libs de terceiros que podemos encontrar, por exemplo, no Android Arsenal (https://android-arsenal.com/ ). E algumas dão ou não suporte para as APIs antigas que queremos que o APP rode, nesses casos o que devemos fazer é não chamar as entidades dessa feature sem suporte na API sendo utilizada, apenas rodar com o que é possível, pois dessa forma ainda teremos nossa APP rodando em APIs antigas, mesmo sem algumas features desligadas para não gerar exceptions. Então é, o suporte a versão 3.0 e abaixo tem dependendo da feature que quer utilizar. Abraço
Responder
wagner (1) (0)
13/07/2015
Thiengo, parabéns pelo material de ótima qualidade.  tenho uma dúvida relacionada a toolbar.  no meu recyclerview no evento onlongpress eu ativo uma toolbar com alguns botões  e tem um botão voltar, como eu pego o clica do botão voltar? Já tentei com onbackpres e com keydow mas nenhum funcionou, tem alguma idéia? grato.
Responder
Vinícius Thiengo (0) (0)
14/07/2015
Fala Wagner, blz?
O backButton que está utilizando é o convencional que é disponibilizado com o código abaixo?

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Com o código acima vc captura o clique no backButton no método onOptionsItemSelected(). Veja o código de volta desse script (http://www.thiengo.com.br/buscas-com-searchview-e-searchrecentsuggestions-material-design-android-parte-13 ). Abraço
Responder
henrique miller (2) (1)
17/06/2015
thiengo otimo video. baixei o projeto. mas, tentei importar o projeto no eclipse. mas os projetos estão vindo com a pasta src vazia. tem algum problema ao importar pro eclipese ou so pode ser usado no android studio?
Responder
Vinícius Thiengo (0) (0)
17/06/2015
Fala Henrique, blz?
Tente criando um projeto e depois e copiando e colando as entidades do AndroidStudio Project, pois se não me engano o Eclipse não vai realizar o import correto se o project não for um Eclipse Project. Abraço
Responder
Alexandre Ferreira (1) (0)
03/06/2015
Fala Thiengo, será que pode me dar uma ajuda no seguinte error : java.lang.NoClassDefFoundError: android/support/v7/appcompat/R$attr   at android.support.v7.widget.Toolbar. ... Estava utilizando um projeto no eclipse quando foi inserir a Toolbar apareceu este erro, e quando estou desenvolvendo no Android Studio acontece a mesma coisa e nao consigo utilizar o Toolbar. Tem alguma ideia do que seja , pois já procurei em varios tutorias e foruns e nada
Responder
Vinícius Thiengo (0) (0)
04/06/2015
Fala Alexandre, blz?
Verificou no gradle se as libs de suporte v4 e v7, como abaixo:

compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.android.support:support-v4:22.1.1'
Responder
Alexandre (1) (0)
05/06/2015
Thiengo blz, realizei o procedimento que você me informou mais mesmo assim não funcionou não sei mais o que fazer
Responder
Vinícius Thiengo (0) (0)
06/06/2015
Alexandre, faça o seguinte, baixe o projeto de exemplo que está disponível aqui no post e tente rodá-lo. Já tentou isso? Se mesmo assim não rodar atualize o Android Studio, digo, o SDK. Depois informe se passou, pois se o projeto de exemplo passar sem problemas, isso indica que foi alguma coisa em sua APP que vc esqueceu de colocar. Se mesmo assim não der, volte ae para darmos um deep look em seu project. Abraço
Responder
Alexandre (1) (0)
06/06/2015
Bom dia Thiengo, infelizmente mesmo com o seu projeto não rodou da o mesmo error: Android.support.v7.widget.toolbar
Responder
Vinícius Thiengo (0) (0)
06/06/2015
Alexandre, aparentemente é um bug na lib de support, veja esse link (https://code.google.com/p/android/issues/detail?id=78377 ). Principalmente com devices android com a versão 4.2.2. Se possível me envie seu projeto AS por email (thiengocalopsita@gmail.com) que quero dar uma olhada nesse problema, pois eu mesmo não tenho ele aqui. Abraço
Responder
30/07/2015
Olá Alexandre, para resolver seu problema segue o link (http://stackoverflow.com/questions/29025961/setsupportactionbar-toolbar-error ). Na sua Activity.java, apague a import android.widget.Toolbar   e substitua por: import android.support.v7.widget.Toolbar;  Espero ter ajudado. Créditos: Mohit Singh
Responder
Gabriel Vitor (1) (0)
24/05/2015
Eaii blz!!
Gostaria de saber se tem como eu fazer um link do meu aplicativo pra outro aplicativo instalado no meu celular (tipo: clicando em um botão o aplicativo me direciona direto para outro aplicativo)
Responder
Vinícius Thiengo (1) (0)
24/05/2015
Fala Gabriel, blz.
Dê uma olhada na resposta certa desse post (http://stackoverflow.com/questions/2780102/open-another-application-from-your-own-intent ), aparentemente é o mesmo script que está buscando. Abraço
Responder
Alexandre (1) (0)
22/05/2015
Fala Thiengo blz ? E o seguinte como faco para colocar uma imagem na Toolbar semelhante ao do material desing que tem algumas fotos e depois informações ?
Responder
Vinícius Thiengo (0) (0)
23/05/2015
Fala Alexandre, blz?
Vc diz iguais a dessa lib (https://github.com/ksoichiro/Android-ObservableScrollView )? Abraço
Responder
13/05/2015
Opa Thiengo,blz?
Só uma duvida, as cores do Dark Primary Color só funcionam no Lollypop ? Pois nas duas outras APIs que voce emulou a cor não foi alterada.
Obrigado.
Responder
Vinícius Thiengo (1) (0)
13/05/2015
Fala Andrea, blz?
Isso acontece pq somente a a partir da API 19 é que temos o Status Bar transparente e passível de alteração de cor. Abraço
Responder
Ismael (1) (0)
09/05/2015
fala thiengo parabéns pelo blog excelente material.
Responder
Jonatas Oliveira (1) (0)
30/04/2015
Aew Thiengo blz?
Cara muito útil um tutorial sobre material design em portugues! :D

Já consegui implementar tudo que queria, o problema agora esta nas sub-telas (telas filhas). Pois não consegui fazer aparecer a seta para voltar para tela anterior.
estou usando o getSupportActionBar().setDisplayShowHomeEnabled(true);
mas não parece nada la em cima. Tentei botar um parentActivityName no manifest mas da erro. Como resolvo isso nesse novo toolbar?
Responder
Vinícius Thiengo (0) (0)
01/05/2015
Fala Jonatas, blz sim.
Fez da seguinte maneira em sua Activity:

mToolbar = (Toolbar) findViewById(R.id.app_bar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setHomeButtonEnabled(true);
     getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Se mesmo assim não rodou, se possível coloque aqui o erro printado no LogCat depois de tentar parentActivityName. Abraço
Responder
wesley.c.reis (1) (0)
12/04/2015
Meus parabéns pelos videos, aprendo muito com seus materiais.
Você pretende fazer algum video, com ActionButtons aninhados, igual ao do google Keep. achei muito interessante, porém com material muito reduzido para implementar. Abraço a todos e boa noite.
Responder
Vinícius Thiengo (1) (0)
27/04/2015
Fala Wesley, quando for implementar o Floatting Action Button provavelmente sim, tem uma lib que faz isso (pelo menos uma). Abraço
Responder
03/04/2015
Eai Vinicius, eu queria que vc me explicasse como funciona pra fazer aquelas famosas introduções em que são separadas em três partes, o Telegram tem logo na primeira vez de uso, eu acho. Tambem queria saber como faz aquelas animações no layouts, só que aquelas do BomNegocio.apk, se n for pedir de mais da uma olhada e se puder me passe um link (n em inglês), mas acho que já pedi muitoo. eheh
Responder
Vinícius Thiengo (1) (0)
04/04/2015
Fala Richard, blz?
A introdução tem várias formas de se fazer, mas acredito que a tela de introdução não é algo somente estético, mt provavelmente ela está ali trabalhando como um padrão Proxy, onde ela permanece na tela até o conteúdo remoto ser carregado e poder ser apresentado para o usuário. Mas há sim APPs que mostram somente por estético, que acho uma ideia não mt boa, até pq vc somente atrasa o acesso do user ao conteúdo da APP. Mas enfim, vc pode colocar a Activity de abertura como sendo a Activity que tem essa fullscreen com o Logo da APP e algumas animações (se quiser), se quiser abrir essa tela somente na primeira vez que o usuário acessa a APP, vc pode utilizar um flag no SharedPreferences e verificar ele logo no onCreate() da Activity se a APP já foi aberta antes ou não, caso não vc apresenta a tela de entrada, coloca dentro de uma Thread de background o tempo que vc quer essa tela sendo apresentada, pode utilizar o SystemClock.sleep(5000) por exemplo dentro dessa Thread de background, assim que o tempo acabar vc entra em um runOnUiThread() e chama a próxima Activity (startActivity()). Se verificar que a flag acusa a APP já ter sido aberta, vc ali mesmo no onCreate() vai para a outra Activity.

No caso da Animação, conteúdo não sendo em inglês é dificil, os conteúdos que tenho em português para ti são um post da Caelum (http://blog.caelum.com.br/criando-animacoes-no-android/ ) e um post que fiz sobre objectAnimator (http://www.thiengo.com.br/objectanimator-no-android-aplicando-efeitos-nos-componentes-visuais ), porém vc terá de ter imaginação e criar o conteúdo animado com o ObjectAnimator (que é bem possível), porém com animação entre Activities utilizando entidades do Android API 19 ainda não tenho conteúdo, mas provavelmente colocarei nesses vídeos sobre MaterialDesign. Abraço
Responder
Felipe (1) (0)
03/04/2015
Excelente vídeo, muito bem explicado.

Parabéns.
Responder
01/04/2015
Thiengo como implementa o material design em APP para o Android 4.1.2
Responder
Vinícius Thiengo (3) (0)
01/04/2015
Fala Gabriel, blz?
Esse vídeo já mostra isso, continue seguindo que verá as outras entidades do Android API 21 sendo colocadas com support tb. Abraço
Responder
Leandrox364 (2) (0)
30/03/2015
show de bola aguardar os outros videos parabens.
Responder
Desenvolvedor Timbo (1) (0)
30/03/2015
Opa thiengo. beleza? então estou utilizando o Eclipse Adt e queria saber como eu faço para setar a lib de compatibilidade do toolbar no eclipse ? sera que eu jogo o na pasta Libis ?  aguardo resposta
Responder
Vinícius Thiengo (0) (0)
31/03/2015
Fala Timbo, blz?
N oEclipse vc terá um projeto com o nome appcompat-v7, se não me engano, ele é um projeto do tipo lib, logo em seu projeto vc clica com o botão direito nele > Properties > Android > Library > Add > então selecione a appcompat-v7. Deve funcionar, não sei mais como andas o Android no Eclipse. Abraço
Responder
Wasley (4) (0)
30/03/2015
Muito bom o vídeo. Como sempre ótimos vídeos.
Responder
lucasadorno16 (6) (1)
30/03/2015
Aguardava muito o vídeo sobre isso. Explica muito bem. Obrigado por ajudar milhares de pessoas a cada vídeo lançado.
Responder
João Faro (3) (1)
30/03/2015
Muito bom!! vlw.
Responder