introdução a api de baixo nível do java me

Post on 06-Jun-2015

1.661 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Erisvaldo Gadelha Saraiva Júnior

Introdução a API de Baixo Nível

JavaME

Contato: erisvaldojunior@gmail.com

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!

top related