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

2º Bate Papo do SP-GTUG - Divulgação

Pessoal, Para aqueles que já estiveram presentes nas atividades do SP-GTUG (encontros ou bate papos na Globalcode), e para os que ainda não puderam estar presentes, teremos um novo bate papo acerca de mais duas tecnologias do Google: AdSense e Python no GAE. Este será o nosso segundo bate papo do SP-GTUG, nos mesmos moldes dos minicursos da Globalcode . Local e data O bate papo acontecerá no dia 27/03/10, das 10:00 às 13:00 na Globalcode. Para fazer sua inscrição e participar acesse a home da Globalcode e vá até a parte de "Minicursos Gratuitos da Semana ". Conteúdo das apresentações Abaixo seguem as descrições passadas pelos palestrantes: Título: "Algoritmos em Python" Resumo: Python é uma linguagem considerada frugal, simples, sem ser simplória! Entenda como construir algoritmos ninjas com essa linguagem, adotada pela Google e pelo MIT. Veremos muito, muito código, desde algoritmos clássicos até tutoriais do

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

JSF 2 - Composite Components, você não precisa mais ser um ninja

Estamos em uma nova era da computação, os dados não estão mais localizados em um banco dentro de sua empresa, vivemos a explosão de redes sociais, informações são geradas a todo instante, e se torna essencial que sua aplicação conheça os serviços disponíveis na web e consumam suas APIs geralmente disponíveis por serviços REST. Legal, mas como ficam meus aplicativos Java EE neste novo cenário? Para quem vem acompanhando a evolução da plataforma, é notório que todo esforço vem sendo utilizado para aumentar a produtividade e a integração com novos serviços. Basicamente duas especificações surgem com muita força para atender este cenário, a JSR - 314 (JSF-2) e JSR - 311 (JAX-RS), neste post exploraremos a JSR-314 (JSF2) e sua nova forma de criar Composite Components. Uma das grandes queixas dos desenvolvedores JSF era a complexidade em criar composite components, era necessário um vasto conhecimento sobre o ciclo de vida de uma aplicação JSF. Agora, você não precisa ser mais um “ninja” em

Gosta de informática e sonha ser programador Java um dia ?

A Globalcode está procurando jovens que queiram ser programadores no futuro, para fazer parte de sua equipe de vendas e operacional na unidade Paraíso em São Paulo somente. O grande diferencial é o planejamento para carreira de programador. O planejamento de cursos do portifólio da Globalcode: Academia do Programador, Academia Java, Academia Web, Robótica, Eletrônica, etc, será realizado periodicamente de acordo com o desempenho e interesse individual. Atenção : Este não é um estágio para trabalhar com Java, são duas vagas CLT administrativas para pessoas que queiram ser programadores no futuro. Perfil : Conhecimentos de informática básica, saber lidar com pessoas e trabalhar em equipe. Deve ter concluído o ensino médio, ter boa escrita, ser organizado, responsável, comprometido e dinâmico. Interesse por computação, programação, internet, robótica, eletrônica,... Temos duas vagas para jovem-aprendiz abertas: 1) Setor operacional No dia a dia Serviços externos Controle de estoqu

JavaMail: Enviando mensagem HTML com anexos

Introdução Depois do post "JavaMail: Enviando e-mail com Java" , que apresentava como enviar um e-mail com Java, resolvi complementar a assunto apresentando como enviar uma mensagem formatada, em HTML , e também como realizar o envio de anexos. Bibliotecas Além da biblioteca JavaMail, veja mais no post anterior , é necessário incluir o JavaBeans Activation Framework (JAF), apenas se a versão utilizada for anterior ao JSE 6.0 , que já tem o JAF incluso. O JAF está disponível em http://www.oracle.com/technetwork/java/javase/downloads/index-135046.html , e neste download encontramos, alguns exemplos na pasta demo , documentação, incluindo javadocs, na pasta docs e a biblioteca activation.jar , que deve ser acrescentada no classpath da aplicação para versões anteriores ao JSE 6.0. Exemplo Primeiramente devemos realizar a configuração da javax.mail.Session e da javax.mail.internet.MimeMessage , estes passos podem ser vistos no post anterior . Agora vamos montar um

TDC INNOVATION lança University Pass

Modalidade de ingresso tem como objetivo ajudar na capacitação dos universitários Uma pesquisa realizada em 2020 pela Associação Brasileira das Empresas de Tecnologia da Informação e Comunicação (Brasscom) diz que até o ano de 2024 o Brasil precisará de cerca de 420 mil profissionais na área de Tecnologia da Informação. Porém, por ano, a mesma pesquisa diz que o país forma apenas 46 mil profissionais capacitados no nicho. Pensando nisso, para ajudar na formação e capacitação desses jovens profissionais, o TDC INNOVATION, segunda edição do ano do The Developer's Conference, lança o University Pass, modalidade de ingresso que possibilita aceso digital gratuito a todas as palestras do evento, ou com 50% de desconto para quem preferir ir pessoalmente. Com o tema central “Desafios para a criação do futuro Digital”, o TDC INNOVATION ocorrerá entre 1 e 3 de junho, de forma híbrida: presencialmente no Centro de Convenções CentroSul, em Florianópolis, e com transmissão simultaneamente pela