foto-topo-imagens

Agora irei falar sobre algo que deixará os nossos MIDlets com um pouco mais de vida: Imagens. Imagens são algo indispensável para aplicativos sejam eles para Desktop, Web ou mobile.

Em Java ME existem duas formas de se trabalhar com images:

  • Criando imagens diretamente no MIDlet (no braço!)
  • Utilizar imagens como um recurso

Nesse post não irei trabalhar com a primeira opção, então iremos utilizar imagens já criadas por outros aplicativos.

A primeira coisa que precisamos é de uma imagem. Para isso, pegue uma imagem qualquer, de preferência .PNG como está estabelecido na documentação oficial, e coloque dentro da pasta res que está dentro da árvore de diretórios de seu projeto no Eclipse – ver figura abaixo.

Pasta res

Pasta res

Para fazer isso basta copiar e colar a imagem dentro da pasta.

Agora crie um MIDlet com o nome de ExampleImage. Adicione um Display, um Form e um novo atributo do tipo Image. Faça tudo como nos outros posts. O código completo pode ser visto abaixo.

import java.io.IOException;

import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class ImageExample extends MIDlet
{

	private Display display;
	private Form myForm;
	private Image img;

	public ImageExample()
	{
		display = Display.getDisplay(this);
		myForm = new Form("Image Example");

		// Para criar uma imagem temos que realizar uma operação de
		// I/O, por isso a necessidade de um bloco try...catch
		try
		{
			// Aqui nós pedimos um recurso, nesse caso uma imagem
			img = Image.createImage("/img01.png");
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}

		// Como Image extende Item utilizamos um simples append() em myForm
		myForm.append(img);
	}

	protected void destroyApp(boolean arg0) throws MIDletStateChangeException
	{
		// nada aqui ainda...
	}

	protected void pauseApp()
	{
		// nada aqui ainda...
	}

	protected void startApp() throws MIDletStateChangeException
	{
		display.setCurrent(myForm);
	}

}

Rode o exemplo e voilá, temos um MIDlet que apresenta uma imagem.

ExampleImage em ação

ExampleImage em ação

Agora vamos as explicações de como conseguirmos nossa imagem.

A primeira diferença que você pode ter percebido foi a necessidade de um bloco try…catch quando “criamos” nossa imagem. Ele é necessário pois estamos realizando uma operação de I/O (entrada/saída) e todo tipo de operação que possa dar errado precisa ser envolvida por um bloco try…catch (Java ME ainda é Java 😉 ).

A segunda diferença é que nós realmente não “criamos” uma imagem. Não usamos um construtor padrão como em Form, mas obtemos nossa imagem a partir de um método estático da classe Image, Image.createImage(String name), onde a String representa o caminho completo para a nossa imagem, com a extensão e tudo. Como exemplo, olhe o trecho de código abaixo:

img = Image.createImage("/img01.png");

Podemos perceber que a nossa imagem está dentro na raiz de res, por isso usamos ‘/’ + ‘nome completo do arquivo’. Se nossa imagem estivesse em outras pasta dentro de res teríamos que colocar o caminho completo para a imagem. Caso movêssemos nossa imagem para dentro de outra pasta, por exemplo ‘imgs’ (ainda dentro de res pois uma imagem é um recurso e todo recurso deve estar dentro dessa pasta) o código para obter a nossa imagem ficaria assim:

img = Image.createImage("/imgs/img01.png");
Imagem dentro de uma subpasta de RES

Imagem dentro de uma subpasta de RES

Agora é com vocês. Tentem utilizar imagens da forma como fiz aqui ou utilizando um dos outros método estáticos disponíveis. Uma outra coisa legal é utilizar imagens com a classe ChoiceGroup.

Até a próxima!

Anúncios