A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programa Expresso de Capacitação Módulo J2ME Aula 4 – Interface de alto e baixo nível.

Apresentações semelhantes


Apresentação em tema: "Programa Expresso de Capacitação Módulo J2ME Aula 4 – Interface de alto e baixo nível."— Transcrição da apresentação:

1 Programa Expresso de Capacitação Módulo J2ME Aula 4 – Interface de alto e baixo nível

2 Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan Tokuda, Mestre Zen

3 Agenda Interface gráfica de baixo nível Overview Tratamento de eventos Timer e TimerTask

4 Interface de baixo nível “Às vezes, a ignorância é uma bênção”

5 Overview Graphics Canvas Tratamento de eventos

6 Graphics Classe que provê métodos simples de renderização 2D em Canvas Arcos, imagens, linhas, retângulos e texto podem ser desenhados Não é instanciada diretamente

7 Graphics Métodos principais drawArc (int x, int y, int width, int height, int startAngle, int arcAngle) drawImage(Image img, int x, int y, int anchor) drawLine(int x1, int y1, int x2, int y2) drawString(String str, int x, int y, int anchor) fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) fillRect(int x, int y, int width, int height)

8 Graphics Métodos principais - continuação setClip(int x, int y, int width, int height) setColor(int red, int green, int blue setFont(Font font) translate(int x, int y)

9 Canvas Classe que herda de Displayable Representa uma Área na tela que pode ser livremente desenhada e apagada Fornece métodos para tratamento de eventos de teclas, “game actions” e “pointer actions” Usa Graphics para desenho no Canvas O programador cria uma subclasse de Canvas

10 Canvas – Sistema de Coordenadas

11 Canvas Métodos principais int getGameAction (int keyCode) int getKeyCode(int gameAction) String getKeyName(int keyCode) keyPressed(int keyCode) keyReleased(int keyCode) keyRepeated(int keyCode) paint(Graphics g) repaint()

12 Canvas - Exemplo import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class MyCanvas extends Canvas { private MIDlet midlet; public MyCanvas( MIDlet midlet ){ this.midlet = midlet; } protected void paint( Graphics g ){ g.setColor( 255, 255, 255 ); g.fillRect( 0, 0, getWidth(), getHeight() ); g.setColor( 0, 0, 0 ); g.drawString( "Hello there!", getWidth()/2, 0, g.TOP | g.HCENTER ); }

13 Canvas – Exemplo (Cont.) public class MyMIDlet extends MIDlet { private Display display; private MyCanvas canvas; public MyMIDlet(){ display = Display.getDisplay( this ); canvas = new MyCanvas( this ); }... protected void startApp(){ display.setCurrent( canvas ); }... public void exit(){ destroyApp( true ); notifyDestroyed(); }

14 Tratamento de eventos Não é necessário criar um listener public void keyPressed(int keyCode ) public void keyRepeated(int keyCode ) public voidkeyReleased(int keyCode ) public void pointerPressed(int x, int y ) public void pointerDragged(int x, int y ) public void pointerReleased(int x, int y )

15 Game Actions Aplicações portáveis que necessitem de teclas direcionais e eventos relacionados a jogos devem preferencialmente utilizar game actions a keyCodes Game actions UP, DOWN, LEFT, RIGHT, FIRE, GAME_A, GAME_B, GAME_C, GAME_D

16 Tratamento de eventos int getGameAction(int keyCode) Retorna a gameAction da tecla especificada int getKeyCode(int gameAction) Retorna o keyCode de uma gameAction String getKeyName(int keyCode) Retorna o nome da tecla especificada

17 Exemplo Public void keyPressed(int keyCode) { switch (keyCode) { case Canvas.KEY_NUM5: // tratamento da tecla 5 break; case Canvas.KEY_NUM9: // tratamento da tecla 9 break; }

18 Exercício Escreva uma aplicação que dado um evento de pressionamento de uma tecla imprime na tela o nome da tecla pressionada Lembrando que eventos de tecla pressionada são tratados pelo método keyPressed() de Canvas

19 Manipulando imagens Só pra relembrar Imagens Estáticas 1. Aloque a imagem Image im = Image.createImage(“/imageTest.png”); 2. Mostre a imagem protected void paint(Graphics g) {... g.drawImage(im, 10, 10, Graphics.LEFT | Graphics.TOP);... Imagens Dinâmicas 1. Aloque a imagem Image im = Image.createImage(80, 20); 2. Crie o conteúdo da imagem (usando arcs, rectangles, lines e text) // pegue o Graphics do objeto Graphics graphics = im.getGraphics(); // desenhe um retangulo preenchido graphics.fillRoundRect(0, 0, 50, 50, 20, 20);... 3. Mostre a imagem protected void paint(Graphics g) {... g.drawImage(im, 10, 10, Graphics.LEFT | Graphics.TOP);... }

20 Exercício Escreva um MIDlet que reconhe Game Actions e desenha uma Imagem indicando qual tecla foi pressionada Lembrando que as imagens devem ser preferencialmente em formato PNG As teclas a serem reconhecidas são UP, DOWN, LEFT, RIGHT e FIRE (5)

21 Timer e TimerTask Facilitam a execução de tarefas em segundo plano Baseado no conceito de agendamento de tarefas, onde um cronômetro dispara uma tarefa a ser executada, uma única vez ou periodicamente Timer: O agendador de tarefas TimerTask: Executa uma tarefa

22 Timer Fornece seis métodos para agendamento de tarefas Dois deles para tarefas de execução única schedule(TimerTask task, long delay) schedule(TimerTask task, Date time)

23 Timer – Tarefas Repetitivas void schedule(TimerTask task, long delay, long period) void schedule(TimerTask task, Date firstTime, long period) void scheduleAtFixedRate(TimerTask task, long delay, long period) void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)

24 TimerTask Classe que representa uma Task Possui três métodos abstract void run() public boolean cancel() public long scheduledExecutionTime()

25 Utilizando Timer e TimerTask 1.Crie um Timer 2.Crie uma classe que estende de TimerTask 3.Escreva o método run dessa nova classe 4.Agende o timer passando a nova classe como parâmetro

26 Exemplo // Cria o Timer Timer tm = new Timer(); // Cria uma Task TodoTask tt = new TodoTask(); // Agenda o Timer para executar a task em 1000ms tm.schedule(tt, 1000);... private class TodoTask extends TimerTask { public final void run() { // Faz alguma coisa }

27 Código exemplo http://www.cin.ufpe.br/~ela/PEC/TimerTaskMIDl et.java

28 Referências Core J2ME Site da Sun Wireless Programming with J2ME: Cracking the code, ISBN: 0-7645-4885-9


Carregar ppt "Programa Expresso de Capacitação Módulo J2ME Aula 4 – Interface de alto e baixo nível."

Apresentações semelhantes


Anúncios Google