Você está na página 1de 4

DESENVOLVIMENTO PARA DISPOSITIVOS MVEIS 1.

OBJETIVO
Aprender a manipular imagens dentro de um formulrio (Form).

ROTEIRO 06

2. BASE TERICA
2.1 Imagens
A especificao MIDP determina que a implementao dever ser capaz de manipular Imagens PNG, o que no ocorre em todos os celulares. Alguns trabalham com JPG, outros com GIF, BMP, e at mesmo PNG sem compactao, porm muito raro se encontrar a especificao de cada aparelho para isso, o que torna muito difcil a programao com imagens quando no usado o padro. Para construir uma imagem pode se utilizar as seguintes declaraes import javax.microedition.lcdui.Image; : Image im1 = new Image(); im1 = createImage("/arquivo.png"); Image im2 = new Image(); im2 = createImage(byte[] dados, int offset, int tamanho); O primeiro construtor busca o arquivo indicado pelo nome na pasta /res, de sua aplicao no caso de uso do emulador, quando ele compilado e empacotado, a imagem empacotada junto com o programa. O segundo construtor obtm a imagem de um Arrray de Bytes, partindo da posio offset, at o tamanho indicado. Essas imagens podem ser Mutveis ou Imutveis. As mutveis podem ser modificadas pelo Objeto Graphics, obtido pelo mtodo getGraphics(). Porm, esses dois construtores citados acima geram imagens imutveis. Para se criar imagens mutveis deve-se usar o seguinte mtodo. public static Image createImage(int largura, int altura) Imagens passadas para Alerts, ChoiceGroups, ImageItems ou Lists devem ser Imutveis. Imagens imutveis podem ser criadas a partir de outras imagens mutveis: public static Image createImage(Image imagem) Imagens em MIDP 2.0 podem ser criadas a partir de pores de outras imagens j existentes: public static Image createImage(Image image, int x, int y, int largura, int altura, int transformacao)

2.2 ImageItem
Mostra a instncia de uma Imagem dentro de um form. Para tal, preciso existir previamente um objeto Image. Este item possui um label, um texto alternativo e pode ser posicionado segundo um layout: ImageItem(String Label, Image imagem, int Layout, String texto_alt); Os layouts so constantes da classe, e podem ser: LAYOUT_DEFAULT, LAYOUT_LEFT, LAYOUT_CENTER, LAYOUT_RIGHT, LAYOUT_NEWLINE_BEFORE e LAYOUT_NEWLINE_AFTER (os dois ltimos existentes apenas no MIDP 2.0). Exemplo: Image img = new Image.createImage(/foto.png); ImageItem imgItem = new ImageItem(Foto , img, ImageItem.LAYOUT_DEFAULT, form.append(imgItem);

Alt Text);

PRAT_PDM_06.doc - 20/4/2006 2:08

Prof. Dalton Vinicius Kozak

1/3

Desenvolvimento para Dispositivos Mveis

Roteiro 06

3. SEQNCIA DA AULA
O aluno dever montar um aplicativo que apresenta algumas imagens na tela e nos elementos de um "choice group". Para cada opo selecionada do "choice group", uma determinada "cara" dever ser apresentada, como mostrado abaixo. O professor fornecer as figuras, mas o aluno poder utilizar outras.

Para montar tal aplicativo, as principais aes esto indicadas na figura abaixo.

PRAT_PDM_06.DOC - 20/4/2006 2:08

Prof. Dalton Vinicius Kozak

2/4

Desenvolvimento para Dispositivos Mveis

Roteiro 06

PRAT_PDM_06.DOC - 20/4/2006 2:08

Prof. Dalton Vinicius Kozak

3/4

Desenvolvimento para Dispositivos Mveis

Roteiro 06

O cdigo utilizado est realado em cinza na tabela abaixo. public void startApp() { initialize(); // Define emoo/cara padro como indiferente... EscolhaEmocao.setSelectedIndex(1, true); Image img = get_caraIndif(); String msg = "indiferente"; caraEmocao.setImage(img); caraEmocao.setLabel("Minha cara quando estou " + msg); // Classe annima para adicionar um "receptor" de eventos. // Toda vez que uma emoo selecionada, a cara muda. ItemStateListener listener = new ItemStateListener() { public void itemStateChanged(Item item) { if (item == EscolhaEmocao) { Image img=null; String msg="..."; switch (EscolhaEmocao.getSelectedIndex()){ case 0: img=get_caraFeliz(); msg = "feliz"; break; case 1: img=get_caraIndif(); msg = "indiferente"; break; case 2: img=get_caraTriste(); msg = "triste"; break; default: img = null; } caraEmocao.setImage(img); caraEmocao.setLabel("Minha cara quando estou " + msg); } } }; // Registra recpetor de eventos form1.setItemStateListener(listener); }

4. EXERCCIO FINAL
Baseado no exemplo desenvolvido aqui, monte uma pequena galeria de arte para trs pintores, cada um com trs obras. Use um "choice group" para selecionar o pintor, e apenas um quadro deve ser apresentado por vez: utilize, por exemplo, um boto comando para alternar entre as imagens de cada pintor.

PRAT_PDM_06.DOC - 20/4/2006 2:08

Prof. Dalton Vinicius Kozak

4/4