Livro Android

Temas no Android: O que fazer se a Action Bar estiver nula.

Posted by rlecheta on outubro 07, 2016
Android, Livro Android, Tutorial / 2 Comments

Olá pessoal, recentemente um leitor da 4a edição do livro de Android veio tirar uma dúvida sobre um erro que acontecia com um exemplo do capítulo 4.

No caso a activity estava herdando de android.app.Activity.


public class AlgumaActivity extends Activity {

... código aqui

// dava erro nessa linha

getActionBar().setDisplayHomeAsUpEnabled(true);

}

O erro reportado foi que dava NullPointer ao acessar a action bar.

OK, mas porque isso acontece?

Na maioria das vezes, se a action bar está nula com certeza é a configuração do tema.

Olhando o styles.xml do meu colega, o tema do projeto estava configurado assim:

a

Vejam que está usando o tema AppCompat, que traz a compatibilidade para várias versões do Android. Este tema substitui os temas Holo, Material, etc e atualmente é recomendado pelo Google. Isso é o esperado mesmo e está correto, pois o Android Studio atualmente gera o projeto desta forma.

O problema é que na época que escrevi a 4a edição do livro, os exemplos eram gerados de outra forma pelo Android Studio, inclusive no github da 4ed está assim:

https://github.com/livroandroid/4ed/blob/master/capitulos/cap04-activity/HelloActivity/app/src/main/res/values/styles.xml

b

Veja que o tema que usei na época da 4ed foi o Holo, que é um específico para Android 3 (API Level 11). Enfim, mas isso está explicado no livro e não quero demorar aqui…

O livro 5a ed que está mais atualizado já traz os exemplos todos com o tema de compatibilidade, portanto este problema acontece apenas nos exemplos da 4 ed, pois o Android Studio mudou a forma de gerar o código dos projetos.

Bom, existem 2 formas de resolver este problema:

1) Caso você queira deixar o código das classes de Activity iguais estavam nos exemplos da 4ed, é preciso alterar o tema do projeto para Holo ou Material, conforme o github da 4ed. Isso é feito alterando o arquivo styles.xml conforme o exemplo que mostrei acima do github.

Basicamente, se o seu tema herda de Holo ou Material, você está usando um tema nativo. Então vc deve sempre usar a android.app.Activity como a activity mãe, e neste caso você pode utilizar o método getActionBar() que retorna a action bar nativa android.app.ActionBar.

Era dessa forma que era feito nos primeiros exemplos da 4 ed. Somente no capítulo de Action Bar que começo a explicar o tema AppCompat de compatibilidade.

2) A segunda forma de resolver, e talvez a recomendada é atualizar o código de todas as Activities para herdar de android.support.v7.app.AppCompatActivity, pois é a activity do tema de compatibilidade. Atualmente o Android Studio gera o projeto com o tema AppCompat, como vimos no styles.xml do meu colega logo no início deste post. Isto indica que o projeto usa o tema de compatibilidade.

Esta configuração de tema atualmente é a indicada. Porém como o fonte da 4ed está antigo, faça as seguintes alterações no código:

  • Altere todas as activities do projeto para herdar de AppCompatActivity.
  • Altere a chamada do método getActionBar() por getSupportActionBar(), pois este último vai retornar a action bar de compatibilidade, que é a classe android.support.v7.app.ActionBar.

Como o Android Studio atualmente gera o projeto com o tema de compatibilidade, na 5ed do livro todos os exemplos já estão assim.

É isso pessoal, este breve post foi só para explicar uma pequena diferença entre a 4ed e a 5ed. Como vimos o Android Studio mudou a forma de gerar os códigos do projeto e isso afetou um pouco, e essas coisas de tema e compatibilidade costumam ser complicadas para quem está estudando Android pela primeira vez :-).

Independente de como estão os códigos-fontes da 4ed e 5ed, estes conceitos é bom conhecer.

Qualquer dúvida perguntem, abs.

Tags:

github 5ed Livro Android atualizado com PreferenceFragmentCompat

Posted by rlecheta on maio 22, 2016
Android, Livro Android / No Comments

Olá pessoal,

Postei no forum dos livros uma explicação sobre o PreferenceFragmentCompat, e atualizei o git do livro com exemplos.

Mais detalhes aqui.

Livro Android Essencial

Posted by rlecheta on março 15, 2016
Android, Livro Android, Livros / 20 Comments

Olá pessoal,

Foi lançado meu livro Android Essencial  :-).

