Pular para o conteúdo principal

Android SDK Tools (r21) e suas novas ferramentas

Há pouca mais de uma semana, foi lançada a nova versão do Android SDK para o Jelly Bean, o Android 4.2. Com ele, também foi atualizada a versão do ADT (Android Developer Tools). As novas features são muito interessantes, agilizam o desenvolvimento e fornecem novos meios de combater a fragmentação de hardware da plataforma. Sendo assim, vou demonstrar algumas das principais novidades aqui neste breve artigo.

Novos Templates

Nas primeiras versões do ADT existia um número muito limitado de templates de interfaces gráficas que poderíamos utilizar. No Revision 20 já foram adicionados dois itens: uma interface máster-detail com uso de fragments e, uma tela em branco, somente com a barra superior e uma área central onde inserimos nossas widgets.

E, mais recentemente, na Revision 21, foram adicionados mais três templates muito úteis.

Um deles é uma tela de preferências. Segundo o comentário na classe PreferenceActivity gerada pelo ADT: uma preferenceactivity que apresenta um conjunto de configurações da aplicação. Em dispositivos handset, configurações são apresentadas em uma lista. Em tablets, configurações são divididas em categorias, com o cabeçalho das categorias mostrada a esquerda da lista de configurações. Veja uma representação na Figura 1:

Figura 1: template de configurações.

Outro template cria uma tela para visualização de imagem ou vídeo. Ela fica full-screen até que o usuário clique na tela, neste momento, a barra de status é exibida por alguns segundos. Veja na Figura 2 uma representação. Na Figura 3 o aplicativo criado com o template sendo testado em um Galaxy Ace e, na Figura 4, o instante em que o usuário tocar a tela do Ace.

Figura 2: representação

Figura 3: aplicativo

Figura 4: aplicativo após toque na tela.

E isso não é tudo. O próprio ADT já cria três classes auxiliares: SystemUiHider, SystemUiBase e SystemUiHiderHoneycomb. Com estas classes é possível mostrar e esconder certos componentes de UI que só estão presentes em versões mais recentes do sistema operacional Android.

Veja o que a documentação da classe SystemUiHider nos diz: Uma classe utilitária que ajuda a mostrar e esconder UI do sistema, como a barra de status e a barra de sistema/navageação. Esta classe utiliza técnicas de compatibilidade com versões anteriores, para garantir que dispositivos rodando qualquer versão do Android OS sejam suportados.

O último template refere-se a uma típica de tela de login, com um campo de usuário e senha e um botão para verificar a autenticidade do mesmo. Veja na Figura 5 sua representação:

Figura 5: template de tela de login.

O template é tão bem feito que a classe Acitivyt apresenta um esqueleto completo, com uma classe AsyncTask para uma possível verificação de senha mais demorada e utilização da ViewPropertyAnimator API, disponível a partir do Honeycomb MR2. Veja este código de animação abaixo:


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
 int shortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime);

 mLoginStatusView.setVisibility(View.VISIBLE);
 mLoginStatusView.animate().setDuration(shortAnimTime)
  .alpha(show ? 1 : 0)
  .setListener(new AnimatorListenerAdapter() {
   @Override
   public void onAnimationEnd(Animator animation) {
    mLoginStatusView.setVisibility(show ? View.VISIBLE
        : View.GONE);
   }
 });

 mLoginFormView.setVisibility(View.VISIBLE);
 mLoginFormView.animate().setDuration(shortAnimTime)
  .alpha(show ? 0 : 1)
  .setListener(new AnimatorListenerAdapter() {
   @Override
   public void onAnimationEnd(Animator animation) {
    mLoginFormView.setVisibility(show ? View.GONE
        : View.VISIBLE);
   }
  });
} else {
// The ViewPropertyAnimator APIs are not available, so simply show
 // and hide the relevant UI components.
 mLoginStatusView.setVisibility(show ? View.VISIBLE : View.GONE);
 mLoginFormView.setVisibility(show ? View.GONE : View.VISIBLE);
}


Editor de UI poderoso

Quando vamos editar um arquivo XML que representa uma Activity de nossa aplicação, podemos fazer isso via código ou, através de uma representação gráfica e com ajuda do drag-and-drop. Na nova versão do ADT esta ferramenta recebeu aporte de novas e interessantes features.

