A popularidade do jQuery vem da redução significativa da quantidade de código necessária para desempenhar tarefas assíncronas e manipular o DOM. O novo projeto open source Android Query (AQuery) objetiva fazer o mesmo para os desenvolvedores que trabalham com Android. O exemplo a seguir está disponível no site do projeto e dá uma ideia da redução do código obtida com o AQuery:
Antes:
Depois:
O AQuery simplifica a chamada aos tratamentos de eventos. Em vez do desenvolvedor construir uma interface ou classe anônima, basta que escreva corretamente o nome do método de evento:
aq.id(R.id.button).clicked(this, "buttonClicked");
A fragmentação, causada pelos diferentes tamanhos de telas e versões de APIs no Android, dificulta o desenvolvimento para os dispositivos. O AQuery resolve alguns desses problemas encapsulando as partes que mudam em métodos ou classes. Por exemplo, o método aq.hardwareAccelerated11() verifica se o dispositivo suporta a API na versão 11 e permite habilitar a aceleração por hardware se for apropriado.
Quando se trabalha com diferentes tamanhos de telas, muitas vezes se inicia criando uma versão para tablet e então se remove ou reorganiza os controles até que encaixem em uma tela de celular. Desta forma, é necessário inspecionar visualmente a árvore de controles que foi criada no arquivo AXML, antes de tentar manipular os códigos-fonte. O AQuery permite que fazer verificações chamando métodos encadeados; por exemplo:
aq.id(R.id.address).text(name).background(R.color.red).textColor(R.color.black).enabled(true).visible().clicked(this, "addressClicked");
Se os endereços dos controles não existirem, serão ignorados todas as atribuições e tratamentos de evento seguintes. Dessa forma a depuração do código fica mais difícil, mas em compensação reduz-se drasticamente o número de linhas necessárias para criar o método onCreate().
O AQuery também facilita o processo de requisições HTTP assíncronas, ele suporta facilmente operações POST simples e multipartes; também pode aceitar dados binários, e em JSON, HTML e XML. Inclui também suporte diferenciado para imagens, em que apenas uma linha pode ser usada para baixar uma imagem, fazer cache e carregar a imagem em um controle.
Os vários releases do AQuery estão disponíveis na seção de downloads do projeto. Veja também a documentação básica.