Esse post é para explicar meu objetivo ao escrevê-lo e qual a diferença com o Livro Android 5ª  edição “a bíblia”.

Android Essencial (384 páginas) é um resumo do livro Google Android, 5ª edição (1.072 páginas).

“Para quem tem o Google Android 5ª edição, não precisa ler esse. Como eu falei o essencial é um resumo da 5ª edição.”

capa_android_essencial

Para começar a explicação, vamos ler o texto que está na capa do livro:

O Android é o sistema operacional móvel mais utilizado no mundo, e o objetivo deste livro é apresentar ao leitor os conceitos essenciais do desenvolvimento de aplicativos para Android, por meio de uma explicação simples e prática.

Android Essencial é um resumo do livro Google Android, 5ª edição, com o objetivo de prepará-lo rapidamente para o mercado. É para leitores que não querem rodeios e precisam aprender logo, seja por questões de estudos ou por uma necessidade de trabalho.

Este livro utiliza o Android Studio, é focado nas boas práticas de interface do Google e do Material Design, e oferece uma abordagem prática direcionada ao desenvolvimento de aplicativos. Durante a leitura você vai desenvolver um aplicativo completo, com boa usabilidade de interface e com acesso a web services e banco de dados, além de utilizar recursos de multimídia e mapas.

O livro também apresenta capítulos resumidos dos principais conceitos da arquitetura do Android, como notificações, intents, broadcast receivers, services, alarmes, mensagens de push, câmera e fotos.

Depois de ler o livro Android Essencial você terá um bom entendimento sobre o desenvolvimento de aplicativos para Android.

O que me levou a escrever o livro foram várias coisas:

  1. Eu precisava de uma forma rápida de treinar novos integrantes da Livetouch. Penso que o livro Google Android 5ª edição precisa ser lido por alguém que queira apavorar no desenvolvimento de apps, mas por ter + de 1.000 páginas ele não era um curso relâmpago, como muitas vezes tenho necessidade. O livro Android Essencial surgiu para isso, penso em usá-lo para treinar rapidamente os novos recursos da empresa, assim como usar em cursos pessoais, cursos na Novatec, e até como guia na Pós Graduação de Dispositivos Móveis e Computação em Nuvem que ministro na Universidade Positivo.
  2. Por ser um resumo do Google Android 5ª edição, o livro é essencial para aprender Android rapidamente, pelo menos o básico e pode ser usado como guia em cursos. Também foi uma ideia da editora Novatec.
  3. O livro Android Essencial tem um custo mais baixo, então também tivemos a ideia de oferecer uma opção de custo mais acessível para quem não pode comprar a 5ª edição.
  4. Outro fator que me levou a escrever, foi ter identificado que muitas pessoas, inclusive devs bons de Android não chegam a ler o livro 5ª edição inteiro. Eu fiz capítulos avançados sobre Threads e várias coisas que percebo que muitos devs não chegam a ler. O mesmo acontece com capítulos como Bluetooth, Gestos, Wear, etc.. É o tipo de assunto que o leitor pode ler ou pesquisar quando ele tiver a necessidade (quando for usar na prática).. mas muitas vezes o que acontece é que o leitor precisa aprender o essencial que é: Instalar Android Studio, criar um projeto e executar no Android/Emulador, criar interfaces (formulários, listas), web services, banco de dados, vídeo, mapa, e é isso!
  5. Sabendo esse básico do desenvolvimento já é suficiente para muitos devs, principalmente aqueles que não vão a fundo. Esse é o caso daquela estudante que precisa fazer o TCC correndo, vai estudar Android rápido e talvez nunca mais.

Creio que é isso pessoal.

Em minha opinião, se você quer um livro de custo mais acessível e quer aprender o básico rápido (android studio, criar telas, listas, web services, banco de dados, mapas, GPS, vídeo, foto, push, etc) e dar um tapa nos conceitos principais (intents, services, receiver, notifications), esse livro é um bom ponto de partida.

Depois de ler o livro Android Essencial você terá um bom entendimento sobre o desenvolvimento de aplicativos para Android, e então você decidirá o caminho a seguir!

Se seu objetivo foi aprender o “essencial” e se sentir satisfeito com o conteúdo, ótimo :-). Penso que vai ser o caso de muitos estudantes que precisam fazer o TCC :-). Mas se você for um desenvolvedor que vai trabalhar com Android todos os dias, recomendo ir mais a fundo. Tendo essa necessidade, você poderá complementar a leitura com o livro Google Android 5ª edição, ou a própria documentação oficial.

Lembre-se: O livro Android Essencial (384 páginas) é um resumo do Google Android 5ª edição (1.072 páginas).

Livro Google Android 5ª edição

Posted by rlecheta on novembro 26, 2015
Android, Livro Android, Livros / 104 Comments

Olá pessoal, foi lançado o livro Google Android 5ª edição 🙂

Esta edição foi lançada (5 meses depois do lançamento da 4ª), e este post é só para tranquilizar quem possui a 4ª edição.

Quem acompanhou o processo de escrita do livro sabe, que um livro de +- 1.000 páginas demora bastante para sair do forno, e na reta final do lançamento (2 semanas antes) teve o Google I/O 2015. Neste evento o Google lançou a lib do Material Design.

Então nas últimas 2 semanas do lançamento da 4ª edição, foi uma correria para eu atualizar o livro e felizmente deu tempo de atualizar muita coisa, como por exemplo:

  • Explicações de Material Design
  • Layout com Tabs
  • Floating Action Button (FAB)
  • SnackBar
  • Animações de transições entre activities

Enfim, é a última vez que atualizo antes do Google I/O rsrs..

Mas nessa atualização de última hora, ficaram dois assuntos de fora, pois não tive tempo.

1ª) Navigation Drawer (menu lateral). Na 4ª edição foi explicado um fragment que gerava o menu lateral. Este fragment foi baseado no template que o próprio Android Studio criava na época.

Na 5ª edição foi alterado para usar o NavigationView, que é o novo componente do Google para criar o menu lateral.

Mas não se preocupe, pois esse componente é muito simples e fiz um tutorial para você entender ele aqui. Assim você não perde nada 🙂

NavigationView – A nova view para criar o Navigation Drawer

2ª) A outra alteração na verdade é uma “adição” de conteúdo. No final do capítulo 15 adicionei uma explicação referente a como criar animações na toolbar durante a rolagem da lista (algo bem comum nos aplicativos atualmente).

Estou falando destas animações na toolbar quando você rola a tela para cima e para baixo:

Este item é um conteúdo novo, portanto não descarta nada do que você aprendeu na 4ª edição.

Sobre estas técnicas de rolagem do Material Design, fiz um tutorial passo a passo bem simples que mostra como aplicá-las em uma tela com uma lista de planetas.

Então recomendo você ver esse post abaixo para complementar seus estudos e aprender à criar estes efeitos. Se você leu meu livro deve estar com um conhecimento bom de Android, então vai tirar este tutorial de letra.

GDG DevFest Sul 2015 – Animações na Toolbar


Bom pessoal, não quero me estender muito, pois foi só isso que mudou na 5ª edição.

Quando fui fazer uma revisão para uma nova impressão do livro, acabei escrevendo demais e o número de páginas do livro mudou. O resultado foi que a editora teve que lançar uma nova edição.

Então quem comprou a 4ª edição, podem ficar tranquilos, pelos motivos já explicados acima.

As vezes é complicado acompanhar tantas mudanças, mas fazemos o possível 🙂

E quem tem o livro sabe onde encontrar o código-fonte… Então qualquer dúvida é só dar uma espiada no fonte dos carros da 5ª edição que você vai ver o projeto completo lá 🙂

Qualquer dúvida, estou a disposição como sempre.

abraços

NavigationView – A nova view para criar o Navigation Drawer

Posted by rlecheta on novembro 23, 2015
Android, Livro Android / 27 Comments

Olá pessoal

No livro Google Android 4ª edição mostrei como fazer o Navigation Drawer (menu lateral) usando um fragment, que foi baseado no próprio fragment que o Android Studio gerava como template ao criar um projeto.

10.002-parte1

No Google I/O 2015 o Google lançou a lib do Material Design e dentre os novos componentes, foi criada a classe NavigationView, que facilita justamente criar este menu lateral.

Usar esta classe não requer prática nem habilidade, e você verá como é simples neste post.

Caso queira ver a explicação direta do Google, no canal do Android Developpent Patterns foi disponibilizado um vídeo explicando como utilizar o NavigationView, recomendo assistir, este canal é show!

Mas vamos explicar passo a passo aqui. Bom, algo simples que você pode fazer é utilizar o próprio wizard do Android Studio e escolher o template do Navigation Drawer conforme esta figura.

Screen Shot 11-23-15 at 04.00 PM

Ao gerar o wizard, você verá que tudo continua como expliquei no livro. É usado o DrawerLayout na raiz do layout e dentro dele o NavigationView (que substitui o fragment que mostrei no livro 4ª edição).

A seguir um exemplo do NavigationView.

Screen Shot 11-23-15 at 04.12 PM

O Navigation view possui 2 propriedades simples para configurar o menu lateral.

A 1ª propriedade é a app:headerLayout=”@layout/nav_header_hello_nav_drawer”, é utilizada para definir o layout do cabeçalho do menu. É possível criar o layout que você quiser aqui, e um bom exemplo é o layout que o próprio Android Studio gera. Na figura abaixo este header é aquela parte verde.

Screen Shot 11-23-15 at 04.17 PM

A 2ª propriedade do NavigationView é o app:menu=”@menu/activity_hello_nav_drawer_drawer”, que define um arquivo de menu (formato XML) para compor as opções do menu lateral.

Ficou tudo muito simples, pois este arquivo de menu possui o mesmo formato do arquivo de menu que usamos para a action bar / toolbar.

Faça os seus testes, e confira o wizard do Android Studio!

Mas e o projeto dos Carros do livro Google Android 4ª edição é possível atualizar para utilizar o Navigation View?

Claro que sim, demora uns 5 minutos se você seguir este tutorial.

1) Altere o arquivo de layout activity_main.xml para declarar o NavigationView. Ele vai entrar exatamente no lugar daquele fragment que mostrei no livro.

Sabemos que o NavigationView vai usar um arquivo de header e menu.

O arquivo de header é o mesmo nas 4ª e 5ª edições:

Já o arquivo com as opções de menu é este aqui aqui. Simples não é?

No código da BaseActivity, é só mudar a implementação do método setupNavDrawer() para usar o NavigationView, segue código-fonte atualizado.

Veja que a forma de tratar eventos é simples, pois é só implementar o método onNavDrawerItemSelected().

	private void onNavDrawerItemSelected(MenuItem menuItem) {
        switch (menuItem.getItemId()) {
            case R.id.nav_item_carros_todos:
                // tratar os eventos aqui
                break;
            case R.id.nav_item_carros_classicos:
                // tratar os eventos aqui
                break;
            case R.id.nav_item_carros_esportivos:
                // tratar os eventos aqui
                break;
            case R.id.nav_item_carros_luxo:
                // tratar os eventos aqui
                break;
            case R.id.nav_item_site_livro:
                // tratar os eventos aqui
                break;
            case R.id.nav_item_settings:
                // tratar os eventos aqui
                break;
        }
    }

É só isso, usar o NavigationView para criar o menu lateral é bem simples, espero que este post tenha ajudado quem quiser entender um pouco mais sobre este componente, e também os leitores do livro Google Android 4ª edição.

Lembre-se que o código-fonte do livro 5ª edição está no github, então é só consultar o app dos Carros sempre atualizado :-).

https://github.com/livroandroid/5ed

Como compilar os projetos dos livros de Android

Posted by rlecheta on setembro 25, 2015
Android, Livro Android / 9 Comments

Olá pessoal, segue dicas de como compilar os projetos baixados dos meus livros de Android, ou de qualquer outro 🙂

Depois de entrar na área de download do livro, baixe os projetos.

http://livroandroid.com.br/site/pages/downloads.php

Você verá uma pasta com vários capítulos assim:

Screen Shot 09-25-15 at 01.38 PM

Então digamos que você queira abrir o projeto de exemplo do capítulo 7.

No Android Studio, selecione o wizard > File > Open > e selecione o local do projeto.

É aqui que está o problema, e as vezes o pessoal se atrapalha para compilar o projeto.

Dependendo de suas configurações, como a versão do Android SDK e Build-Tools que você fez o download, é necessário fazer alguns ajustes no projeto.

img_150925_0144

Na janela Messages podemos ver o seguinte erro:

Error:Gradle 2.4 requires Android Gradle plugin 1.2.0 (or newer) but project is using version 1.0.1.
Please use Android Gradle plugin 1.2.0 or newer.

img_150925_0145

Para solucionar este problema abra o arquivo build.gradle que fica na raiz do Android Studio e atualize a seguinte linha para a última versão:

Qual versão deve ser? Bom, provavelmente o Android Studio vai mostrar o assistente de código e vai te ajudar. Só clique no assistente que ele deve corrigir.

classpath 'com.android.tools.build:gradle:1.3.0'

a

Outro problema frequente pode ser a versão do SDK Build-tools, que é a ferramenta utilizada para compilação do projeto. Podemos ver na figura abaixo que meu build-tools está com a versão 23.0.1.

@Obs: sempre deixe atualizado estes pacotes;

