[J2ME] Criando uma splash screen

Há tempos que estava devendo um post novo aqui no blog. Voltando agora, na categoria “rapidinhas” um exemplo bem prático de como criar uma splash screen usando J2ME.

A splash screen nada mais é do que aquela telinha que aparece quando você inicia algum jogo ou algum aplicativo, geralmente mostra o logotipo da empresa que desenvolveu o aplicativo/jogo.

Nesse tutorial eu vou desconsiderar a implementação do midlet, afinal, cada aplicação tem sua própria.

Para criar a splash, crie uma classe no projeto. Aqui chamarei de SplashScreen.java.


import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public class SplashScreen extends Canvas {
private Display display;
private Displayable next;
private Timer timer = new Timer();
private Image image;

//o construtor da classe recebe um objeto display (tela atual)
//e um objeto Displayable que é a próxima tela, o midlet

public SplashScreen(Display display, Displayable next ){
this.display = display;
this.next = next;
display.setCurrent(this);
setFullScreenMode(true);
}

//fecha a tela de splash quando algum botao for pressionado
//se quiser "obrigar" o usuário a ver a splash screen até o final
//apenas comente este método

protected void keyPressed(int keyCode){
dismiss();
}

//método responsável por carregar uma imagem e printar na tela de splash

protected void paint(Graphics g){
try{
image = Image.createImage("/imagemSplash.png");
}catch (Exception e) {}

g.setColor(215,255,0); //cor de fundo, caso a imagem tenha transparência
g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(image, getWidth()/2, getHeight()/2,Graphics.HCENTER|Graphics.VCENTER);
}

//fecha a tela de splash se a tela for pressionada (em caso de aparelhos com touchscreen)
protected void pointerPressed(int x, int y){
dismiss();
}

//depois do tempo determinado é chamado o metodo run()
protected void showNotify(){
int tempo = 3000; //tempo de exibição da tela splash em milisegundos
timer.schedule(new CountDown(), tempo);
}

private void dismiss(){
timer.cancel();
display.setCurrent( next );
}

//encerra o run() quando acaba o tempo
private class CountDown extends TimerTask {
public void run(){
dismiss();
}
}
}

Para exiber a tela de splash quando rodar a aplicação basta chamá-la no midlet, dentro do método startApp(), da seguinte forma:


(...)
Display display;

public void startApp(){
display = Display.getDisplay(this);

Form meuFormulario = new Form("Opa!");

//implementação qualquer...

display.setCurrent(new SplashScreen(display, meuFormulario));
}

(...)

É isso, bem simples. A imagem que eu usei (“imagemSplash.png”) foi colocada na pasta ‘res’ do projeto, que você pode criar manualmente mesmo.

Ah, vale salientar que este tópico do fórum JavaFree me ajudou bastante, tomei como base os exemplos de lá pra fazer minha splash.

ps: o WordPress pode ter se confundido um pouco no código e colocou como comentário alguns trechos que não são comentários. Atentem!

5 comments so far

  1. Araujo on

    Valeu camarada era o que eu estava procurando, mas tem um probleminha a minha imagem não fica em toda a tela tem como maximizar para ocupar toda a tela

    • Thiago P. on

      Oi Araujo,
      A splash não ficou em full screen?

      • Araujo on

        Pois é ficou a barra de menu em baixo e a que indica o horário em cima, tem como deixar full?

      • Thiago P. on

        Realmente não está em fullscreen, foi malz xD
        Coloque isso no construtor da classe SplashScreen -> setFullScreenMode(true);
        t+

  2. Araujo on

    Agora sim ficou bacana, obrigado.


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: