Olá a todos!!!
Durante os posts anteriores estive estabelecendo uma visão geral do desenvolvimento com Android, mas até agora todos os assuntos abordados servem tanto para Layouts como para Jogos. A partir deste post é que as diferenças entre ambos começarão a aparecer. Vamos lá!
Quando estamos desenvolvendo aplicações em layout, atribuímos elementos a um objeto do tipo Layout como, por exemplo, um LinearLayout. Mas, para jogos desejamos ter uma superfície de desenho em que possamos exibir e animar os gráficos do jogo.
Existem dois tipos de superfícies de desenho: Uma View e uma Surface View. A diferença entre ambas é que, na primeira alternativa, o desenho continua sendo processado quando a aplicação é pausada, e a segunda estabelece uma ligação direta com a tela de desenho e pode ser controlada por uma thread.
Obviamente, para jogos a segunda opção é muito mais interessante. Uma surface view oferece possibilidades inclusive de trabalhar com a GPU (embora que, para desenvolver um projeto 3D, seja necessário trabalhar exclusivamente com a NDK).
O ponto fraco da surface view é, obviamente, o aumento da complexidade do código ao se utilizar threads. Muitas vezes o código deverá ser planejado visando evitar problemas de colisão entre as threads, mas nada que o java não ofereça saídas elegantes.
A forma como escrevemos o back buffer, ou seja, a superfície contendo todos os elementos que desenharemos no frame correspondente é oferecido pela classe Canvas do Android. Essa classe oferece um apanhado de diversas formas primitivas para desenho (pontos, retângulos, linhas, paths) e suporte a desenho de bitmaps, dentre outras coisas.
O Android também oferece uma classe para tratamento de texto chamada Typeface. Essa classe transforma strings de modo fácil em uma fonte TrueType inserida na pasta Assets. Um aspecto importante a se ressaltar é que todo tipo de asset e resource (músicas, sons, ttf, imagens) devem ser decodificadas via código para poderem ser processadas devidamente no jogo.
Vamos aproveitar o restinho do tópico para falar sobre implementação de músicas no Android. As classes responsáveis pelo tratamento de músicas e sons são, respectivamente, MediaPlayer e SoundPool. A diferença entre ambas está nas funcionalidades. A sound pool possui foco no controle de canais diferentes e de múltiplos sons tocando ao mesmo tempo, enquanto a media player é mais adequada para arquivos de áudio mais longos. Particularmente, gostei mais de trabalhar com a MediaPlayer, apesar de ter ouvido outros desenvolvedores que preferiram a SoundPool.
Aqui finalizo a minha visão geral sobre a API Android. Para os desenvolvedores interessados, esses tópicos apresentaram um importante overview das dificuldades e facilidades a serem encontradas no processo. Para fechar o tópico, gostaria de chamar a atenção para um dos arquivos criados quando iniciamos um novo projeto em Android. Estou falando do Android Manifest!
Esse arquivo XML representa as configurações gerais do projeto. Nele, encontramos qual imagem será usada para representar a aplicação no menu, a versão mínima suportada pela aplicação, qual é a versão da API usada, o nome da aplicação, dentre outras coisas. Esse arquivo também é responsável por conter as permissões que deverão ser pedidas ao usuário para se acessar os recursos do aparelho, como bluetooth, wi-fi e o power manager. Neste arquivo também inserimos todas as activities do projeto.
Bem, por hoje é só....
SEE YOU NEXT MISSION
Nenhum comentário:
Postar um comentário
Obrigado por deixar a sua participação!