TouchScreen em Java ME
|
By Ricardo Ogliari in Java ME Published: Thursday, 16 August 07 - 04:07 AM (GMT) Last Updated: Thursday, 16 August 07 - 05:23 AM (GMT) |
|
O surgimento do IPhone da Apple mudou vários conceitos, um deles sem dúvida é a construção de interfaces para pequenos dispositivos, o uso de telas touch screen se tornou uma questão de sobrevivência. Aliado a estas mudanças culturais, aproveitei para escrever um breve resumo sobre como criar aplicativos Java ME que respondam a telas touch screen.
Primeiramente, parto do pressuposto de que o leitor já conheça a plataforma Java ME, que compreenda a diferença entre a interface de alto nível, através das classes derivadas de Screen, e a interface de baixo nível, com a classe Canvas. Se o leitor não conhece estes termos que acabei de citar, recomendo uma pausa neste texto e uma breve lida sobre a plataforma Java ME.
Quando criamos uma classe que herde da classe Screen, podemos utilizar alguns métodos da própria classe, sendo que, os mais conhecidos são aqueles que gerenciam os eventos relacionados ao uso das teclas do dispositivo, como o acionamento das teclas direcionais, esses métodos são:
- keyPressed()
- keyRepeated()
- keyReleased()
De maneira análoga, existem os métodos que respondem aos eventos de toque nas telas touch screen, sendo que, também é preciso de uma classe que herde diretamente da classe Canvas. Os métodos são esses:
- pointerPressed()
- pointerDragged()
- pointerReleased()
Os três métodos citados acima recebem como parâmetro dois números inteiros, que representam a coordenada x, y de onde ocorrer o toque na tela. Pronto, o código para tratamento de touch screen é esse e nada mais. A listagem de código abaixo mostra uma MIDlet que apenas mostra um círculo azul no local do toque na tela.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Midlet extends MIDlet {
private Display display;
private Tela tela;
public void startApp() {
display = Display.getDisplay(this);
tela = new Tela();
display.setCurrent(tela);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
class Tela extends Canvas
{
int x = -1;
int y = 0;
protected void paint(Graphics g) {
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0, 0, 255);
if (x > 0)
{
g.fillArc(x-10, y-10, 20, 20, 0, 360);
}
}
public void pointerDragged(int x, int y)
{}
public void pointerPressed(int x, int y)
{
this.x = x;
this.y = y;
repaint();
}
public void pointerReleased(int x, int y)
{}
}
Porém, para o exemplo acima funcionar corretamente no emular da Sun, é preciso editar o arquivo DefaulColorPhone.properties (se estiver usando o emulador padrão). No meu caso, o caminho para este arquivo é C:\WTK25\wtklib\devices\DefaultColorPhone. Ao abrir este arquivo procure e altere a propriedade touch_screen para true:
touch_screen=true
Feito isso, reinicie o emulador. Agora sim, a diversão está concluída.
Att.
Ricardo S. Ogliari (Ping)
3 Comments so far: |
Leave a comment |
| DefaultColorPhone.properties Não existe (...) | Junior | 03/13/09 |
| Pegoue funfou | Gil | 03/13/09 |
| Pra que é que serve isso mesmo? | _Rich_ | 07/23/09 |
|
Top | Reply to this Title: DefaultColorPhone.properties Não existe..... Author: Junior Date Posted: 13 Mar 2009 05:18 PM (GMT) Esse aqui não exixte no meu projeto .... o meu caminho é em arquivos em programas ..... |
|
Top | Reply to this Title: Pegoue funfou Author: Gil Date Posted: 13 Mar 2009 05:31 PM (GMT) É isso ae galera pegou e funfou direitinho sem bronca Yahoooooooo Só tem que conhecer um basico (bem basicola memo) de java e seguir as instruções.... Alquem sabe ondi existe mais tutoriais de java Touch Sreen ??? |
|
Top | Reply to this Author: _Rich_ Date Posted: 23 Jul 2009 03:26 AM (GMT) Pra que é que serve isso mesmo? |
Have your say on this article:
<-- Back