Quando optamos pelo Graphical Layout, agora temos uma opção que fica no canto superior esquerdo, chamado de “Configuration to render this layout with in Eclipse”. Dentro das opções listadas por esta ferramenta, podemos escolher “Preview Representative Sample”. Sendo assim, veremos o layout que estamos construindo em diferentes tipos representativos de telas. Veja a Figura 6:

Figura 6: Graphical layout.

Desta forma, fica muito mais fácil gerenciarmos nossa interface gráfica do usuário nas diferentes versões de tela que o Android possui. Além disso, esta feature apresenta outra opção valiosa. Na opção Preview Layout Versions veremos para quais versões de tela nós estamos criando um layout. Ou seja, suponhamos que no meu aplicativo eu tenha criado um layout específico com a pasta layout-v11. Vou ver no Graphical Layout a Figura 7:

Figura 7: Graphical layout com minhas versões de tela.

E não para por aí não. O Graphical Layout apresenta um ícone de um globo, onde podemos especificar para uma versão de tela específica qual a localidade que estamos simulando.



Criação de AVD´s

O processo de criação de um Android Virtual Device também sofreu mudanças. Agora, é possível indicar em qual aparelho ele se baseará. Veja a Figura 8 e a caixa de seleção Device:

Figura 8: Criação de AVD.

Além disso, o novo ADT ainda nos fornece ferramentas como o UI Automator Test Framework, uma ferramenta gráfica para scanear e analisar os componentes de uma aplicação Android, mais uma biblioteca com APIs para criar funcionalidades automatizadas de testes e uma engine para automatizar e rodar testes em vários dispositivos físicos.

E, finalmente, conta com um instalador de SDK com somente 1 clique, baixando todos os componentes do SDK, como Tools, Platform Tools, Eclipse ADT e imagens de sistema. Tudo isso de forma muito mais conveniente.

O próximo passo é só começar a desenvolver.

Comentários

Matheus Gomes disse…
Cara, sensacional... para quem não sabe design é uma mão na roda!
Yara Senger disse…
Parabens Ricardo! Muito legal o post!
Unknown disse…
Muito bom o post!! Parabéns!

Postagens mais visitadas deste blog

10 reasons why we love JSF

1. One-slide technology: it's so simple that I can explain basic JSF with one slide. 2. Easy to extend: components, listeners, render kit, Events, Controller, etc. 3. Real-world adoption: JBoss, Exadel, Oracle, IBM, ... 4. Architecture model: you can choose between more than 100 different architecture. 5. Open-mind community: using JSF you are going to meet very interesting people. 6. We are using JSF the last 5 years and we found very good market for JSF in Brazil 7. Progress: look to JSf 1.1 to JSF 1.2, JSF 1.2 to JSF 2.0. People are working really hard! 8. Many professionals now available 9. It's a standard. It's JCP. Before complain, report and help! 10. Ed Burns, spec leader, is an old Globalcode community friend! EXTRA: My wife is specialist in JSF. She's my F1 for JSF :) Nice job JSF community! -Vinicius Senger

Vem vindo novidade por ai... Minicurso de desenvolvimento iOS

