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

Facelets ainda mais divertido! Parte II

De volta ao Facelets , na primeira parte mantive o foco na utilização de templates e técnicas de reutilização visando maior agilidade para desenvolver telas com JSF , mas o Facelets vai bem além disso! Nesse post vou comentar e mostrar um pouco sobre a criação de componentes UI (User Interface) usando xht ml - na minha opinião esse é o grande diferencial da tecnologia. Com esse recurso é possível customizar / padronizar componentes usando xhtml + tags JSF + JavaScript + Css, sem código Java. A ideia é bem próxima ao Tag File em uma rápida comparação com JSP (JavaServer Pages), mas no caso do Facelets feito de uma forma ainda mais simples e com aderência a (infra)estrutura do JSF. Vou descrever o mesmo cenário da primeira parte, um sistema composto por vários cadastros ( C reate R ead U pdate D elete). Pensando especificamente em cada formulário, usando como exemplo um rascunho ou protótipo para o cadastro de Fornecedores, podemos assumir o seguinte formato: campos para preenchi...

Devo fazer um curso ou ler um livro?

Acredito que todos os instrutores ou professores, independentemente da área, escola ou centro de treinamento, já devam ter recebido essa pergunta alguma vez na vida: devo fazer um curso ou ler um livro? Para responder a essa pergunta, precisamos avaliar os prós e contras de cada opção. Trabalho com treinamento há algum tempo e, hoje, recebi essa pergunta de um aluno. Não adianta responder a ou b sem argumentar, demonstrando as opções conforme a situação do aluno. O conteúdo, a forma de transmissão e a capacidade de assimilação do indivíduo são chaves para haver benefício maior de aprendizado. Tanto em um bom curso quanto em um bom livro, o conteúdo é a premissa básica . Por conteúdo entendemos: se está organizado; se respeita pré-requisitos; se promove o aprendizado guiado e incremental; se aborda de forma satisfatória os principais pontos; se tem bom balanço entre teoria, exemplos e prática (favorecendo exemplos e prática); se tem como premissa a acessibilidade possível (e cabível) pa...

Hackeando o Prezi com Robot, Socket e Android

O Prezi é uma ferramenta online para construção de apresentação multimídia semelhante ao famoso Power Point, porém, através de templates prontos e animações bem trabalhadas, o Prezi consegue dar uma dinâmica e uma qualidade visual muito maior. Mas mesmo com toda esta propaganda inicial me sentia desconfortável com uma situação do Prezi: necessitaria estar perto do computador ou do notebook para ficar trocando os slides, quer dizer, dando mais um passo na animação construída na ferramenta. Isso pesa muito quando temos um descendente de italiano (meu caso) que fala muito com as mãos e não consegue ficar parado durante a palestra. Desta forma decidi “hackear” o Prezi. Vale dizer que este termo é confundido com o termo “Crakear”, que, neste caso, quer dizer pessoas que invadem ou roubam dados digitais com objetivo de destruir sistemas ou de obter lucro de forma ilícita. O Hacker é o “nerd do bem”!. Inicialmente tentei mudar o aplicativo que podemos baixar do Prezi e passar...

Globalcode no Facebook

As redes sociais estão em alta faz tempo, diversos artigos e blogs falando sobre a extinção da comunicação via e-mail e as novas gerações dialogando somente através de instant messenger, orkut, facebook, twitter... e nós, jovens de 30 anos ficando ultrapassados ainda viciados naquela nova forma de comunicação, o e-mail! Já faz tempo que entendemos os valores das redes sociais, especialmente do twitter. Fazia tempo que pensamos em investir um tempo para criar as páginas para a Globalcode no facebook. Junto com a Ana Abrantes começamos a criar um usuário Globalcode http://www.facebook.com/globalcode que administra várias páginas! Depois criamos as página para os principais cursos da Globalcode e também para a iniciativa Open4Education, e estamos trabalhando a todo vapor para aumentar a integração com nosso site e com o blog. Colocamos o botãozinho "Curtir" ou "Like" nos cursos, ou seja, a partir da página do curso você pode "Curtir" no facebook nos seus c...

O que é Lógica de programação?

Este é o segundo de uma série de posts voltados aos leitores do blog que estão dando início à carreira de desenvolvimento de software. O assunto de hoje é a lógica de programação. Para ler antes: Entendendo como funciona a programação de computadores: linguagens de programação, lógica, banco de dados A lógica de programação é um pré-requisito para quem quer se tornar um desenvolvedor de software, independente da linguagem de programação que se pretende utilizar. Mas o que é de fato a Lógica de Programação e como saber se eu tenho esse pré-requisito? A lógica de programação nada mais é do que a organização coerente das instruções do programa para que seu objetivo seja alcançado. Para criar essa organização, instruções simples do programa, como mudar o valor de uma variável ou desenhar uma imagem na tela do computador, são interconectadas a estruturas lógicas que guiam o fluxo da execução do programa. Isso é muito próximo ao que usamos em nosso cotidiano para realizar atividad...