Índice:
- Joe Simpson (@kennydude) - Boid
- Christophe Versieux - BeTrains - SNCB Bélgica; HoloEverywhere
- Matthew Runo - Zappos
- Josh Burton - jRemote
O Android é executado em uma variedade de dispositivos, o que significa que também é executado em uma variedade de tamanhos e resoluções de tela. Muitas pessoas chamam isso de "fragmentação". Não importa o fato de eles estarem usando produtos projetados e desenvolvidos da mesma maneira há anos em seus computadores. Aparentemente, se tudo não é exatamente o mesmo, recebe o rótulo "fragmentação".
Existem diferentes maneiras de resolver os problemas que surgem quando você usa telas com diferentes tamanhos e densidades. A Apple possui listagens separadas para aplicativos projetados para o iPhone versus o iPad. A Microsoft cria um novo ecossistema para seus dispositivos de tela grande. O Android fornece uma maneira de os desenvolvedores fazerem o mesmo aplicativo funcionar de maneira diferente em telas diferentes. Há bons e maus em cada método, mas vamos nos concentrar no Android aqui.
No Android, os aplicativos podem ajustar o layout para diferentes tamanhos de tela e também para a resolução. Tudo isso é incorporado, mas existem algumas coisas que os desenvolvedores precisam declarar em seu código para fazer com que o aplicativo pareça bom. É importante lembrar que o tamanho e a densidade da tela mudarão a aparência do aplicativo. O DNA do Droid tem uma tela de alta resolução que o tablet Motorola XOOM, mas não queremos ver um layout de tablet para aplicativos na tela do tamanho de um telefone.
Um desenvolvedor precisa fornecer ativos (imagens) com qualidade suficiente para parecer nítido em alta resolução (não importa insanamente alta resolução) e não se esqueça de usar unidades de pixels independentes da densidade ao projetar seu layout. É isso que impede coisas como botões e outros controles de serem realmente grandes em telas de baixa densidade como o Galaxy S2, ou de serem realmente pequenas em telas de alta densidade como o DNA.
Parece complicado, mas a maioria dessas coisas é feita para você ao codificar um aplicativo. Tudo o que o desenvolvedor precisa fazer é fazer as declarações corretas e fornecer os ativos certos para suportar qualquer tamanho (físico e resolução) ou layout. Até vários aplicativos de layout, como o Google+, usam o mesmo código para cobrir todas as telas possíveis.
Não estamos tentando julgar os desenvolvedores aqui. Escrever aplicativos é difícil. Os desenvolvedores do Android estão pregando tudo isso desde o lançamento do Gingerbread, mas como é prático? Perguntamos a alguns desenvolvedores sobre o que eles tinham a dizer após o intervalo.
Mais: site para desenvolvedores Android do Google.
Pedimos a alguns desenvolvedores (grandes e pequenos) algumas perguntas básicas sobre o assunto.
- Quão difícil é aderir às diretrizes?
- Parece fácil no papel, mas existem problemas especiais que você já viu ou partes que o Google não abordou?
- Como isso afetou o tempo e os custos de desenvolvimento?
- Mais alguma coisa sobre o assunto que você gostaria de compartilhar?
Tentei tornar as perguntas o mais neutras possível, para não entrarmos nisso com algum viés. Na dúvida, você pergunta às pessoas que sabem, certo? Eu fiz meu quinhão de programação, mas codificar em Java e criar aplicativos Android é muito diferente de escrever código em C ou código de máquina ou até mesmo em Perl. Existem nuances que eu não entendo, mesmo que eu obtenha os métodos gerais de criação de um aplicativo.
Imagino que um bom número de vocês seja como eu e não conheça os meandros da criação de aplicativos para Android. Nós vemos apenas o que os desenvolvedores do Android dizem e eles facilitam o processo. Para eles, provavelmente é - eles escrevem essas coisas desde o início desde 2007. Vamos ver o que as pessoas que foram capazes de segui-las têm a dizer.
Joe Simpson (@kennydude) - Boid
Joe é membro do Team Boid e também publica aplicativos por conta própria. Ele (e o restante de sua equipe) é um ótimo exemplo de desenvolvedores independentes, apaixonados pelo Android, que criaram aplicativos incríveis.
Seguir as diretrizes é bastante difícil, especialmente se você deseja um aplicativo lean, mas as pessoas desejam compatibilidade retroativa. Uma das coisas mais irritantes é ver como algo se parece em d.android.com/design, mas nada sobre como realmente fazer isso.
Um ponto fraco é refrescante quando você não pode usar o GCM fisicamente devido ao Twitter e não deseja usar o PtR. Além disso, os aplicativos do Google estabelecem suas próprias diretrizes. Pegue o painel deslizante, por exemplo, o Google+ faz diferente do YouTube (embora eu saiba que a biblioteca de suporte provavelmente resolverá isso).
Além disso, você pode chegar a um ponto e não há documentação sobre algo (EdgeEffect, por exemplo).
Como estudante, os custos são algo que não pareço, e isso leva tempo, mas seus usuários vão amar você. Basicamente, os Shows ao vivo (ADiA, App Clinic, Horário comercial) são obrigatórios (infelizmente), embora não possam oferecer feedback sobre os aplicativos do Google.
Em breve, o Boid se tornará de código aberto (yay!) E você poderá encontrar o aplicativo no Google Play. Você também encontrará todos os aplicativos de Joe (há algumas jóias) aqui.
Christophe Versieux - BeTrains - SNCB Bélgica; HoloEverywhere
Christophe criou vários aplicativos Android, incluindo o BeTrains - SNCB Belguim - um aplicativo com um layout lindo que mostra o que pode ser feito com um aplicativo bem construído. Enquanto a maioria dos EUA nunca o usará (é um aplicativo de programação de trens para trilhos belgas), vale a pena instalar apenas para ver o quão bem é feito. O pessoal da Europa Ocidental certamente conhece esse.
Além disso, ele co-desenvolveu o HoloEverywhere, uma biblioteca que outros desenvolvedores podem usar para criar aplicativos no estilo Holo para Android 2.1 e superior. Com muitos telefones ainda executando o Gingerbread, esse é um verdadeiro prazer para os desenvolvedores que desejam manter seus aplicativos atualizados.
Não é nada difícil. A sério. A parte difícil vem quando o cliente pede para se afastar dessas diretrizes!
Lembro-me de um cliente que queria que eu colocasse guias na parte inferior da tela, botões do iPhone em todos os lugares, alternância no estilo do iPhone e esse projeto foi realmente difícil de alcançar e eu realmente perdi muito tempo e dinheiro nele.
Fiquei realmente zangado com ele quando ele perguntou todas essas coisas estúpidas, e ele apenas pensou que eu era um desenvolvedor preguiçoso.
Agora tenho muito contato com ele e estamos reescrevendo totalmente o aplicativo, criando códigos incríveis, removendo todos esses recursos inúteis e criando um aplicativo Android "puro". Os clientes e as empresas só precisam estar cientes dessas diretrizes, acredito firmemente.
Bibliotecas como ActionBarSherlock, HoloEverywhere (minha criação), UnifiedPreferences e SlidingMenu são realmente fáceis de usar e fornecem, em algumas linhas de código, uma incrível experiência do usuário.
O tempo e o custo, como eu disse, são minimizados seguindo as diretrizes do Google. Fragmentos e pastas de layout são realmente fáceis de usar (e mais importantes para reutilizar): um aplicativo para tablet apenas pega um pedaço do código no layout do telefone e nada deve ser reescrito. Pequenas alterações no aplicativo para telefone são refletidas imediatamente no aplicativo para tablet, pois o mesmo fragmento é usado.
Alguns projetos incríveis são criados pela comunidade, nem sempre pelo Google. Algumas pessoas muito ativas no Google+, como Roman Nurik (Google), Reto Meier (Google), Juhani Lehtimäki, Jake Wharton, Taylor Ling,.. (Eu sempre tenho medo de esquecer pessoas importantes) são muito instrutivas. Os desenvolvedores precisam saber onde procurar e o desenvolvimento do Android será fácil para eles!
Você pode encontrar o BeTrains no Google Play e deseja dar uma olhada no HoloEverywhere se estiver interessado no desenvolvimento do Android.
Matthew Runo - Zappos
Ao contrário de alguns dos desenvolvedores independentes menores com quem conversamos, também ouvimos Matthew na Zappos. A Zappos é uma corporação de varejo na web e provavelmente possui um orçamento dedicado ao design, tanto no site quanto em seus aplicativos. Também é uma empresa da qual compro regularmente, mas isso não teve influência e o Matthew não sabia que sou um cliente frequente quando ele se ofereceu.
Na Zappos, como somos varejistas, temos que nos ater, em primeiro lugar, à nossa própria marca. Maluco, divertido e um pouco fora da parede. Dito isso, nós dois acreditamos firmemente nas diretrizes de design do Android - e tudo o que fazemos na interface do usuário é retirado do espírito dessas regras. Há um ano, nosso aplicativo era basicamente uma porta iOS da forma como aparecia e funcionava. Hoje, é (eu acho) uma jóia do que você pode fazer no Android. Aderimos às diretrizes sempre que possível - e nossos designers trabalham a partir delas como ponto de partida.
As diretrizes de design não são tudo e terminam tudo - no final, elas estão lá apenas para tentar avançar no design de aplicativos Android, para que sejam mais consistentes. Descobrimos que a maioria das "novas" bibliotecas de código aberto comuns que usamos acabaram como parte das diretrizes (menu deslizante, crouton).
As diretrizes nunca devem ser um obstáculo. Certas coisas - navegação geral - precisam ser consistentes para que seu aplicativo "simplesmente funcione". Tudo o resto - comece com as diretrizes e execute o seu design. Queremos que nosso aplicativo seja o NOSSO APP - portanto, não podemos apenas fazer o tema holo da linha de base.
Este ano, começamos basicamente a partir de uma reescrita inicial do nosso aplicativo para trabalhar com fragmentos. Nos últimos 6 meses, trabalhamos duro para adicionar suporte de 7 "para tablets e, atualmente, trabalhamos com suporte de 10". A coisa mais difícil a fazer é testar em dispositivos, mas temos uma ótima equipe de controle de qualidade que ajuda nisso. Temos duas pessoas trabalhando em tempo integral no nosso aplicativo desde agosto, mais ou menos, antes disso era uma pessoa em período integral.
Acho que as diretrizes de design do Android nos ajudam a otimizar nosso processo - e, assim, reduzir os custos. Vamos ser sinceros, a maioria dos designers do iOS - por isso, ter um ótimo recurso como design.android.com é uma ajuda maravilhosa para que eles sejam iniciados no ecossistema Android.
Posso dizer que as opções de design da Zappos funcionam bem, e minha esposa tem um armário cheio de roupas, bolsas e botas que reforçam minha afirmação. Confira o aplicativo para Android no Google Play.
Josh Burton - jRemote
Josh é autor de vários aplicativos pequenos para Android, e seu aplicativo jRemote (é um controlador do popular programa jDownloader para PC) é um exemplo perfeito de como usar layouts para criar um aplicativo com ótima aparência no telefone e no tablet. Maximiza o uso da tela do dispositivo e fornece as informações que você está procurando exatamente como você esperaria.
A adesão às diretrizes de design é bastante direta, desde que você as siga desde o início. Desenvolver um aplicativo inteiro e, no final, voltar e tentar implementar fragmentos / layouts de tablet etc. será uma perda de tempo, esforço e frustração. Mas se você planeja seu aplicativo, desenvolve usando fragmentos desde o início e cria seus recursos para todos os intervalos de dpi corretos, isso facilita o desenvolvimento e você realmente não precisa gastar muito tempo pensando nas diretrizes. E se você ficar parado, os documentos de design estão a apenas um clique de distância. Eles são um ótimo recurso.
Realmente me frustra o fato de tantos dispositivos não terem layouts de tablet. Se seu aplicativo for criado usando fragmentos, a adição de um layout de tablet poderá ser feita em 30 minutos. Honestamente, é assim tão fácil.
Eu acho que para muitos desenvolvedores, eles não têm tablets para testar e usar o emulador pode ser uma dor. Mas as novas ferramentas ADT recém-lançadas facilitam muito. A visualização de várias configurações no editor de layout significa que você pode ver como é o seu layout em 5 a 6 tamanhos de tela diferentes, tudo de uma vez. E é rápido. É claro que você ainda precisará testar em um emulador / dispositivo eventualmente, mas definitivamente acelera o fluxo de trabalho.
O jDownloader é um programa útil para usar na área de trabalho, e o jRemote parece uma ótima maneira de controlá-lo. Se nada mais, faça o download no Google Play e veja como um aplicativo pode ser simples e bonito ao mesmo tempo.
Ouvimos muitos outros desenvolvedores que dizem as mesmas coisas. Estamos sem espaço aqui para listar todos eles. A essência de tudo isso é que, se você planejar com antecedência, as diretrizes para desenvolvedores do Android realmente funcionarão na maioria dos casos. É um prazer ouvi-lo e continuaremos a desfrutar de ótimos aplicativos e a apoiar desenvolvedores que trabalham duro.