Ola pessoal, Depois de uma conversa com a Yara, resolvemos colocar em prática uma idéia que já tinhamos a um tempo, que é aumentar as opções de mobilidade no portifólio da Globalcode e também da iniciativa Open4Education. E nesse caso estamos falando de um minicurso sobre desenvolvimento para iPhone e iPad. O objetivo desse minicurso vai ser mostrar que desenvolver para iOS não é tão complicado como se pode pensar e que não é preciso ter medo do Objective-C ! Serão algumas horas onde os alunos poderão entender os fundamentos da plataforma, como funciona o programa para desenvolvedores da Apple, preparação do ambiente e dos devices de teste e também um overview dos layers de desenvolvimento do iOS. Além disso, o objetivo também vai ser passar um pouco da minha experiência na "migração" que fiz de Java (seja SE, ME ou Android) para o novo mundo do Objective-C e Cocoa Touch. O material está no começo e ainda não temos uma data certa (só sabemos que a primeira edição desse minicu...

JavaMail: Enviando e-mail com Java

Introdução Além da necessidade de envio de e-mail ser comum a várias aplicações, foi a pergunta de um aluno da Academia Java ,  “Como enviar um e-mail com Java?”, que me motivou a escrever este post sobre JavaMail. JavaMail Para realizar o envio de e-mail por meio de uma aplicação Java, precisamos da biblioteca JavaMail, pois ela não é incluída no Java SE. A biblioteca está disponível em http://www.oracle.com/technetwork/java/index-138643.html . Neste download, além da biblioteca mail.jar que inclui a implementação completa da API e providers, também é disponibilizada a documentação da biblioteca ( javadoc ) na pasta docs , alguns exemplos na pasta demo e partes da implementação em lib . A forma mais simples de utilizar a JavaMail e incluir o mail.jar , porém para uma aplicação que só envia e-mail como o nosso exemplo, necessitamos apenas dos arquivos mailapi.jar e smtp.jar , economizando 177KB. Como a economia é pouca e as aplicações evoluem, vamos adicionar o mail.j...

Facelets uma forma mais ágil para construção de telas – Parte I

A construção de telas ou camada de apresentação em um sistema MVC seja web ou desktop é uma tarefa complexa e de extrema importância. Nesse post vou comentar e mostrar algum exemplo do Facelets como solução para os desafios existentes nessa etapa especificamente para web. Com a web cada vez mais presente em nosso dia-a-dia, um fato é que com isso nossos usuários tornam-se mais exigentes em relação a usabilidade, agilidade, performance ou de uma forma bem resumida “o usuário espera uma navegação simples e agradável aonde uma determinado tarefa possa ser concluída em poucos passos e em um curto espaço de tempo”. Atender as expectativas em relação ao que o usuário espera com o que realmente ele precisa, definir uma estrutura flexível a mudanças sem engessar o desenvolvimento, acessibilidade, portabilidade em múltiplos navegadores, tudo isso e muito mais, num prazo que quase sempre é apertado. Um outro ponto fundamental é manter o time motivado e produtivo em um ambiente que favoreça a...

JavaOne Brasil, dicas para submissão de palestras

Não quero parecer pretensiosa dando dicas para submissão de palestras para o JavaOne Brasil, mas sim repassar os tantos conselhos e sugestões recebidas pelos vetaranos do JavaOne: Bruno Souza e Leonardo Galvão que revisaram dezenas de submissões para o JavaOne e ajudaram a aprovar tantas palestras, e também misturar um pouco da minha experiência na seleção de palestras nos eventos realizados pela Globalcode e SouJava . 10 anos de JavaOne: http://www.globalcode.com.br/noticias/Globalcode10AnosNoJavaOne Os palestrantes ganham a entrada! A submissão pode ser feita em português! O passo mais importante para ser aprovado como palestrante no JavaOne é sem dúvida nenhuma submeter pelo menos uma palestra. Então, independente de qualquer coisa, participe, arrisque, divulgue.  Mas, se quiser aumentar as suas chances...   1) Leve a sério: peça para amigos fazerem uma leitura crítica do texto, e claro uma boa revisão ortográfica. 2) Submissão de várias palestras ou variações do ...

D.B.C.D. - Desenvolvimento baseado na "Caverna do Dragão"

Depois de muito tempo sem assistir este épico desenho, acabei topando com ele novamente enquanto esperava minhas crianças acordarem (é sério mesmo!). Assisti por 60 segundos e logo peguei meu laptop pois acabava de ter o meu último insigth do ano: você já imaginou ensinar desenvolvimento de software para aqueles personagens? Teríamos uma equipe PERFEITA, pense bem: - Bob: o jovem valente com um tacape aparentemente podereso, mas poucas vezes ajuda efetivamente. É o programador Ruby on Rails. - Daiana: teríamos aquela jovem com bastão mágico que pode dar longos pulos. Casa perfeitamente com metodologias ágeis e Sprint. - Erick: o bundão com aquele escudo. É o cara da auditoria PMI com pós em CMM. Sabe tudo de logs é expert em TXT. - Sheila: a fulana que tem a capa que pode sumir. Bem, essa nem precisa de explicação. Muitos programadores sofrem de síndrome de Sheila. - Presto: é o mágico que em situações extremas tenta tirar algo do chapéu, mas nunca funciona. Basicamente é...