a

Isso significa que no arquivo app/build.gradle preciso colocar a versão 23.0.1 no campo buildToolsVersion. Somente assim o projeto compilará.

b

Outro ajuste que muitas vezes é necessário é configurar a API Level target do projeto.

Isso é feito nos atributos compileSdkVersion e targetSdkVersion.

Conforme mostra o print abaixo, esses atributos estão configurados com a API Level 21 (Android 5.0). Você verá que o Android Studio sinaliza em um tom de amarelo que existe uma nova versão do Android.

img_150925_0153

Como depois do livro Android 4ª edição foi lançado o Android 6.0 (API Level 23), podemos ajustar no arquivo app/build.gradle a API Level target para compilação.

Depois dos ajustes para API = 23, o resultado fica assim:

b

Outra coisa que pode acontecer, é ter sido lançada bibliotecas mais atualizadas do Android.

Isso acontece muito com as bibliotecas de compatibilidade e Google Play Services. Portanto, quando estiver lendo o livro você pode atualizá-las, caso queira.

Lá na parte das dependências, geralmente essas bibliotecas de compatibilidade seguem a nomenclatura do build-tools. Então se o build-tools está na versão 23.0.1, estas libs devem estar com a mesma versão.

Veja na figura:

c

Mas para ter certeza qual a versão da lib de compatibilidade, basta ver no SDK Manager qual versão você fez o download, lá na pasta Extras. Podemos ver que baixei a versão 23.0.1 ,e por isso no arquivo app/build.gradle a configuração é feita com a mesma numeração.

d

Não é o caso deste projeto que escolhi, mas as vezes podem ter mais libs, como a do Google Play Services.

Por exemplo, no cap 23 do livro tem o projeto de exemplo com Mapas e GPS, que usa o Google Play Services.

Ao abrir o projeto, o arquivo app/build.gradle  está assim:

Podemos ver que o Android Studio sugere que a versão da lib seja atualizada. Então basta clicar no assistente do editor, ou utilizar a tecla de atalho Ctrl+Enter para efetivar a alteração.

e

Espero que estas dicas ajudem o pessoal que está começando com Android a compilar os projetos já existentes.

Esses problemas são comuns, pois ao desenvolver o projeto você faz a compilação com a versão das libs que existem na época. Porém como as atualizações são constantes, temos estes problemas.

São coisinhas chatas do Android, mas simples de resolver e que logo agente se acostuma 🙂

Qualquer dúvida é só entrar em contato!

Lançamento – Livro Google Android 3ª edição

Posted by rlecheta on março 25, 2013
Android, Livro Android / 4 Comments

Olá pessoal,

Foi lançado o livro Google Android 3ª edição 🙂

O livro possui 6 novos capítulos e um resumo das principais mudanças podem ser vistas aqui.

http://www.livroandroid.com.br/changelog.htm

Dentre elas tem: Maps API V2, GCM(push), Sensores, Gestos, Bluetooth, Voz, NDK.

Acompanhe os próximos lançamentos e apoie o trabalho na página facebook.com/ricardolecheta

capa_3edicao2

Livro Android – Google Maps Android API v2

Posted by rlecheta on dezembro 30, 2012
Android, Livro Android / 5 Comments

Olá Pessoal,

Desde que o Google lançou o Google Maps Android API v2 (03/Dez/2012), ele deixou deprecated a classe MapView (V1), e isso está causando problemas para os leitores do livro Google Android, e estou recebendo muitos emails sobre isso.

O problema é que o livro diz para gerar a chave para o MapView neste link.

http://code.google.com/intl/pt-BR/android/maps-api-signup.html

Antigamente este link abria o site para gerar a chave do MapView, mas agora ele abre o site do Maps API V2, e naturalmente a partir daqui, tudo da errado para os leitores, ou para quem está seguindo qualquer tutorial sobre o MapView.

Mas como contingência, ainda é possível gerar a chave do MapView, o V1, neste link.

https://developers.google.com/maps/documentation/android/v1/maps-api-signup?hl=pt-BR

E a documentação do V1 pode ser encontrada aqui:

https://developers.google.com/maps/documentation/android/v1/?hl=pt-BR

A Versão 1 dos mapas vai continuar funcionando nos aplicativos, embora o Google recomenda migrar para a Versão 2, e logo não será mais possível gerar estas chaves do V1.

É isso por hoje, e se quiser ver a documentação da nova versão V2 está aqui:
https://developers.google.com/maps/documentation/android/

Feliz Ano Novo a todos !