Ponto V!

Home Android Criando uma view de desenho no Android
Maicris Fernandes
Criando uma view de desenho no AndroidImprimir
Escrito por Maicris Fernandes

Prezado leitor,

O objetivo deste artigo é mostrar como criar uma tela de desenho baseada na classe View, a qual servirá de base para a criação de jogos para o sistema Android.

A classe View é responsável por prover uma interface de desenho e detecção de eventos. Existem vários métodos que podem ser sobrescritos, entretanto, existe um particularmente interessante para o desenvolvimento de jogos: o método onDraw.

O método onDraw nos provê um objeto da classe Canvas, o qual nos permite desenhar primitivas e bitmaps em nossa tela.

O exemplo desenvolvido neste artigo foi implementado em Eclipse Juno com ADT Plugin v.21 e Android SDK 4.2 (API 17).

Passo a passo: Implementação

Inicialmente crie um projeto com as seguintes configurações:

clip_image002

Nas demais telas usamos as configurações padrão do Plugin.

Será gerado automaticamente o arquivo MainActivity.java, localizado na pasta src do projeto, dentro do package br.com.pontov.view criado. Segue sua implementação automática:

clip_image003

Adicione a classe Tela baseada em View, como segue:

clip_image004

Dica: visando facilitar a digitação de códigos, ao começar a digitação da palavra View pressione Ctrl + Espaço e selecione a classe View na lista. Com isto o código vai auto-completar, e será executado automaticamente o import da classe.

Com o cursor dentro da classe Tela criada, selecione no menu Source – Override/Implement Methods. Localize e marque o método onDraw(Canvas) e clique em Ok.

clip_image006

Altere o código do método onDraw como segue:

clip_image007

O método drawRGB da classe Canvas (linha 29) pinta toda a tela de desenho com uma cor definida pelas três constantes de cor RGB. Em nosso exemplo estamos pintando a tela de vermelho.

Por fim, devemos configurar nossa Activity para que carregue como seu conteúdo a tela que criamos. Para tanto, declare um objeto que implementa a classe Tela no escopo de MainActivity (linha 11), e altere o código do método onCreate, como segue:

clip_image008

Na linha 16 instanciamos o objeto tela passando como parâmetro de construção o Context da aplicação, que é a própria Activity, usando this.

Na linha 17 usamos o método setContentView passando como parâmetro nossa tela criada definindo que ela será o conteúdo visível da aplicação.

Rodando o projeto temos o seguinte resultado:

clip_image010

O que vem a seguir?

Agora que temos nossa tela de desenho podemos usar o objeto canvas recebido no método onDraw para desenhar primitivas e imagens em nossos jogos.

Em nosso próximo tutorial faremos um estudo mais aprofundado da classe Canvas e seus métodos.

Até a próxima!

Código fonte

download


