introdução a api de baixo nível do java me
TRANSCRIPT
Org
aniz
e w
ith
Se
ctio
ns
Objetivo Desenvolver aplicações para dispositivos móveis com interfaces arrojadas, através do uso da API de Baixo Nível do JavaME.
Imagens do Mobile Ticket Viewer, aplicação de Mobile Ticket desenvolvida pela Avaty! Tecnologia.
Roteiro de Aula
Introdução a API de Baixo Nível do JavaME
A API de
Baixo Nível
Indo para a Prática
Técnicas Avançadas e
Exemplos Adicionais
API de Baixo Nível
Descrição das Classes e como usá-las
A API de baixo nível consiste, basicamente, na classe Canvas e classes auxiliares (como Graphics, Image, Font). No MIDP 2.0 ou superior, sua classe derivada, GameCanvas, bem como as classes que compõem a Game API, também são consideradas de baixo nível.
Estrutura de classes do MIDP
Estrutura EXPANDIDA de classes do MIDP
Cla
sse
Can
vas
O que é a classe Canvas? Canvas é uma classe abstrata que deve ser especializada para a confecção de uma tela em baixo nível.
As classes que herdam de Canvas DEVEM implementar o método paint(), responsável por desenhar a tela.
As classes que herdam de Canvas PODEM implementar o método keyPressed(), responsável por verificar se uma determinada tecla foi pressionada.
Cla
sse
Can
vas
Como desenhar usando Canvas? O método paint() recebe como argumento uma instância de Graphics, com a qual é possível desenhar na tela.
Graphics possui diversos métodos para desenhar na tela, tais como: drawImage(), drawRect(), fillRect(), drawString(), etc.
Cla
sse
Can
vas
E quanto aos diversos tamanhos de tela? A altura e a largura da tela podem ser obtidas pelos métodos getHeight() e getWidth(), respectivamente.
Todos os desenhos devem ser posicionados de acordo com as dimensões da tela (posições relativas), nunca com números fixos (posições absolutas).
Cla
sse
Can
vas
Como capturar as teclas pressionadas? Qualquer tecla que o usuário pressionar pode ser tratada pelo método keyPressed(), que recebe um inteiro como argumento indicando o código da tecla pressionada.
PROBLEMA: as “Soft Keys” não possuem constantes definidas em Canvas, ou seja, o código das teclas varia de aparelho para aparelho.
A classe Canvas possui uma série de constantes que referenciam os códigos das teclas do aparelho.
Essas constantes devem ser usadas em detrimento do inteiro correspondente porque o seu valor pode variar de um aparelho para o outro.
Teclas em Canvas
Indo para a Prática
Construindo uma interface com a API de Baixo Nível
Primeiro exercício:
SPLASH SCREEN
Código Splash Screen
Âncoras especificam o posicionamento da imagem relativo ao ponto (X, Y) no qual se deseja inserí-la na tela. Nesse caso, a imagem está sendo centralizada nesse ponto.
Como construir um menu elegante para o meu
jogo ou aplicativo?
Segundo Exercício
Sprites são a solução.
Sprites são criados a partir de imagens que possuem um ou mais frames. Os Sprites podem ser animados, rotacionados, espelhados, etc.
Sprite é uma classe da Game API do MIDP 2.0
Como adicionar um Sprite no Canvas?
Crie uma nova instância da classe Sprite;
Defina a posição do mesmo através dos métodos defineReferencePixel() e setRefPixelPosition(); Desenhe o Sprite na tela, através do método paint(); Você poderá alterar o frame do Sprite a qualquer momento através dos métodos nextFrame(), prevFrame() e setFrame().
Construtor da classe Sprite
Use Canvas para representar a tela, o método drawString() para os textos e represente o background e cada botão como uma instância de Sprite.
Por fim, implemente o método keyPressed() de forma a navegar pelo menu. Note que basta mudar o frame da opção selecionada e definir o frame dos demais como sendo o inicial.
Vamos ao desafio!
Você é a capaz de construir
o menu acima?
Técnicas Avançadas e Exemplos Adicionais
Técnicas Avançadas para a criação de aplicações profissionais
» Os dispositivos móveis possuem telas com vários tamanhos e resoluções;
» A API de baixo nível do JavaME não possui
suporte nativo a redimensionamento de imagens;
» É necessário realizar esse redimensionamento “na unha” ou, ainda, oferecer imagens de diferentes tamanhos e utilizar a mais adequada para a tela do aparelho.
DIFERENTES TELAS
Cada imagem da aplicação pode estar disponível em três tamanhos, para telas pequenas, médias e grandes. Por exemplo: 128x160 (Tela Pequena), 176x208 (Média) e 240x320 (Grande); Ao iniciar a aplicação, obtém-se a altura e a largura da tela e, a partir dessas, carrega-se as imagens adequadas para o tamanho de tela específico;
No caso do background, pode-se redimensionar a imagem logo após obter-se a altura e largura da tela do aparelho, assegurando que o mesmo irá preencher toda a tela.
Diferentes Telas: Solução Proposta
Para garantir a portabilidade, faz-se necessário a adoção de uma das seguintes soluções para tratar as diferenças dos códigos das SOFT KEYS entre os dispositivos: 1. Usar Commands caso não haja necessidade de formatação específica para os botões
inferiores; 2. Detectar, em tempo de execução, o fabricante do aparelho e, assim, configurar os
valores adequados; 3. Definir diretivas de pré-compilação de forma a gerar JARs específicos para cada família
de aparelhos, cada qual com os valores corretos das Soft Keys (J2ME Polish faz esse trabalho).
? E quanto a fonte… Como posso mudar?
BITMAP FONTS são a solução!
What’s Your Message? OBRIGADO!