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

24
Erisvaldo Gadelha Saraiva Júnior Introdução a API de Baixo Nível JavaME Contato: [email protected]

Upload: erisvaldo-junior

Post on 06-Jun-2015

1.661 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Introdução a api de baixo nível do java me

Erisvaldo Gadelha Saraiva Júnior

Introdução a API de Baixo Nível

JavaME

Contato: [email protected]

Page 2: Introdução a api de baixo nível do java me

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.

Page 3: Introdução a api de baixo nível do java me

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

Page 4: Introdução a api de baixo nível do java me

API de Baixo Nível

Descrição das Classes e como usá-las

Page 5: Introdução a api de baixo nível do java me

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

Page 6: Introdução a api de baixo nível do java me

Estrutura EXPANDIDA de classes do MIDP

Page 7: Introdução a api de baixo nível do java me

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.

Page 8: Introdução a api de baixo nível do java me

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.

Page 9: Introdução a api de baixo nível do java me

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).

Page 10: Introdução a api de baixo nível do java me

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.

Page 11: Introdução a api de baixo nível do java me

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

Page 12: Introdução a api de baixo nível do java me

Indo para a Prática

Construindo uma interface com a API de Baixo Nível

Page 13: Introdução a api de baixo nível do java me

Primeiro exercício:

SPLASH SCREEN

Page 14: Introdução a api de baixo nível do java me

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.

Page 15: Introdução a api de baixo nível do java me

Como construir um menu elegante para o meu

jogo ou aplicativo?

Segundo Exercício

Sprites são a solução.

Page 16: Introdução a api de baixo nível do java me

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

Page 17: Introdução a api de baixo nível do java me

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

Page 18: Introdução a api de baixo nível do java me

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?

Page 19: Introdução a api de baixo nível do java me

Técnicas Avançadas e Exemplos Adicionais

Técnicas Avançadas para a criação de aplicações profissionais

Page 20: Introdução a api de baixo nível do java me

» 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

Page 21: Introdução a api de baixo nível do java me

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

Page 22: Introdução a api de baixo nível do java me

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).

Page 23: Introdução a api de baixo nível do java me

? E quanto a fonte… Como posso mudar?

BITMAP FONTS são a solução!

Page 24: Introdução a api de baixo nível do java me

What’s Your Message? OBRIGADO!