Comentários (17)
  • Matheus  - Muito bom
    avatar

    Muito bom , Parabéns !

  • Tiago Araujo Rodrigues  - Duvida
    avatar

    Olá,

    Há pouco tempo comecei a estudar (por conta) a arte da programação, tenho uma visão voltada para o desenvolvimento mobile e web, em especial a jogos, já li diversos artigos do Ponto V e gostei muito.

    Minha duvida fica por conta da linguagem que eu devo me especializar, sempre ouvia falar que era nescessario aprender java para programar para Android, e java também é bem utilizado na web, então de inicio pensei ser uma ótima escolha e até iniciei meus estudos nessa linguagem.

    Mas ao ler alguns comentarios daqui, vi que o mesmo escritor que disse que no futuro java pode ser uma boa, nos comentarios (que são de um bom tempo depois da postagem), o mesmo disse que não vale a pena pensar em java e os beneficios do c++ eram muito superiores, mas ele falava no desenvolvimento para desktops e plataformas de jogos.
    E também vi que era possivel desenvolver em c++ para Android.

    Agora ficou minha duvida, como programador iniciante, é recomendado eu continuar com os estudos em java? C++ realmente oferece muitos beneficios mesmo para desenvolvimento mobile(em geral)? Me recomendam alguma coisa (livro, materia, estudo, ou qualquer coisa para me auxiliar em minha escolha).

    Agradeço a atenção,

  • tiago santos  - Scroll Game
    avatar

    Olá pessoal sou leigo no desenvolvimento de jogos em Android e estou estudando por conta e gostaria da ajuda de vocês.

    Qual é a melhor forma de fazer um scroll de uma cena no meu jogo.

    Vou desenhar a mão os cenários e haverá objetos que podem ultrapassar o limite da tela. E não sei qual é o limite que posso disponibilizar de pintura na tela de uma vez.

    Se puderem me ajudar fico grato.

  • Neto  - Não!
    avatar

    C++ é bom pra desktop. Para mobile não compensa, primeiro que você ainda vai precisar do java, a NDK do android é semelhante a do java, na qual se cria uma "shared/dynamic Load' Library e chama ela a partir do código java. A própria google fala que com c++ sua aplicação não vai aumentar a velocidade instantaneamente. Enfim, c++ é bom, mas cada linguagem no seu nicho. Quer investir em outra linguagem fora java para mobile e desktop ? Aprenda c#, no windows é uma maravilha (segundo dizem) e pra mobile tem o xamarin/mono for droid. É isso.

  • Anônimo
    avatar

    C++ é a unica linguagem no mobile que lhe permite portar o seu jogo para praticamente todos os mobiles sem precisar usar ferramentas de terceiros. Faça em Java e fique preso ao Android.

    Faça em C# e fique preso ao Windows phone.

    Faça em C++ e o céu é o limite, quer dizer nem ele, naves espaciais também usam C++.

  • Fernando Freire
    avatar

    Como faço para desenvolver em C++ para Android?

  • ViniGodoy
    avatar

    Você deve usar o Android NDK:
    https://developer.android.com/tools/sdk/ndk/index.html

    Ou algum framework que use C++ e integre com Android, como a UDK ou QT.

  • diogo vecchiati  - SurfaceView
    avatar

    Muito bom o posto, mas esse modelo não é muito recomendado pela especificação do android. As classes de View não possuem foco em animações + interatividade, seria algo usado mais pra desenhar coisas como graficos de relatorios ou outras coisas que não utilizem tanto processamento. Pra jogos 2d o recomendado é extender SurfaceView no lugar da View. http://developer.android.com/guide/topics/graphics/2d-graphics.html

  • Felipe  - Agradecimento
    avatar

    :lol: Valeu mesmo, me ajudou bastante

  • Jv
    avatar

    Muito bom saber disso. Mas essa ndk é apenas para desenvolver bibliotecas em C++ para android ou eu posso desenvolver uma aplicação completa nela.

    Outra coisa estive lendo e vi algumas pessoas falando que ela tem um problema de compatibilidade com a arquitetura, que pode dá problemas em alguns processadores. Isso confere?

    Muito obrigado!

  • Jv  - re:
    avatar
    ViniGodoy Escreveu:
    Você deve usar o Android NDK:
    https://developer.android.com/tools/sdk/ndk/index.html

    Ou algum framework que use C++ e integre com Android, como a UDK ou QT.

    Muito bom saber disso. Mas essa ndk é apenas para desenvolver bibliotecas em C++ para android ou eu posso desenvolver uma aplicação completa nela.

    Outra coisa estive lendo e vi algumas pessoas falando que ela tem um problema de compatibilidade com a arquitetura, que pode dá problemas em alguns processadores. Isso confere?

    Muito obrigado!

  • ViniGodoy
    avatar

    Pode desenvolver aplicações inteiras. Mas não recomendo. Se vai desenvolver para Android, use o Java.

    Sobre o que falaram, confere sim. Como toda aplicação C++, deve-se cuidar muito para se ter uma aplicação 100% multi-plataforma. Por isso, se for optar por C++, recomendo FORTEMENTE que você use um framework multiplataforma no lugar do NDK puro.

  • JV
    avatar

    Muito obrigado!
    Que framework vc recomendaria?

  • ViniGodoy
    avatar

    Se for para games, use a Unity (mesmo não sendo em C++). Se for para aplicações, eu recomendo o QT.

  • JV
    avatar

    Muito obrigado Vini.

  • Igor Mamedes  - ótimo tutorial!
    avatar

    Muito obrigado, tem sido de grande ajuda esses exemplos simples e comentados, estava encontrando uma certa dificuldade mas agora tudo ficou mais claro.

Escrever um comentário
Your Contact Details:
Gravatar enabled
Comentário:
[b] [i] [u] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch::(:shock:
:X:side::):P:unsure::woohoo::huh::whistle:;):S:!::?::idea::arrow:
Security
Por favor coloque o código anti-spam que você lê na imagem.
LAST_UPDATED2  

Busca

Linguagens

Twitter