Siguiendo con la parte general, las aplicaciones para Symbian tienen dos posibles modos visuales:
- Screen es el objeto que te permite gestionar la pantalla del movil a modo de formulario, puedes usar etiquetas, texto, botones, campos editables, opciones, check button, etc.
- Canvas es la parte grafica, te permite utilizar la pantalla del movil como un lienzo y presentar lineas, ciculos, rectangulos... y de modo mas avanzado imagenes, sprites y capas.
El ejemplo de
Hola Mundo está creado a partir de un
Form que es un objeto de la rama de los
Screen, en el se utiliza además un StringItem que permite representar etiquetas o botones.
El
Form es un contenedor de "
Items" al que se le pueden definir una estructura tipo lista (un objeto debajo de otro) o tipo tabla (con objetos en paralelo y en filas) y tambien puedes definir diferentes operaciones que conformarán los menus y botones estandar de la parte inferior del telefono (o a la derecha si permite apaisado).
Siguiendo con los formularios, puedes definir en un mismo MIDlet tantos formularios como quieras y adecuar diferentes pulsaciones para moverte entre ellos. Así puedes definir un comando que te permite ir de un formulario a otro y otro comando para volver al primero.
Usando
display.setCurrent(mi_form) puedes hacer que en pantalla se presente uno u otro formulario.
Para que tu MIDlet pueda recoger los comandos de opciones y menus, debe implementar el interfaz
CommandListener y sobreescribir la funcion
commandAction
Para procesar el comando "salir" (para cerrar tu MIDlet y volver al menu del telefono) debes crear un objeto
Command del siguiente modo:
Command exitCommand = new Command("Exit", Command.EXIT, 1)
Debes registrar el ComandListener que vas a usar en tu formulario:
mi_form.setCommandListener(this);
Y añadir el comando al formulario, para que aparezca como una opcion:
mainForm.addCommand(exitCommand);
Y en la funcion commandAction debes preguntar por cual es el comando que se ha ejecutado:
public void commandAction(Command command, Displayable displayable) {
if (command == exitCommand) {
notifyDestroyed();
}
}
De este modo, cuando pulses en "Exit" se ejecutará el commandAction y si el comando es
exitCommand, se lanza la notificación al sistema para que "destruya el MIDLet"
Además del
CommandListener hay otro modo de asignar y recibir comandos, es el
ItemCommandListener y la funcion
commandAction en su version "
Item" (la otra funcion tiene como parametro un "
Displayable", en nuestro caso, un
Form).
Funciona del mismo modo que la version para
Form, pero en este caso, la opcion solo aparece en el menu si tienes seleccionado el Item al que le añadiste el comando. Por ejemplo si crear un
StringItem y le asocias el comando "delCommand", en las opciones el menu sólo aparece "Delete" cuando tienes seleccionado ese Item (cuando lo tienes marcado), sino aparecen unicamente las opciones de comando que haya asignado al
Form. Esto puede parecer un poco lioso, pero lo mejor es que probeis a asignar comandos a diferentes elementos y veais como se comporta vuestro telefono, que menus aparecen y como se organizan las opciones en listas, porque esto depende de la version de Symbian y de la marca del telefono.
Si quieres rehacer entero el contenido de un
Form, pero no quieres perder la configuracion de comandos... solo cambiar los elementos que contiene, puedes quitar y poner elementos con los metodos
append y
delete.
- append recibe el Item que quieres añadir y lo coloca "detras" del ultimo elemento.
- delete pide un numero, que es la posicion (o el orden en que lo has añadido) comenzando por el 0 (como siempre en Java) del Item que queires quitar del Form.
- Con el metodo deleteAll() elminas todos los Items del Form y puedes volver a rellenar desde el principio.
Aqui teneis todo el API del paquete LCDUI que es el que contiene los elementos que se pueden presentar en la pantalla:
En otro post veremos el modo de usar los
Canvas, como usar las funciones "
paint" y "
repaint" y como detectar la pulsacion de la pantalla tactil o de las diferentes teclas de teclado.