Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenido
1 Crear una interfaz de usuario que sea coherente con las interfaces de usuario estndar de BlackBerry........ 2 Escritura y navegacin del usuario de dispositivos BlackBerry......................................................................... Pantalla tctil.................................................................................................................................................... Bola de desplazamiento o panel tctil.............................................................................................................. Sensibilidad de la bola de desplazamiento................................................................................................ Movimiento de la bola de desplazamiento............................................................................................... Rueda de desplazamiento................................................................................................................................. Teclado.............................................................................................................................................................. Mtodos de interaccin en dispositivos BlackBerry......................................................................................... 3 Pantallas............................................................................................................................................................ Clases Screen.................................................................................................................................................... Gestionar un rea de dibujo............................................................................................................................. Crear una transicin de pantalla....................................................................................................................... Ejemplo de cdigo: crear una transicin de pantalla................................................................................ Especificar la orientacin y la direccin de la pantalla..................................................................................... Recuperar la orientacin de la pantalla tctil............................................................................................ Restringir la direccin de la pantalla tctil................................................................................................. Recibir una notificacin cuando el tamao del rea de dibujo de la pantalla tctil cambie..................... 4 Acelermetro.................................................................................................................................................... Tipos de datos del acelermetro...................................................................................................................... Recuperar datos del acelermetro................................................................................................................... Recuperar los datos del acelermetro a intervalos especficos........................................................................ Consultar al acelermetro cuando la aplicacin se encuentra en primer plano.............................................. Consultar al acelermetro cuando la aplicacin se encuentra en segundo plano........................................... Almacenar las lecturas del acelermetro en un bfer...................................................................................... Recuperar las lecturas del acelermetro desde el bfer.................................................................................. Obtener la hora a la que se efectu una lectura del acelermetro.................................................................. 5 Eventos............................................................................................................................................................. Responder a eventos de navegacin................................................................................................................ Determinar el tipo de mtodo de entrada....................................................................................................... Modelos de interaccin con la pantalla tctil................................................................................................... Responder a los eventos de pantalla tctil....................................................................................................... Responder a eventos de sistema mientras el usuario toca la pantalla...................................................... Responder a un usuario deslizando rpidamente un dedo hacia arriba en la pantalla............................. 6 7 7 9 9 9 10 10 10 12 12 13 14 15 16 18 18 18 19 19 19 20 21 21 22 23 23 24 24 24 25 26 27 27
Responder a un usuario deslizando rpidamente un dedo hacia abajo en la pantalla............................. Responder a un usuario deslizando un dedo hacia la izquierda rpidamente en la pantalla.................... Responder a un usuario deslizando un dedo hacia la derecha rpidamente en la pantalla..................... Responder a un usuario haciendo clic en la pantalla................................................................................ Responder a un usuario tocando la pantalla dos veces rpidamente....................................................... Responder a un usuario tocando y arrastrando un elemento en la pantalla............................................ Responder a un usuario tocando la pantalla ligeramente......................................................................... Responder a una accin de desplazamiento............................................................................................. Responder a un usuario tocando la pantalla en dos ubicaciones al mismo tiempo.................................. Gestos de pellizco............................................................................................................................................. Activar los gestos para pellizcar................................................................................................................. Desplazamientos con paneles tctiles.............................................................................................................. Activar los deslizamientos que los usuarios realizan en el panel tctil..................................................... Inyeccin de eventos........................................................................................................................................ 6 API de marco de comandos.............................................................................................................................. Utilizar un comando con un componente de la interfaz de usuario................................................................. Utilizar un comando en una o ms aplicaciones............................................................................................... 7 Disponer los componentes de la interfaz de usuario....................................................................................... Distribuir los componentes de la interfaz de usuario....................................................................................... Crear un diseo de cuadrcula.......................................................................................................................... Crear un diseo de cuadrcula................................................................................................................... Mostrar campos en un par temporal de gestores............................................................................................ Mostrar los valores ButtonField y LabelField temporalmente en la parte superior e inferior de la pantalla ................................................................................................................................................................... Mostrar un campo en una posicin absoluta en la pantalla............................................................................. Mostrar una etiqueta en una posicin absoluta en la pantalla................................................................. Ejemplo de cdigo: mostrar una etiqueta en una posicin absoluta en la pantalla.................................. 8 Componentes de la interfaz de usuario............................................................................................................ Agregar un componente de interfaz de usuario a una pantalla....................................................................... Alinear un campo con una lnea de texto......................................................................................................... Botones............................................................................................................................................................. Prctica recomendada: implementar botones.......................................................................................... Crear un botn........................................................................................................................................... Casillas de verificacin...................................................................................................................................... Prctica recomendada: implementar casillas de verificacin.................................................................... Crear una casilla de verificacin................................................................................................................
28 29 29 30 31 31 32 32 33 34 34 35 36 37 38 39 40 43 44 44 46 48 48 50 51 52 53 53 53 53 54 54 55 55 56
Crear un mapa de bits....................................................................................................................................... Crear un campo personalizado......................................................................................................................... Creacin de un campo para mostrar contenido Web....................................................................................... Mostrar contenido HTML en un campo de navegador.............................................................................. Mostrar contenido HTML de una pgina Web en un campo de navegador.............................................. Mostrar contenido HTML de un recurso en su aplicacin......................................................................... Configurar un campo de navegador.......................................................................................................... Enviar datos de formularios a una direccin Web en un campo de navegador........................................ Cuadros de dilogo........................................................................................................................................... Prctica recomendada: implementar cuadros de dilogo......................................................................... Crear un cuadro de dilogo....................................................................................................................... Listas desplegables........................................................................................................................................... Prctica recomendada: implementar listas desplegables......................................................................... Crear una lista desplegable........................................................................................................................ Etiquetas........................................................................................................................................................... Prctica recomendada: implementar etiquetas........................................................................................ Crear una etiqueta de texto...................................................................................................................... Listas y tablas.................................................................................................................................................... Prctica recomendada: implementar listas y tablas.................................................................................. Crear un cuadro de lista............................................................................................................................. Botones de opcin............................................................................................................................................ Prctica recomendada: implementar botones de opcin......................................................................... Crear un botn de opcin.......................................................................................................................... Indicadores de actividad e indicadores de progreso........................................................................................ Prctica recomendada: implementar indicadores de actividad e indicadores de progreso...................... Indicar el progreso de la actividad o de la tarea........................................................................................ Colectores......................................................................................................................................................... Prctica recomendada: implementar colectores....................................................................................... Crear un colector de fechas....................................................................................................................... Crear un colector de archivos.................................................................................................................... Buscar............................................................................................................................................................... Prctica recomendada: implementar bsquedas...................................................................................... Crear un campo de bsqueda.................................................................................................................... Campos de texto con la funcin Autocompletar....................................................................................... Casillas de seleccin numrica.......................................................................................................................... Crear una casilla de seleccin numrica.................................................................................................... Prctica recomendada: implementar casillas de seleccin numrica....................................................... Campos de texto............................................................................................................................................... Prctica recomendada: implementar campos de texto............................................................................
Crear un campo de texto........................................................................................................................... Crear un campo de fecha........................................................................................................................... Crear un campo de contrasea................................................................................................................. Vistas de rbol.................................................................................................................................................. Prctica recomendada: implementar vistas de rbol................................................................................ Crear un campo para mostrar una vista de rbol...................................................................................... 9 Imgenes........................................................................................................................................................... Uso de imgenes cifradas................................................................................................................................. Acceder a una imagen cifrada a travs de un flujo de entrada................................................................. Cifrar una imagen...................................................................................................................................... Mostrar una imagen cifrada...................................................................................................................... Especificar el tamao de la pantalla de una imagen cifrada..................................................................... Especificar el modo de descodificacin de una imagen............................................................................ Visualizacin de una imagen acercndola, alejndola y desplazndola........................................................... Cdigo de ejemplo: visualizacin de una imagen acercndola, alejndola y desplazndola.................... Mostrar una imagen acercndola, alejndola y desplazndola................................................................. Visualizacin de una fila de imgenes para realizar desplazamientos............................................................. Ejemplo de cdigo: visualizar una fila de imgenes para realizar desplazamientos................................. Mostrar una fila de imgenes para realizar desplazamientos................................................................... 10 Opciones de men............................................................................................................................................ Crear un men.................................................................................................................................................. Ejemplo de cdigo: crear un men............................................................................................................ Prctica recomendada: implementar mens.................................................................................................... Submens......................................................................................................................................................... Prctica recomendada: implementar submens....................................................................................... Crear un submen..................................................................................................................................... Ejemplo de cdigo: crear un submen...................................................................................................... Mens emergentes........................................................................................................................................... Prctica recomendada: implementar mens emergentes........................................................................ Acerca de la colocacin de elementos en los mens emergentes............................................................ Compatibilidad con los mens contextuales heredados........................................................................... Crear un men emergente........................................................................................................................ Agregar un elemento de men a una aplicacin de BlackBerry Device Software............................................ Agregar un elemento de men a una aplicacin de BlackBerry Device Software..................................... Cambiar la apariencia de un men................................................................................................................... Cambiar la apariencia de un men............................................................................................................ Ejemplo de cdigo: cambiar la apariencia de un men.............................................................................
115 116 117 117 118 118 120 120 120 120 121 121 121 121 122 122 123 123 124 127 127 128 129 129 131 131 133 134 135 136 136 137 142 142 143 143 145
11 Fuentes personalizadas..................................................................................................................................... 147 Instalar y utilizar una fuente personalizada en una aplicacin BlackBerry Java Application............................ 147 Ejemplo de cdigo: instalar y utilizar una fuente personalizada en una aplicacin BlackBerry Java Application .......................................................................................................................................................................... 148 12 Verificacin ortogrfica.................................................................................................................................... 150 Agregar la funcionalidad de verificacin ortogrfica........................................................................................ 150 Escuchar un evento de verificacin ortogrfica................................................................................................ 151 13 Recursos relacionados...................................................................................................................................... 152 14 Glosario............................................................................................................................................................. 153 15 Comentarios..................................................................................................................................................... 154 16 Historial de revisin del documento................................................................................................................. 155 17 Aviso legal......................................................................................................................................................... 157
Gua de desarrollo
Crear una interfaz de usuario que sea coherente con las interfaces de usuario estndar de BlackBerry
Crear una interfaz de usuario que sea coherente con las interfaces de usuario estndar de BlackBerry
Puede utilizar las API estndar de MIDP y las API de la interfaz de usuario de BlackBerry para crear la interfaz de usuario de BlackBerry Java Application. Los componentes de la interfaz de usuario en las API de la interfaz de usuario de BlackBerry se han diseado para proporcionar diseos y comportamientos que sean consistentes con las aplicaciones de BlackBerry Device Software. El uso de estas API no slo le permite utilizar los componentes con los que los usuarios de BlackBerry estn familiarizados, sino que tambin le ahorrar tiempo puesto que no tendr que crear dichos componentes usted mismo. Los componentes de la pantalla pueden proporcionar un diseo de pantalla estndar, un men predeterminado y un comportamiento estndar cuando el usuario del dispositivo BlackBerry pulsa la tecla Escape, hace clic en el panel tctil o toca la pantalla. Los componentes del campo pueden proporcionar elementos de interfaz de usuario estndar para la seleccin de fechas, los botones de opcin, las casillas de verificacin, las listas, los campos de texto, las etiquetas y los controles de la barra de progreso. Los administradores de diseo pueden proporcionar una aplicacin con la capacidad de distribuir los componentes en una pantalla de dispositivo BlackBerry de forma estndar, tanto horizontalmente como verticalmente, o en un eje izquierda a derecha.
Puede utilizar las API de la interfaz de usuario de BlackBerry para crear una interfaz de usuario que incluya tablas, cuadrcula y otras caractersticas especializadas. Puede utilizar un modelo de evento de Java estndar para recibir y responder a tipos especficos de eventos. Una aplicacin del dispositivo BlackBerry puede recibir y responder a los eventos de usuario, como cuando el usuario hace clic en la rueda de desplazamiento o escribe en el teclado, y a eventos de sistema, como las alertas globales, los cambios del reloj y las conexiones del puerto USB.
Gua de desarrollo
Los dispositivos BlackBerry incluyen un teclado, una rueda o bola de desplazamiento, o un panel tctil y una tecla Escape para la escritura y navegacin. En dispositivos BlackBerry con una pantalla tctil SurePress, hacer clic en la pantalla es el equivalente a hacer clic en la bola o en la rueda de desplazamiento. BlackBerry Java Application debe seguir el siguiente modelo de escritura y navegacin en la medida de lo posible. Al hacer clic en la rueda o bola de desplazamiento o en el panel tctil, normalmente se invoca un men. Al pulsar la tecla Escape se cancelan acciones o se vuelve a la pantalla anterior. Al pulsar la tecla Escape varias veces los usuarios vuelven a la pantalla de inicio. Manteniendo pulsada la tecla Escape se cierra el navegador o la aplicacin Multimedia.
De forma predeterminada, los objetos de pantalla de BlackBerry ofrecen esta funcionalidad sin personalizacin; sin embargo, debe agregar elementos del men, as como una interfaz de usuario adicional y lgica de navegacin.
Pantalla tctil
En dispositivos BlackBerry con pantalla tctil SurePress, los usuarios utilizan un dedo para interactuar con las aplicaciones del dispositivo. Los usuarios escriben texto y navegan a travs de las pantallas realizando distintas acciones en la pantalla tctil. Los usuarios tambin pueden realizar acciones haciendo clic en los iconos de la barra de atajos o pulsando la tecla Men. En dispositivos BlackBerry con una pantalla tctil, los usuarios pueden realizar las siguientes acciones: Accin tocar la pantalla ligeramente Resultado Esta accin selecciona un elemento. En un campo de texto, si los usuarios tocan la pantalla cerca del cursor, se muestra un cuadro sealado alrededor del cursor. Este cuadro ayuda a los usuarios a volver a colocar el cursor ms fcilmente. En las aplicaciones que son compatibles con una vista de pantalla completa, por ejemplo, BlackBerry Maps y BlackBerry Browser, esta accin oculta y muestra la barra de atajos. En una pgina Web, en un mapa, en una imagen o en un archivo adjunto de presentacin, esta accin acerca la pgina Web, el mapa, la imagen o el archivo adjunto de presentacin. En la barra de atajos, esta accin muestra una sugerencia que describe la accin que el icono representa.
puntear en la pantalla
Gua de desarrollo
Pantalla tctil
Accin
Resultado En una lista de mensajes, si los usuarios mantienen un dedo sobre el emisor o el asunto de un mensaje, el dispositivo BlackBerry busca el emisor o el asunto. tocar y arrastrar un elemento sobre Esta accin mueve el contenido en la pantalla en la direccin la pantalla correspondiente. Por ejemplo, cuando los usuarios tocan y arrastran un elemento del men, la lista de elementos del men se mueve en la misma direccin. En un campo de texto, esta accin mueve el cuadro sealado y el cursor en la misma direccin. Esta accin selecciona el texto o la lista de elementos, por ejemplo, mensajes, entre las dos ubicaciones. Para agregar o eliminar texto o elementos seleccionados, los usuarios pueden tocar la pantalla en otra ubicacin. Esta accin inicia una accin. Por ejemplo, cuando los usuarios hacen clic en un elemento de una lista, aparece la pantalla que est asociada con el elemento. Esta accin equivale a hacer clic en la rueda o la bola de desplazamiento o en el panel tctil. En un mapa, en una imagen o en un archivo adjunto de presentacin, esta accin acerca el mapa, la imagen o el archivo adjunto de presentacin. En una pgina Web, esta accin acerca la pgina Web o sigue un vnculo. En un campo de texto, esta accin coloca el cursor. Si el campo contiene texto, aparece un cuadro resaltado alrededor del cursor. Al deslizar rpidamente un dedo hacia arriba se muestra la pantalla siguiente. Al deslizar rpidamente un dedo hacia abajo se muestra la pantalla anterior. Cuando aparece el teclado, al deslizar rpidamente un dedo hacia abajo se oculta el teclado y muestra la barra de atajos. Esta accin muestra la imagen o el mensaje siguiente o anterior, o bien el da, semana o mes siguiente o anterior en un calendario. En la cmara, al deslizar un dedo hacia arriba se ampla el objeto. Al deslizar un dedo hacia abajo se reduce el objeto. Esta accin ofrece una panormica de un mapa o de una pgina Web. Si los usuarios amplan una imagen, esta accin tambin nos ofrecer una panormica de la imagen. Esta accin elimina el efecto resaltado del texto o una lista de elementos. En una pgina Web, en un mapa o en una imagen, esta accin reduce la imagen un nivel. Los usuarios pueden pulsar la tecla Escape hasta retroceder a la vista original.
deslizar un dedo hacia la izquierda o la derecha rpidamente sobre la pantalla deslizar un dedo hacia arriba o hacia abajo sobre la pantalla deslizar un dedo en cualquier direccin pulsar la tecla Escape
Gua de desarrollo
Los dispositivos BlackBerry con una bola de desplazamiento o panel tctil tambin incluyen una tecla Men ubicada a la izquierda de la bola de desplazamiento o panel tctil. Los usuarios pueden pulsar la tecla Men para abrir un men completo de acciones disponibles.
Gua de desarrollo
Rueda de desplazamiento
Rueda de desplazamiento
Los dispositivos BlackBerry anteriores a BlackBerry Pearl 8100 Series utilizan una rueda de desplazamiento como control principal para la navegacin de usuario. La rueda de desplazamiento se encuentra en el lado derecho del dispositivo BlackBerry. Los usuarios pueden realizar las siguientes acciones: desplazar la rueda de desplazamiento para mover el cursor verticalmente desplazar la rueda de desplazamiento mientras pulsan la tecla Alt para mover el cursor horizontalmente hacer clic en la rueda de desplazamiento para iniciar una accin o abrir el men
Teclado
Los usuarios utilizan el teclado principalmente para escribir texto. Las teclas de caracteres envan un carcter al dispositivo BlackBerry. Una tecla modificadora modifica la funcionalidad de las teclas de caracteres. Las teclas modificadoras incluyen la tecla Maysculas y la tecla Alt. Cuando los usuarios pulsan una tecla modificadora, aparece un indicador de modo de escritura en la esquina superior derecha de la pantalla. En dispositivos BlackBerry sin pantalla tctil, los usuarios tambin pueden utilizar el teclado para desplazar la pantalla (por ejemplo, para desplazar un mapa). Sin embargo, la navegacin a travs del teclado debe ser siempre una alternativa a la navegacin utilizando la rueda o la bola de desplazamiento, o bien el panel tctil. Los dispositivos BlackBerry tienen un teclado completo o un teclado reducido. En dispositivos BlackBerry con pantalla tctil SurePress, en la mayora de los casos, el teclado completo aparece en la vista horizontal y el teclado reducido aparece en la vista vertical.
Mtodo de interaccin rueda de desplazamiento rueda de desplazamiento bola de desplazamiento bola de desplazamiento panel tctil bola de desplazamiento panel tctil bola de desplazamiento bola de desplazamiento bola de desplazamiento pantalla tctil
Gua de desarrollo
11
Gua de desarrollo
Pantallas
Pantallas
El principal componente de la interfaz de usuario de un dispositivo BlackBerry es el objeto Screen.
Un dispositivo BlackBerry puede tener varias pantallas abiertas al mismo tiempo, pero slo se podr mostrar una pantalla al mismo tiempo. BlackBerry Java Virtual Machine mantiene un conjunto ordenado de objetos Screen en una pila de visualizacin. El objeto Screen situado en la parte superior de la pila es el objeto Screen activo que ve el usuario del dispositivo BlackBerry. Cuando una aplicacin del dispositivo BlackBerry muestra una pantalla, insertar el objeto Screen en la parte superior de la pila. Cuando una aplicacin del dispositivo BlackBerry cierra una pantalla, retirar el objeto Screen de la parte superior de la pila y mostrar el siguiente objeto Screen de la pila, redibujando la pantalla tal como sea necesario. Cada objeto Screen puede aparecer slo una vez en la pila de visualizacin. BlackBerry JVM agrega una excepcin en tiempo de conexin si el objeto Screen que la aplicacin del dispositivo BlackBerry inserta en la pila ya existe. La aplicacin del dispositivo BlackBerry deber retirar un objeto Screen de la pila de visualizacin cuando el usuario finalice el proceso de interaccin con la pantalla, de forma que la aplicacin del dispositivo BlackBerry pueda utilizar la memoria de forma eficaz. Debe utilizar slo algunos objetos Screen de modo al mismo tiempo, ya que cada pantalla utiliza un subproceso independiente. Las API de la interfaz de usuario inicializan objetos Screen sencillos. Una vez haya creado un objeto Screen, podr agregar campos y un men y mostrar el objeto Screen al usuario insertndolo en la pila de visualizacin. Puede cambiar la interfaz de usuario del dispositivo BlackBerry e implementar nuevos tipos de campos, tal como considere necesario. Tambin puede agregar navegacin personalizada. La clase Screen no puede implementar la desambiguacin, sta es necesaria para los mtodos de entrada complejos, por ejemplo, teclados internacionales. Para la integracin de los distintos mtodos de entrada, puede ampliar la clase Field o una de sus subclases. No debe utilizar objetos Screen para escribir texto.
Clases Screen
Clase
Screen
FullScreen
MainScreen
Descripcin Puede utilizar la clase Screen para crear una pantalla y utilizar un gestor de diseo para ordenar los componentes de la interfaz de usuario en la pantalla. Puede definir un tipo especfico de pantalla utilizando los estilos que definen las constantes en la superclase Field. Puede utilizar la clase FullScreen para crear una pantalla vaca a la que agregar componentes de la interfaz de usuario en un diseo vertical estndar. Si desea utilizar otro estilo de diseo, por ejemplo, horizontal o diagonal, puede utilizar la clase Screen en su lugar y agregar un gestor de diseo a la misma. Puede utilizar la clase MainScreen para crear una pantalla con los siguientes componentes estndar de la interfaz de usuario:
12
Gua de desarrollo
Clase
Descripcin ttulo de la pantalla predeterminada, con un valor SeparatorField despus del ttulo seccin desplazable principal contenida en un valor
VerticalFieldManager
men predeterminado con un elemento de men Cerrar accin de cierre predeterminada que cierra la pantalla cuando el usuario del dispositivo BlackBerry hace clic en el elemento de men Cerrar o pulsa la tecla Escape
Debe considerar el uso de un objeto MainScreen para la primera pantalla de la aplicacin del dispositivo BlackBerry con el fin de mantener la coherencia con otras aplicaciones del dispositivo BlackBerry.
2.
3.
Invoque Graphics.pushContext() para realizar llamadas de dibujo que especifiquen que el origen de la regin no debe ajustar el desplazamiento del dibujo. Invoque Graphics.pushContext() para insertar la regin de corte rectangular en la pila de contexto. Invoque Graphics.drawRect() para dibujar un rectngulo, a continuacin, invoque Graphics.fillRect() para rellenar el rectngulo. Invoque Graphics.popContext () para extraer el contexto actual de la pila de contexto.
graphics.pushContext(rectangle, 0, 0); graphics.fillRect(10, 10, 30, 30); graphics.drawRect(15, 15, 30, 30); graphics.popContext(); graphics.drawRect(15, 15, 30, 30); graphics.pushContext(rectangle, 0, 0); graphics.fillRect(10, 10, 30, 30); graphics.drawRect(15, 15, 30, 30); graphics.popContext(); graphics.drawRect(15, 15, 30, 30); 13
Gua de desarrollo
4.
Invoque pushRegion() y especifique que el origen de la regin debe ajustar el desplazamiento del dibujo. Invoque Graphics.drawRect() para dibujar un rectngulo e invoque Graphics.fillRect() para rellenar el rectngulo. Invoque Graphics.popContext() para extraer el contexto actual de la pila de contexto.
graphics.pushRegion(rectangle); graphics.fillRect(10, 10, 30, 30); graphics.drawRect(15, 15, 30, 30); graphics.popContext();
5. 6.
Especifique la parte del objeto Graphics que se va a insertar en la pila. Despus de invocar pushContext() (o pushRegion()), proporcione la parte del objeto Graphics que se va a invertir.
graphics.pushContext(rectangle); graphics.invert(rectangle); graphics.popContext();
7.
Invoque translate(). El valor XYRect se traduce de su origen de (1, 1) a un origen de (20, 20). Despus de la traduccin, la parte inferior del objeto XYRect se ampla ms all de los lmites del contexto de Graphics y lo recorta.
XYRect rectangle = new XYRect(1, 1, 100, 100); XYPoint newLocation = new XYPoint(20, 20); rectangle.translate(newLocation);
TRANSITION_SLIDE
Descripcin Esta transicin revela o elimina una pantalla hacindola aparecer o desaparecer. Esta transicin de la pantalla crea un efecto visual de atenuacin al cambiar la opacidad de la pantalla. Esta transicin revela o elimina una pantalla desplazndola y hacindola aparecer o desaparecer de la pantalla del dispositivo. Puede utilizar atributos para especificar que tanto la pantalla nueva como la actual se deslicen, para crear un efecto en el que ambas pantallas parezcan moverse o para que la nueva pantalla se deslice sobre la actual. Esta transicin revela o elimina una pantalla simulando el borrado y hacindola aparecer o desaparecer de la pantalla del dispositivo. Esta transicin revela o elimina una pantalla acercndola o alejndola en la pantalla del dispositivo. No ocurre ninguna transicin.
14
Gua de desarrollo
Cada tipo de la transicin de pantalla tiene atributos que puede utilizar para personalizar los efectos visuales de la transicin de pantalla. Por ejemplo, puede personalizar un efecto de deslizamiento para que una pantalla se deslice desde la parte inferior de la pantalla en el dispositivo a la parte superior de la misma. Si no personaliza la transicin de pantalla, la aplicacin utiliza los atributos predeterminados. Para obtener ms informacin acerca de los atributos predeterminados, consulte la referencia de API de BlackBerry Java Development Environment. Despus de crear una transicin de pantalla, debe registrarla en la aplicacin invocando UiEngineInstance.setTransition() y especificar la pantalla de salida que se va a eliminar y la pantalla de entrada que va a aparecer, los eventos que dan lugar a la transicin y la transicin que se va a mostrar. Para descargar una aplicacin de ejemplo que demuestre cmo utilizar las transiciones de pantalla, visite www.blackberry.com/go/screentransitionssample. Para obtener ms informacin acerca de las transiciones de pantalla, consulte la referencia API de BlackBerry Java Development Environment. Nota: El tema del dispositivo BlackBerry controla los efectos visuales que se muestran cuando un usuario abre una aplicacin. Para obtener ms informacin, consulte la Gua del usuario de BlackBerry Theme Studio .
15
Gua de desarrollo
} public void fieldChanged(Field field, int context) { pushScreen(_secondaryScreen); invokeLater(_popRunnable, 2000, false); }
transition); transition = new TransitionContext(TransitionContext.TRANSITION_FADE); transition.setIntAttribute(TransitionContext.ATTR_DURATION, 500); transition.setIntAttribute(TransitionContext.ATTR_KIND, TransitionContext.KIND_OUT); engine.setTransition(_secondaryScreen, null, UiEngineInstance.TRIGGER_POP, transition); MainScreen baseScreen = new MainScreen(); baseScreen.setTitle("Screen Transition Sample"); ButtonField buttonField = new ButtonField("View Transition", ButtonField.CONSUME_CLICK) ; buttonField.setChangeListener(this); baseScreen.add(buttonField); pushScreen(baseScreen); _popRunnable = new Runnable() { public void run() { popScreen(_secondaryScreen); } };
Orientacin
El usuario de un dispositivo BlackBerry con pantalla tctil puede cambiar la orientacin de la pantalla girando el dispositivo. Si un usuario sujeta el dispositivo BlackBerry con el logotipo de BlackBerry en la parte superior, la pantalla estar en orientacin vertical. Si el usuario gira el dispositivo 90 grados a la izquierda o la derecha, la pantalla estar en orientacin horizontal. Puede utilizar la clase net.rim.device.api.system.Display para recuperar la orientacin de la pantalla. La clase Display contiene las constantes que se corresponden a las orientaciones que el dispositivo con pantalla tctil puede utilizar para mostrar informacin. Por ejemplo, las orientaciones vertical, horizontal y en cuadrado se corresponden a las constantes Display.ORIENTATION_PORTRAIT, Display.ORIENTATION_LANDSCAPE y Display.ORIENTATION_SQUARE. Para recuperar la orientacin de la pantalla, puede invocar el mtodo Display.getOrientation(). Este mtodo devuelve un entero que se corresponde a una de las orientaciones que el dispositivo BlackBerry puede utilizar. Para detectar los cambios de orientacin, puede omitir Screen.sublayout(). En ese mtodo, invoque super.sublayout() y observe cambios en los valores width y height.
Direccin
16
Gua de desarrollo
Un dispositivo BlackBerry con una pantalla tctil puede mostrar informacin en la pantalla en direcciones diferentes. La direccin se refiere a la parte superior del rea de dibujo de la pantalla, que es relativa a la ubicacin del logotipo de BlackBerry. La direccin es norte cuando la parte superior del rea de dibujo es el lado de pantalla ms cercano al logotipo de BlackBerry; la direccin es oeste cuando la parte superior del rea de dibujo est a la izquierda del logotipo de BlackBerry; la direccin es este cuando la parte superior del rea de dibujo est a la derecha del logotipo de BlackBerry. Puede utilizar la clase net.rim.device.api.system.Display, la clase net.rim.device.api.ui.Ui y la clase net.rim.device.api.ui.UiEngineInstance para controlar la direccin que el dispositivo BlackBerry utiliza para mostrar informacin en la pantalla. La clase Display contiene las constantes que se corresponden a las direcciones que el dispositivo puede utilizar para mostrar informacin. Por ejemplo, las direcciones norte, oeste y este se corresponden con las constantes Display.DIRECTION_NORTH, Display.DIRECTION_WEST y Display.DIRECTION_EAST. Puede crear un objeto de la clase net.rim.device.api.ui.Ui e invocar Ui.getUiEngineInstance() para recuperar un objeto de la clase UiEngineInstance. Al invocar UiEngineInstance.setAcceptableDirections() con una de las constantes que se corresponden a las direcciones de la clase Display se establece la direccin que el dispositivo BlackBerry puede utilizar para mostrar informacin. Ejemplo de cdigo: recuperar la orientacin de la pantalla
switch(Display.getOrientation()) { case Display.ORIENTATION_LANDSCAPE: Dialog.alert("Screen orientation case Display.ORIENTATION_PORTRAIT: Dialog.alert("Screen orientation case Display.ORIENTATION_SQUARE: Dialog.alert("Screen orientation default: Dialog.alert("Screen orientation }
17
Gua de desarrollo
2.
3.
Invoque net.rim.device.api.ui.UiEngineInstance.setAcceptableDirections(byte flags) y pase el argumento para la direccin del objeto Screen.
_ue.setAcceptableDirections(Display.DIRECTION_WEST);
Recibir una notificacin cuando el tamao del rea de dibujo de la pantalla tctil cambie
1. Importe las siguientes clases: javax.microedition.lcdui.Canvas net.rim.device.api.ui.component.Dialog Ample javax.microedition.lcdui.Canvas. Omita Canvas.sizeChanged(int, int).
protected void sizeChanged(int w, int h) { Dialog.alert("The size of the Canvas has changed"); }
2. 3.
18
Gua de desarrollo
Acelermetro
Acelermetro
Los dispositivos BlackBerry con pantalla tctil incluyen un acelermetro, diseado para detectar la orientacin y aceleracin del dispositivo BlackBerry. Cuando el usuario de un dispositivo BlackBerry mueve el dispositivo BlackBerry, el acelermetro puede detectar el movimiento en 3D en los ejes X, Y y Z. El usuario de un dispositivo puede modificar la orientacin del dispositivo, que puede cambiar la direccin de visualizacin de una pantalla entre vertical y horizontal para una aplicacin de dispositivo BlackBerry. Puede utilizar las API del acelermetro, en el paquete net.rim.device.api.system, para reaccionar ante la orientacin y aceleracin del dispositivo BlackBerry. Por ejemplo, puede manipular una aplicacin de juegos para cambiar la direccin y la velocidad de un objeto mvil en la pantalla mientras un usuario mueve y gira el dispositivo BlackBerry a distintas velocidades. Para descargar una aplicacin de ejemplo que demuestre cmo utilizar el acelermetro de pantalla, visite www.blackberry.com/go/accelerometersample. Para obtener ms informacin acerca de la aplicacin de ejemplo, visite www.blackberry.com/go/devguides para leer la Descripcin general de la aplicacin de ejemplo del acelermetro.
Para obtener ms informacin acerca de los tipos de datos del acelermetro, consulte la referencia de API de BlackBerry Java Development Environment.
19
Gua de desarrollo
Puede utilizar las API del acelermetro, en el paquete net.rim.device.api.system, para reaccionar ante la aceleracin del dispositivo BlackBerry. Debe determinar en primer lugar si el dispositivo BlackBerry es compatible con un acelermetro invocando net.rim.device.api.system.AccelerometerSensor.isSupported(). Si el mtodo devuelve el valor true, el dispositivo BlackBerry es compatible con un acelermetro. Puede utilizar la clase AccelerometerData para identificar la direccin en la que el usuario mueve el dispositivo BlackBerry. Si se invoca AccelerometerData.getOrientation(), ste devuelve una de las constantes de la clase AccelerometerSensor que se corresponde con la direccin del dispositivo BlackBerry. Por ejemplo, si AccelerometerData.getOrientation() devuelve un valor igual a AccelerometerSensor.ORIENTATION_LEFT_UP, el lado izquierdo del dispositivo BlackBerry est hacia arriba. Puede utilizar la clase AccelerometerSensor para recuperar los datos de aceleracin del dispositivo BlackBerry. Si se invoca AccelerometerSensor.openRawDataChannel(), este devuelve un objeto de la clase net.rim.device.api.system.AccelerometerSensor.Channel. La clase AccelerometerSensor.Channel le permite abrir una conexin con el acelermetro. Puede recuperar datos del acelermetro invocando AccelerometerSensor.Channel.getLastAccelerationData(). Para mantener una conexin con el acelermetro se utiliza parte de la batera del dispositivo BlackBerry. Cuando la aplicacin del dispositivo BlackBerry ya no necesite recuperar los datos del acelermetro, debe invocar AccelerometerSensor.Channel.close() para cerrar la conexin. Cdigo de ejemplo: recuperacin de los datos del acelermetro
short[] xyz = new short[3]; while( running ) { channel.getLastAccelerationData(xyz); } channel.close();
2.
20
Gua de desarrollo
3. 4. 5. 6. 7.
Cree un subproceso.
while( running ) {
Invoque Thread.sleep() para especificar el intervalo entre las consultas al acelermetro, en milisegundos.
Thread.sleep( 500 );
2.
3.
Invoque Thread.sleep() para especificar el intervalo entre las consultas al acelermetro, en milisegundos.
short[] xyz = new short[ 3 ]; while( running ) { channel.getLastAccelerationData( xyz ); Thread.sleep( 500 ); }
4.
21
Gua de desarrollo
2.
3.
Invoque AccelerometerChannelConfig.setBackgroundMode(Boolean) para especificar compatibilidad con una aplicacin que se encuentra en segundo plano.
channelConfig.setBackgroundMode( true );
4.
5.
Invoque Thread.sleep() para especificar el intervalo entre las consultas al acelermetro, en milisegundos.
short[] xyz = new short[ 3 ]; while( running ) { channel.getLastAccelerationData( xyz ); Thread.sleep( 500 ); }
6.
2.
3.
Invoque AccelerometerChannelConfig.setSamplesCount() para especificar el nmero de lecturas de aceleracin a almacenar en el bfer. Cada elemento del bfer contiene las lecturas de aceleracin para la los ejes X, Y y Z y datos acerca de cundo tuvo lugar la lectura.
channelConfig.setSamplesCount( 500 );
4.
22
Gua de desarrollo
2. 3.
Invoque AccelerometerData.getNewBatchLength() para obtener el nmero de lecturas recuperadas desde la ltima consulta.
int newBatchSize = accData.getNewBatchLength();
4.
Invoque AccelerometerData.getXAccHistory(), AccelerometerData.getYAccHistory() y AccelerometerData.getZAccHistory() para recuperar datos del acelermetro del bfer para cada eje.
short[] xAccel = accData.getXAccHistory(); short[] yAccel = accData.getYAccHistory(); short[] zAccel = accData.getZAccHistory();
3.
Invoque AccelerometerData.getSampleTsHistory().
long[] queryTimestamps = accData.getSampleTsHistory();
23
Gua de desarrollo
Eventos
Eventos
Responder a eventos de navegacin
Puede utilizar los mtodos de navegacin Screen para crear una aplicacin de dispositivo BlackBerry. Si la aplicacin existente del dispositivo BlackBerry implementa la interfaz TrackwheelListener, actualice la aplicacin del dispositivo BlackBerry para utilizar los mtodos de navegacin Screen. 1. 2. Importe la clase net.rim.device.api.ui.Screen. Gestione los eventos de navegacin ampliando la clase net.rim.device.api.ui.Screen (o una de sus subclases) y omitiendo los siguientes mtodos de navegacin:
navigationClick(int status, int time) navigationUnclick(int status, int time) navigationMovement(int dx, int dy, int status, int time)
2. 3. 4. 5.
Para obtener ms informacin sobre los modificadores de estado para la clase net.rim.device.api.system.KeypadListener, consulte la referencia de API para BlackBerry Java Development Environment.
24
Gua de desarrollo
Accin del usuario Tocar la pantalla. Tocar y mantener el dedo presionando un elemento. Hacer clic en la pantalla. Hacer clic y mantener pulsada la pantalla. Soltar la pantalla. Despegar el dedo de la pantalla. Tocar la pantalla.
TouchEvent.UP TouchEvent.DOWN TouchGesture.TAP TouchEvent.CLICK TouchEvent.UNCLICK
25
Gua de desarrollo
Puede determinar si un dispositivo con una pantalla tctil es compatible con los clics que no ejercen presin invocando DeviceCapability.isTouchClickSupported(). Si el dispositivo es compatible con los clics que no ejercen presin, el mtodo devuelve false. Si el dispositivo dispone de una pantalla tctil SurePress, el mtodo devuelve true.
Gua de desarrollo
} return false; }
2. 3. 4.
().
2. 3.
().
27
Gua de desarrollo
4.
TouchGesture.SWIPE_NORTH.
2. 3. 4.
().
TouchGesture.SWIPE_SOUTH.
28
Gua de desarrollo
return false;
2. 3. 4.
().
TouchGesture.SWIPE_EAST.
29
Gua de desarrollo
net.rim.device.api.ui.Screen net.rim.device.api.ui.component.Dialog 2. 3. 4. Cree una clase que ample la clase Manager, la clase Screen, la clase Field, o una de las subclases Field.
public class newButtonField extends ButtonField { ().
TouchGesture.SWIPE_WEST.
2. 3. 4.
().
30
Gua de desarrollo
} return false;
2. 3.
En su implementacin del mtodotouchEvent(TouchEvent message) compruebe que existe el evento TouchGesture.TAP y que TouchGesture.getTapCount devuelve 2.
protected boolean touchEvent(TouchEvent message) { switch(message.getEvent()) { case TouchEvent.GESTURE: TouchGesture gesture = message.getGesture(); switch(gesture.getEvent()) { case TouchGesture.TAP: if(gesture.getTapCount() == 2) { Dialog.alert("Double tap occurred"); return true; } } } return false; }
2.
31
Gua de desarrollo
3. 4.
En su implementacin del mtodo touchEvent(TouchEvent message), invoque TouchEvent.getEvent (). Compruebe si el valor que devuelve TouchEvent.getEvent() es igual a TouchEvent.MOVE.
protected boolean touchEvent(TouchEvent message) { switch(message.getEvent()) { case TouchEvent.MOVE: Dialog.alert("Move event occurred"); return true; } return false; }
2. 3. 4.
().
32
Gua de desarrollo
En su implementacin del mtodo touchEvent(TouchEvent message) , compruebe si el valor que devuelve TouchEvent.getEvent() es igual que TouchEvent.MOVE.
protected boolean touchEvent(TouchEvent message) { switch(message.getEvent()) { case TouchEvent.MOVE: return true; } return false; }
2. 3.
En su implementacin del mtodo touchEvent(TouchEvent message) , compruebe si las siguientes invocaciones del mtodo devuelven valores mayores a cero: TouchEvent.getX(1), TouchEvent.getY (1), TouchEvent.getX(2), TouchEvent.getY(2).
protected boolean touchEvent(TouchEvent message) { switch(message.getEvent()) { case TouchEvent.MOVE: if(message.getX(1) > 0 && message.getY(1) > 0) { Dialog.alert("First finger touched/moved"); } if(message.getX(2) > 0 && message.getY(2) > 0) { Dialog.alert("Second finger touched/moved"); } return true; } return false; }
33
Gua de desarrollo
Gestos de pellizco
Gestos de pellizco
Los dispositivos BlackBerry con pantalla tctil son compatibles con los gestos de pellizco. Los gestos de pellizco normalmente amplan y alejan un objeto en la pantalla. Un pellizco comienza cuando se detectan dos puntos de contacto en la pantalla tctil. El punto focal del pellizco se define como el punto intermedio entre dos puntos de contacto iniciales. Al detectar dos puntos de contacto, tiene lugar un evento TouchGesture.PINCH_BEGIN. Los puntos de la coordenada del punto focal del gesto de pellizco se almacenan como TouchEvent.getX(1) y TouchEvent.getY(1). Puede acceder al valor inicial del zoom invocando TouchGesture.getPinchMagnitude(). Cuando el usuario mueve uno o ambos puntos de contacto, tiene lugar una serie de eventos TouchGesture.PINCH_UPDATE. Puede acceder a los valores de zoom durante el gesto de pellizco invocando TouchGesture.getPinchMagnitude(). Cuando el usuario completa el gesto, tiene lugar un evento TouchGesture.PINCH_END. Puede acceder al valor final del zoom invocando TouchGesture.getPinchMagnitude().
Ejemplo de cdigo: recuperar informacin acerca de un gesto de pellizco Este ejemplo demuestra cmo administrar un gesto de pellizco en el mtodo touchEvent() de la pantalla.
protected boolean touchEvent(TouchEvent message) { switch(message.getEvent()) { case TouchEvent.GESTURE: TouchGesture gesture = message.getGesture(); switch(gesture.getEvent()) { case TouchGesture.PINCH_END: Dialog.alert("Focal point: " + message.getX(1) + ", " + message.getY(1) + "\nFinal zoom value: " + gesture.getPinchMagnitude()); return true; } } return false; }
34
Gua de desarrollo
2. 3. 4.
En su objeto Screen, cree un objeto InputSettings para rellenar con propiedades de pantalla tctil.
InputSettings ts = TouchscreenSettings.createEmptySet();
Puede cambiar el valor de la propiedad TouchscreenSettings.DETECT_PINCH en cualquier momento, no slo cuando cree el objeto Screen. Cdigo de ejemplo Este ejemplo demuestra cmo activar los gestos para pellizcar por el panel tctil en el constructor de una pantalla.
public MyScreen() { setTitle("Sample Screen"); InputSettings ts = TouchscreenSettings.createEmptySet(); ts.set(TouchscreenSettings.DETECT_PINCH, 1); addInputSettings(ts); ... }
35
Gua de desarrollo
Este ejemplo demuestra cmo administrar un desplazamiento por el panel tctil en el mtodo touchEvent() de la pantalla.
protected boolean touchEvent(TouchEvent message) { switch(message.getEvent()) { case TouchEvent.GESTURE: TouchGesture gesture = message.getGesture(); switch(gesture.getEvent()) { case TouchGesture.NAVIGATION_SWIPE: Dialog.alert("Swipe direction: " + gesture.getSwipeDirection() + ", " + "\nMagnitude: " + gesture.getSwipeMagnitude()); return true; } } return false; }
2. 3. 4.
En su objeto Screen, cree un objeto InputSettings para rellenar con propiedades de navegacin.
InputSettings nd = NavigationDeviceSettings.createEmptySet();
Puede cambiar el valor de la propiedad NavigationDeviceSettings.DETECT_SWIPE en cualquier momento, no slo cuando cree el objeto Screen. Cdigo de ejemplo Este ejemplo muestra cmo activar los deslizamientos por el panel tctil en el constructor de una pantalla.
36
Gua de desarrollo
Inyeccin de eventos
public MyScreen() { setTitle("Sample Screen"); InputSettings nd = NavigationDeviceSettings.createEmptySet(); nd.set(NavigationDeviceSettings.DETECT_SWIPE, 1); addInputSettings(nd); ... }
Inyeccin de eventos
Puede generar eventos de interfaz de usuario mediante programacin utilizando la clase EventInjector y sus clases internas. En dispositivos BlackBerry que ejecutan BlackBerry Device Software versin 5.0 o posterior y que tienen pantallas tctiles, podr inyectar eventos tctiles, por ejemplo, deslizamientos o toques. Puede utilizar una de las clases internas EventInjector para modelar un evento y puede utilizar el mtodo invokeEvent() para inyectar el evento. El evento se enva a la aplicacin que est seleccionada actualmente y preparada para aceptar la entrada. Puede utilizar la inyeccin de eventos para automatizar las pruebas. Tambin puede utilizar la inyeccin de eventos para permitir a los perifricos interactuar con el dispositivo BlackBerry. Tambin la puede utilizar en aplicaciones accesibles como en convertidores de voz a texto. Si desea consultar una aplicacin de ejemplo que muestre la inyeccin de eventos, visite www.blackberry.com/go/toucheventinjectorsampleapp para descargar la aplicacin de ejemplo Inyector de eventos tctiles. Para obtener ms informacin acerca de la aplicacin de ejemplo, visite www.blackberry.com/go/docs/developers para leer la Descripcin general de la aplicacin de ejemplo Inyector de eventos tctiles.
37
Gua de desarrollo
Puede utilizar la API de marco de comandos en el paquete net.rim.device.api.command para definir las funcionalidades que puede utilizar en distintas ubicaciones de su aplicacin o en otras aplicaciones del dispositivo BlackBerry.
Metadatos de comando
Descripcin Utilice la clase CommandHandler para definir la funcionalidad que desea proporcionar en su aplicacin o en otras aplicaciones del dispositivo. Puede utilizar una clase que ample la clase CommandHandler abstracta y definir la funcionalidad en el mtodo execute() de su clase. Esta funcionalidad recibe el nombre de comando. Utilice la clase CommandMetadata para definir metadatos que describan un comando. Los metadatos de cada comando son encapsulados en un objeto CommandMetadata. La nica parte de metadatos necesaria para un comando es el identificador del comando, que se suministra cuando se construye el objeto CommandMetadata y se almacena en el campo del objeto COMMAND_ID.
CommandMetadata le ofrece otros campos que podr utilizar para describir el comando, como por ejemplo RESOURCE_BUNDLE_NAME, al que puede asignar el
Comando
nombre del paquete de recursos utilizado por el comando. Tambin puede definir elementos de metadatos especficos de un comando en concreto. Utilice la clase Command para ejecutar un comando. Puede pensar en una instancia Command como un proxy a una instancia de una clase que ample CommandHandler. Al invocar Command.execute(), la llamada se delega a la instancia CommandHandler asociada, pasando el contexto actual y pasando de manera transparente una versin de slo lectura de los metadatos de comando asociado para su ejecucin.
La API de marco de comandos ofrece dos registros que podr utilizar para almacenar sus comandos: Puede utilizar el registro local para almacenar los comandos y usarlos en su aplicacin mediante la clase LocalCommandRegistrarConnection. Puede utilizar el registro global para almacenar los comandos para su uso en otras aplicaciones del dispositivo mediante la clase RemoteCommandRegistrarConnection.
Las aplicaciones de ejemplo Demostracin de marco de comandos y la aplicacin remota de demostracin de marco de comandos estn incluidas en BlackBerry Java SDK. Estas aplicaciones de ejemplo muestran cmo definir y utilizar los comandos en una sola aplicacin y cmo definir los comandos en una aplicacin y utilizarlos en otras aplicaciones.
38
Gua de desarrollo
2.
Cree un controlador de comandos mediante la generacin de una clase que ample la clase abstracta CommandHandler . En execute(), defina la funcionalidad que desea asociar al componente de la interfaz de usuario. Para especificar si un comando es ejecutable para un objeto de contexto determinado, puede implementar el mtodo canExecute() en su controlador de comandos. Si no implementa canExecute(), su comando es siempre ejecutable.
// this command is always executable class DialogCommandHandler extends CommandHandler { public void execute(ReadOnlyCommandMetadata metadata, Object context) { Dialog.alert("Executing command for " + context.toString()); } }
3.
4.
Para un elemento de men o botn, puede configurar opcionalmente el contexto para el comando a travs del mtodo setCommandContext() de los componentes de la interfaz de usuario. Para algunos comandos, podra ser necesario un contexto para determinar qu debera hacer el comando. Si no configura un contexto, el objeto del elemento de men o el objeto de botn se encontrarn en el contexto.
myItem.setCommandContext(new Object() { public String toString() { return "My MenuItem Object"; } });
5.
Invoque setCommand() para especificar el comando del componente de la interfaz de usuario y proporcione el controlador de comandos como argumento del mtodo.
myItem.setCommand(new Command(new DialogCommandHandler()));
39
Gua de desarrollo
6.
El comando se ejecuta cuando un usuario del dispositivo BlackBerry lleva a cabo una accin en el componente de la interfaz de usuario (por ejemplo, cuando el usuario hace clic en un elemento del men). Ejemplos de cdigo Si desea conocer ejemplos de este enfoque con el fin de definir y utilizar los comandos, consulte la referencia de API para MenuItem y ButtonField.
2.
Cree un controlador de comandos mediante la generacin de una clase que ample la clase abstracta CommandHandler . En execute(), defina la funcionalidad que desea que est disponible. Para especificar si un comando es ejecutable para un objeto de contexto determinado, puede implementar opcionalmente canExecute() en su controlador de comandos. Si no implementa canExecute(), su comando es siempre ejecutable.
private static class ViewContactCommand extends CommandHandler { public void execute(ReadOnlyCommandMetadata metadata, Object context) { // Invoke the Contacts application to view a contact here } public boolean canExecute(ReadOnlyCommandMetadata metadata, Object context) { // Return true if the command can be executed // with the passed-in context object. } }
3.
4.
Si las aplicaciones que utilizan el comando deben crear instancias del comando, almacena el nombre de la clase del comando en los metadatos.
metadata.setClassname(ViewContactCommand.class.getName());
40
Gua de desarrollo
5.
Nota: Las aplicaciones pueden crear instancias de comandos de terceros de forma dinmica slo si los comandos se almacenan en el registro local. Opcionalmente, puede definir las categoras del comando y las categoras de contexto para el comando. Las aplicaciones que utilizan el comando utilizan las categoras para buscar comandos en un registro y para determinar si un comando es ejecutable. Tipo de categora Comando Descripcin Especifica el tipo de categorizacin que desea para su comando. Las aplicaciones que utilizan comandos pueden consultar un registro para comandos en categoras especificadas. Especifica los contextos que son apropiados para que el comando se ejecute en los mismos. Puede utilizar esta categora para indicar a las aplicaciones que utilizan el comando, qu clases de objetos de contexto pueden pasarse a CommandHandler.Execute().
Contexto
String[] myCommandCategories = {"app.contacts", "action.view"}; metadata.setCommandCategories(new CategoryCollection(myCommandCategories)); String[] myContextCategories = {emailaddr}; metadata.setContextCategories(new CategoryCollection(myContextCategories));
6.
Registre el comando. a. Si desea que su comando est disponible slo en su aplicacin, utilice un objeto LocalCommandRegistrarConnection. El registro local est disponible slo en el proceso actual.
LocalCommandRegistrarConnection connection = new LocalCommandRegistrarConnection(); connection.registerCommand(new ViewContactCommand(), metadata);
b.
Nota: Para que las aplicaciones creen instancias del comando de forma dinmica, debe registrar el comando slo con los metadatos invocando registerCommand(CommandMetadata)). De lo contrario, se utiliza el CommandHandler registrado. Si desea que su comando est disponible en cualquier aplicacin, utilice un objeto RemoteCommandRegistrarConnection. El registro global est disponible para todos los procesos que se ejecutan en el dispositivo.
RemoteCommandRegistrarConnection connection = new RemoteCommandRegistrarConnection(); connection.registerCommand(new ViewContactCommand(), metadata);
7.
Desde otra ubicacin en la aplicacin (para comandos locales) o desde cualquier aplicacin en el dispositivo (para comandos globales), recupere y utilice el comando. a. Cree un objeto CommandRequest y rellnelo con la informacin acerca del comando que desea recuperar del registro.
CommandRequest request = new CommandRequest(); String[] myCommandCategories = {"app.contacts", "action.view"}; request.setCommandCategories(new CategoryCollection(myCommandCategories)); ...
41
Gua de desarrollo
b.
c.
Ejemplos de cdigo Hay dos aplicaciones de ejemplo que utilizan la API de marco de comandos incluidas en BlackBerry Java SDK: La aplicacin remota de demostracin del marco de comandos demuestra cmo crear un comando y almacenarlo en el registro global para su uso en otras aplicaciones. La demostracin del marco de comandos muestra cmo crear comandos, almacenarlos en el registro local y los agregarlos como elementos de men en los mens emergentes para los campos, dependiendo del contenido de los campos. Esta aplicacin de ejemplo tambin ejecuta un comando que se almacena en el registro global a travs de la aplicacin remota de demostracin del marco de comandos.
42
Gua de desarrollo
Puede disponer los componentes de la interfaz de usuario en una pantalla de la aplicacin utilizando gestores de diseo de la API de BlackBerry. Las siguientes clases amplan la clase Manager, proporcionada en el paquete net.rim.device.apu.ui, sta ofrece diseos predefinidos para los componentes de la interfaz de usuario en la pantalla de la aplicacin. Gestor de diseo
FlowFieldManager
HorizontalFieldManager
Descripcin Este gestor de diseo ordena los componentes de la interfaz de usuario verticalmente y, a continuacin, horizontalmente dependiendo del tamao de la pantalla. El primer componente de la interfaz de usuario se coloca en la esquina superior izquierda de la pantalla y los siguientes componentes se colocan horizontalmente a la derecha del primer componente hasta alcanzar la anchura de la pantalla. Una vez que los componentes de la interfaz de usuario no caben en la primera fila, el siguiente componente de la interfaz de usuario se coloca debajo de la primera fila de componentes en una fila que tiene una altura que es igual a la del componente ms alto de la fila que hay sobre el mismo. Puede aplicar bits de estilo vertical (por ejemplo, Field.FIELD_TOP, Field.FIELD_BOTTOM, o Field.FIELD_VCENTER) para alinear los componentes de la interfaz de usuario verticalmente dentro de su fila. Este gestor de diseo ordena los componentes de la interfaz de usuario en una nica fila horizontal que comienza en el lado izquierdo de la pantalla y termina en el lado derecho de la pantalla. Puesto que este gestor de diseo alinea los componentes de la interfaz de usuario horizontalmente, no es posible aplicar bits de estilo horizontal (por ejemplo, Field.FIELD_LEFT, Field.FIELD_HCENTER, o Field.FIELD_RIGHT). Puede aplicar bits de estilo vertical (por ejemplo, Field.FIELD_TOP, Field.FIELD_BOTTOM, o Field.FIELD_VCENTER). Si los componentes de la interfaz de usuario no se ajustan a la anchura disponible de la pantalla, debe utilizar el bit de estilo Manager.HORIZONTAL_SCROLL para activar el desplazamiento horizontal. De lo contrario, la pantalla muestra tantos componentes de la interfaz de usuario como le sea posible dentro de la anchura disponible de la pantalla y el resto no se muestra. Los componentes de la interfaz de usuario existen pero no son visibles. Esta situacin puede generar comportamientos de desplazamiento inesperados para sus usuarios. Este gestor de diseo ordena los componentes de la interfaz de usuario en una nica columna vertical que comienza en la parte superior de la pantalla y termina en la parte inferior de la misma. Puesto que este gestor de diseo
43
VerticalFieldManager
Gua de desarrollo
Gestor de diseo
Descripcin se ha diseado para ordenar los elementos de forma vertical, no es posible aplicar bits de estilo vertical a los componentes de la interfaz de usuario (por ejemplo, Field.FIELD_TOP, Field.FIELD_BOTTOM o Field.FIELD_VCENTER). Puede aplicar bits de estilo horizontal (por ejemplo, Field.FIELD_LEFT, Field.FIELD_HCENTER, o Field.FIELD_RIGHT).
Puede utilizar gestores de diseo adicionales para ordenar los componentes de la interfaz de usuario en su aplicacin. Por ejemplo, puede utilizar el gestor de diseo GridFieldManager para colocar los componentes de la interfaz de usuario en filas y columnas en una pantalla para crear una cuadrcula. Puede utilizar el gestor de diseo EyelidFieldManager para mostrar componentes de la interfaz de usuario en el par de gestores que aparecen en la parte superior e inferior de la pantalla temporalmente.
2. 3. 4. 5.
44
Gua de desarrollo
Las cuadrculas cuentan con un ndice cero, por lo que la primera celda se encuentra en la fila 0, en la columna 0. En una configuracin regional con una direccin de texto de izquierda a derecha, la primera celda se encuentra en la esquina superior izquierda de la cuadrcula.
En una configuracin regional con una direccin de texto de derecha a izquierda, la primera celda se encuentra en la esquina superior derecha de la cuadrcula.
Puede agregar campos a una cuadrcula de forma secuencial (de izquierda a derecha, de arriba a abajo en configuraciones regionales con una izquierda direccin de texto de izquierda a derecha; de derecha a izquierda, de arriba a abajo en las configuraciones regionales con una direccin de texto de derecha a izquierda) o bien especificando una fila y una columna en la cuadrcula. Puede eliminar campos, insertar campos, especificar el espaciado entre columnas y filas y recuperar las propiedades de la cuadrcula. Las cuadrculas no contienen filas de encabezado definidas ni columnas de encabezado. Puede emular la apariencia de los encabezados cambiando la apariencia de los campos en la primera fila o columna de la cuadrcula. Las cuadrculas pueden desplazarse horizontal o verticalmente si la anchura o la altura de la cuadrcula exceden el rea visible de la pantalla. Puede especificar el ancho de la columna invocando GridFieldManager.setColumnProperty() y puede especificar la altura de la fila invocando GridFieldManager.setRowProperty(). Al invocar estos mtodos, debe especificar una propiedad de GridFieldManager. Propiedad
FIXED_SIZE PREFERRED_SIZE
Descripcin la anchura o la altura son de un tamao fijo en pxeles la anchura o la altura son del tamao preferido basado en el tamao mximo preferido de los campos en la columna o la fila (PREFERRED_SIZE es la propiedad predeterminada)
45
Gua de desarrollo
Propiedad
PREFERRED_SIZE_WITH_MAXIMUM AUTO_SIZE
Descripcin la anchura o la altura son de un tamao preferido hasta un tamao mximo la anchura y la altura se basan en el espacio disponible en pantalla
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. En el ejemplo, la clase GridScreen, descrita en el paso 3, representa la pantalla personalizada.
class GridFieldManagerDemo extends UiApplication { public static void main(String[] args) { GridFieldManagerDemo theApp = new GridFieldManagerDemo(); theApp.enterEventDispatcher(); } GridFieldManagerDemo() { pushScreen(new GridScreen()); } }
3.
4.
En el constructor de pantalla, invoque setTitle() para establecer el texto que desea que aparezca en la seccin del ttulo de la pantalla.
setTitle("GridFieldManager Demo");
5.
En el constructor de pantalla, cree una instancia de la clase GridFieldManager. Especifique el nmero de filas y columnas, y el estilo de la cuadrcula (utilizando un estilo heredado de net.rim.device.api.ui.Manager). Especifique 0 para utilizar el estilo predeterminado.
GridFieldManager grid; grid = new GridFieldManager(2,3,0);
6.
46
Gua de desarrollo
7.
En el constructor de pantalla, invoque los mtodos de GridFieldManager set() para especificar las propiedades de la cuadrcula.
grid.setColumnPadding(20); grid.setRowPadding(20);
8.
Despus de terminar: Puede cambiar la cuadrcula despus de haberla creado. Por ejemplo, puede agregar campos, borrar campos o cambiar las propiedades de la cuadrcula.
47
Gua de desarrollo
grid.setColumnPadding(20); grid.setRowPadding(20); add(grid); // The grid looks like this: // | one | two | three // | four | five | // insert a cell first row, second column grid.insert(new LabelField("insert"), 0, 1); // The grid now looks like this: // | one | insert | two // | three | four | five // delete a cell second row, second column grid.delete(1,1); // The grid now looks like this: // | one | insert | two // | three | | five // Add field to first unoccupied cell grid.add(new LabelField("new")); // The grid now looks like this: // | one | insert | two // | three | new | five
Mostrar los valores ButtonField y LabelField temporalmente en la parte superior e inferior de la pantalla
1. Importe las clases y las interfaces necesarias.
import import import import import net.rim.device.api.system.*; net.rim.device.api.ui.*; net.rim.device.api.ui.component.*; net.rim.device.api.ui.container.*; net.rim.device.api.ui.extension.container.*;
48
Gua de desarrollo
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase EyelidFieldManagerDemoScreen, descrita en el paso 3, representa la pantalla personalizada.
public class EyelidFieldManagerDemo extends UiApplication { public static void main(String[] args) { EyelidFieldManagerDemo app = new EyelidFieldManagerDemo(); app.enterEventDispatcher(); } public EyelidFieldManagerDemo() { pushScreen(new EyelidFieldManagerDemoScreen()); } }
3.
4.
En el constructor de pantalla, invoque setTitle() para establecer el texto que aparece en la seccin del ttulo de la pantalla.
setTitle("EyelidFieldManager Demo");
5. 6.
En el constructor de pantalla, invoque EyelidFieldManager.addTop() para agregar un objeto LabelField al gestor principal de EyelidFieldManager.
manager.addTop(new LabelField("Hello World"));
7.
En el constructor de pantalla, cree un objeto de HorizontalFieldManager. Invoque HorizontalFieldManager.add() para agregar botones al HorizontalFieldManager. Invoque EyelidFieldManager.addBottom() para agregar HorizontalFieldManager al gestor secundario de EyelidFieldManager.
HorizontalFieldManager buttonPanel = new HorizontalFieldManager (Field.FIELD_HCENTER | Field.USE_ALL_WIDTH); buttonPanel.add(new SimpleButton("Button 1")); buttonPanel.add(new SimpleButton("Button 2")); manager.addBottom(buttonPanel);
8.
En el constructor de pantalla, invoque EyelidFieldManager.setEyelidDisplayTime() para especificar, en milisegundos, el perodo de la inactividad que debe transcurrir antes que el par de directores desaparezca.
49
Gua de desarrollo
manager.setEyelidDisplayTime(3000);
9.
Ejemplo de cdigo: mostrar los valores ButtonField y LabelField temporalmente en la parte superior e inferior de la pantalla
import net.rim.device.api.system.*; import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.ui.extension.container.*; public class EyelidFieldManagerDemo extends UiApplication { public static void main(String[] args) { EyelidFieldManagerDemo app = new EyelidFieldManagerDemo(); app.enterEventDispatcher(); } public EyelidFieldManagerDemo() { pushScreen(new EyelidFieldManagerDemoScreen()); } } class EyelidFieldManagerDemoScreen extends MainScreen { public EyelidFieldManagerDemoScreen() { setTitle("EyelidFieldManager Demo"); EyelidFieldManager manager = new EyelidFieldManager(); manager.addTop(new LabelField("Hello World")); HorizontalFieldManager buttonPanel = new HorizontalFieldManager (Field.FIELD_HCENTER | Field.USE_ALL_WIDTH); buttonPanel.add(new ButtonField("Button 1")); buttonPanel.add(new ButtonField("Button 2")); manager.addBottom(buttonPanel); manager.setEyelidDisplayTime(3000); add(manager); } }
50
Gua de desarrollo
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase AbsoluteFieldManagerDemoScreen, descrita en el paso 3, representa la pantalla personalizada.
public class AbsoluteFieldManagerDemo extends UiApplication { public static void main(String[] args) { AbsoluteFieldManagerDemo app = new AbsoluteFieldManagerDemo(); app.enterEventDispatcher(); } public AbsoluteFieldManagerDemo() { pushScreen(new AbsoluteFieldManagerDemoScreen()); } }
3.
Cree el marco para la pantalla personalizada ampliando la clase MainScreen. Invoque setTitle() para especificar el texto que aparece en la seccin del ttulo de la pantalla.
class AbsoluteFieldManagerDemoScreen extends MainScreen { public AbsoluteFieldManagerDemoScreen() { setTitle("AbsoluteFieldManager Demo"); } }
4. 5.
En el constructor de pantalla, cree e inicialice una variable para almacenar la coordenada Y que corresponde al centro vertical de la pantalla.
int halfwayDown = Display.getHeight() / 2;
6.
En el constructor de pantalla, invoque AbsoluteFieldManager.add() para agregar un objeto LabelField en el centro vertical de la pantalla y una coordenada X de 2.
manager.add(new LabelField("Hello world"), 2, halfwayDown);
7.
Gua de desarrollo
} class AbsoluteFieldManagerDemoScreen extends MainScreen { public AbsoluteFieldManagerDemoScreen() { setTitle("AbsoluteFieldManager Demo"); AbsoluteFieldManager manager = new AbsoluteFieldManager(); int halfwayDown = Display.getHeight() / 2; manager.add(new LabelField("Hello world"), 2, halfwayDown); add(manager); } }
52
Gua de desarrollo
2. 3.
Botones
Utilice botones para permitir a los usuarios realizar una accin desde un cuadro de dilogo. Los mens incluyen normalmente las acciones que estn asociadas a una pantalla. Los usuarios pueden realizar las acciones siguientes con un botn: Slo dispositivos BlackBerry con panel tctil Desplazar un dedo en el panel tctil. Hacer clic con el botn o pulsar la tecla Intro. Slo dispositivos BlackBerry con pantalla tctil y panel tctil Tocar el botn levemente. Desplazar un dedo en el panel tctil. Tocar el elemento. Hacer clic en el panel tctil. Pulse la tecla Intro.
53
Gua de desarrollo
Botones
Crear un botn
1. 2. Importe la clase net.rim.device.api.ui.component.ButtonField. Cree una instancia de ButtonField mediante un parmetro de estilo.
54
Gua de desarrollo
Casillas de verificacin
Casillas de verificacin
Utilice las casillas de verificacin para opciones binarias que los usuarios puedan comprender fcilmente. Por ejemplo, utilice una casilla de verificacin para una opcin que pueda activarse y desactivarse. Los usuarios pueden llevar a cabo las acciones siguientes con una casilla de verificacin: Slo dispositivos BlackBerry con panel Slo dispositivos BlackBerry con tctil pantalla tctil y panel tctil Pulsar la tecla Espacio o hacer clic en el Tocar el elemento. panel tctil. Pulse la tecla Espacio. Hacer clic en el panel tctil.
55
Gua de desarrollo
Casillas de verificacin
Utilice etiquetas positivas siempre que sea posible. Por ejemplo, si los usuarios tienen la opcin de activar o desactivar una caracterstica, utilice "activar" en lugar de "desactivar" en la etiqueta. Coloque las etiquetas a la derecha de las casillas de verificacin. En la pantalla Opciones, coloque las etiquetas en el lado izquierdo de las casillas de verificacin. Utilice maysculas para las oraciones. Punte las etiquetas para las casillas de verificacin con dos puntos (:).
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase MyUiScreen, que se describe en el paso 3, representa la pantalla personalizada.
public class MyUi extends UiApplication { public static void main(String[] args) { MyUi theApp = new MyUi(); theApp.enterEventDispatcher(); } public MyUi() { pushScreen(new MyUiScreen()); } }
3.
Cree la pantalla personalizada de la aplicacin ampliando la clase MainScreen. En el constructor de la pantalla, invoque setTitle() para especificar el ttulo de la pantalla.
class MyUiScreen extends MainScreen { public MyUiScreen() { setTitle("UI Component Sample"); } }
4.
En el constructor de pantalla, cree una casilla de verificacin utilizando la clase CheckboxField. En el constructor CheckboxField, especifique la etiqueta para la casilla de verificacin y utilice un valor booleano para indicar si la casilla de verificacin es la seleccin predeterminada (por ejemplo, true indica que, de forma predeterminada, la casilla de verificacin se ha seleccionado). Invoque add() para agregar la casilla de verificacin a la pantalla.
56
Gua de desarrollo
add(new CheckboxField("First Check Box", true)); add(new CheckboxField("Second Check Box", false));
5.
Para cambiar el comportamiento predeterminado de una casilla de verificacin, utilice los estilos que se heredan de la clase Field. Por ejemplo, para crear una casilla de verificacin que los usuarios no puedan cambiar, puede utilizar el estilo READONLY.
add(new CheckboxField("First Check Box", true, this.READONLY));
6.
Para omitir la funcionalidad predeterminada que solicita al usuario guardar los cambios antes de que se cierre la aplicacin, en la extensin de la clase MainScreen, omita el mtodo MainScreen.onSavePrompt(). En el siguiente ejemplo de cdigo, el valor devuelto es true que indica que la aplicacin no preguntar al usuario antes de cerrarse.
public boolean onSavePrompt() { return true; }
57
Gua de desarrollo
2. 3.
4.
Implemente los constructores para definir la etiqueta, forma y estilo del botn personalizado.
public CustomButtonField(String label) this(label, RECTANGLE, 0); } public CustomButtonField(String label, this(label, shape, 0); } public CustomButtonField(String label, this(label, RECTANGLE, style); } public CustomButtonField(String label, super(style); _label = label; _shape = shape; _font = getFont(); { int shape) { long style) { int shape, long style) {
58
Gua de desarrollo
5.
Implemente layout() para especificar la distribucin de los datos en el campo. Lleve a cabo los clculos ms complejos en layout() en lugar de en paint(). El gestor del campo invoca layout() con el fin de determinar cmo distribuye el campo su contenido en el espacio disponible. Invoque Math.min() para devolver el ms pequeo de los valores de anchura y altura, as como la anchura y altura preferida del campo. Invoque Field.setExtent(int,int) para establecer las dimensiones necesarias del campo.
protected void layout(int width, int height) { _font = getFont(); _labelHeight = _font.getHeight(); _labelWidth = _font.getAdvance(_label); width = Math.min( width, getPreferredWidth() ); height = Math.min( height, getPreferredHeight() ); setExtent( width, height ); }
6.
Implemente getPreferredWidth() utilizando las dimensiones relativas de la etiqueta de campo para garantizar que la etiqueta no excede las dimensiones del componente. Utilice un valor switch block para determinar la anchura preferida segn la forma del campo personalizado. Para cada tipo de la forma, utilice una declaracin if para comparar dimensiones y determinar la anchura preferida para el campo personalizado.
public int getPreferredWidth() { switch(_shape) { case TRIANGLE: if (_labelWidth < _labelHeight) { return _labelHeight << 2; } else { return _labelWidth << 1; } case OCTAGON: if (_labelWidth < _labelHeight) { return _labelHeight + 4; } else { return _labelWidth + 8; } case RECTANGLE: default: return _labelWidth + 8; } }
7.
Implemente getPreferredHeight() utilizando las dimensiones relativas de la etiqueta de campo para determinar la altura preferida. Utilice un valor switch block para determinar la altura preferida segn la forma del campo personalizado. Para cada tipo de la forma, utilice una declaracin if para comparar dimensiones y determinar la altura preferida para el campo personalizado.
public int getPreferredHeight() { switch(_shape) { case TRIANGLE: if (_labelWidth < _labelHeight) { return _labelHeight << 1; } else {
59
Gua de desarrollo
} return 0;
return _labelWidth; } case RECTANGLE: return _labelHeight + 4; case OCTAGON: return getPreferredWidth();
8.
Implemente paint(). El gestor del campo invoca paint() para volver a dibujar el campo cuando un rea del campo se marque como no vlida. Utilice un valor switch block para volver a pintar un campo personalizado basado en la forma del campo personalizado. Para un campo que tenga forma de tringulo u octgono, utilice la anchura del campo para calcular la posicin horizontal y vertical de los puntos de inicio y fin de las lneas. Invoque graphics.drawLine() y utilice los puntos de inicio y fin para dibujar las lneas que definen el campo personalizado. Para un campo que tenga una forma rectangular, invoque graphics.drawRect() y utilice la anchura y altura del campo para dibujar el campo personalizado. Invoque graphics.drawText() y utilice la anchura del campo para dibujar una cadena de texto en un rea del campo.
protected void paint(Graphics graphics) { int textX, textY, textWidth; int w = getWidth(); switch(_shape) { case TRIANGLE: int h = (w>>1); int m = (w>>1)-1; graphics.drawLine(0, h-1, m, 0); graphics.drawLine(m, 0, w-1, h-1); graphics.drawLine(0, h-1, w-1, h-1); textWidth = Math.min(_labelWidth,h); textX = (w - textWidth) >> 1; textY = h >> 1; break; case OCTAGON: int x = 5*w/17; int x2 = w-x-1; int x3 = w-1; graphics.drawLine(0, x, 0, x2); graphics.drawLine(x3, x, x3, x2); graphics.drawLine(x, 0, x2, 0); graphics.drawLine(x, x3, x2, x3); graphics.drawLine(0, x, x, 0); graphics.drawLine(0, x2, x, x3); graphics.drawLine(x2, 0, x3, x); graphics.drawLine(x2, x3, x3, x2); textWidth = Math.min(_labelWidth, w - 6); textX = (w-textWidth) >> 1; textY = (w-_labelHeight) >> 1; break; case RECTANGLE: default: graphics.drawRect(0, 0, w, getHeight()); textX = 4; textY = 2; textWidth = w - 6; break;
60
Gua de desarrollo
9.
Implemente los mtodos Field set() y get(). Implemente los mtodos Field.getLabel(), Field.getShape(), Field.setLabel(String label) y Field.setShape(int shape) para devolver las variables de instancia del campo personalizado.
public String getLabel() { return _label; } public int getShape() { return _shape; } public void setLabel(String label) { _label = label; _labelWidth = _font.getAdvance(_label); updateLayout(); } public void setShape(int shape) { _shape = shape; }
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase BrowserFieldDemoScreen, descrita en el paso 3, representa la pantalla personalizada.
public class BrowserFieldDemo extends UiApplication { public static void main(String[] args) { BrowserFieldDemo app = new BrowserFieldDemo(); app.enterEventDispatcher(); } public BrowserFieldDemo() { pushScreen(new BrowserFieldDemoScreen()); } }
3.
Gua de desarrollo
4. 5. 6.
62
Gua de desarrollo
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase BrowserFieldDemoScreen, descrita en el paso 3, representa la pantalla personalizada.
public class BrowserFieldDemo extends UiApplication { public static void main(String[] args) { BrowserFieldDemo app = new BrowserFieldDemo(); app.enterEventDispatcher(); } public BrowserFieldDemo() { pushScreen(new BrowserFieldDemoScreen()); } }
3.
4. 5. 6.
En el constructor de pantalla, invoque BrowserField.requestContent() para especificar la ubicacin del contenido HTML y mostrarlo.
myBrowserField.requestContent("http://www.blackberry.com");
Ejemplo de cdigo: mostrar contenido HTML desde una pgina Web en un campo del navegador
import net.rim.device.api.browser.field2.*; import net.rim.device.api.system.*; import net.rim.device.api.ui.*; import net.rim.device.api.ui.container.*; public class BrowserFieldDemo extends UiApplication { public static void main(String[] args) 63
Gua de desarrollo
} class BrowserFieldDemoScreen extends MainScreen { public BrowserFieldDemoScreen() { BrowserField myBrowserField = new BrowserField(); add(myBrowserField); myBrowserField.requestContent("http://www.blackberry.com"); } }
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase BrowserFieldDemoScreen, descrita en el paso 3, representa la pantalla personalizada.
public class BrowserFieldDemo extends UiApplication { public static void main(String[] args) { BrowserFieldDemo app = new BrowserFieldDemo(); app.enterEventDispatcher(); } public BrowserFieldDemo() { pushScreen(new BrowserFieldDemoScreen()); } }
3.
64
Gua de desarrollo
4. 5. 6.
En el constructor de pantalla, invoque BrowserField.requestContent() para especificar la ubicacin del recurso en su aplicacin y mostrar el contenido HTML.
myBrowserField.requestContent("local:///test.html");
Nota: La clase BrowserField no accede a los recursos utilizando una estructura de carpetas. La clase BrowserField muestra el primer recurso encontrado que coincide con el nombre de archivo especificado.
65
Gua de desarrollo
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase BrowserFieldDemoScreen, descrita en el paso 3, representa la pantalla personalizada.
public class BrowserFieldDemo extends UiApplication { public static void main(String[] args) { BrowserFieldDemo app = new BrowserFieldDemo(); app.enterEventDispatcher(); } public BrowserFieldDemo() { pushScreen(new BrowserFieldDemoScreen()); } }
3.
4. 5.
En el constructor de pantalla, invoque BrowserFieldConfig.setProperty() para especificar una propiedad de BrowserField. El primer parmetro de setProperty() especifica la propiedad, y el segundo especifica el valor de la propiedad. Por ejemplo, el ejemplo de cdigo siguiente especifica la propiedad NAVIGATION_MODE de un objeto BrowserField:
myBrowserFieldConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE, BrowserFieldConfig.NAVIGATION_MODE_POINTER);
6.
En el constructor de pantalla, cree una instancia de la clase BrowserField que utilice la configuracin que ha definido.
BrowserField browserField = new BrowserField(myBrowserFieldConfig);
66
Gua de desarrollo
} class BrowserFieldDemoScreen extends MainScreen { public BrowserFieldDemoScreen() { BrowserFieldConfig myBrowserFieldConfig = new BrowserFieldConfig(); myBrowserFieldConfig.setProperty(BrowserFieldConfig .NAVIGATION_MODE,BrowserFieldConfig.NAVIGATION_MODE_POINTER); BrowserField browserField = new BrowserField(myBrowserFieldConfig); } }
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase BrowserFieldDemoScreen, descrita en el paso 3, representa la pantalla personalizada.
public class BrowserFieldDemo extends UiApplication { public static void main(String[] args) { BrowserFieldDemo app = new BrowserFieldDemo(); app.enterEventDispatcher(); } public BrowserFieldDemo() { pushScreen(new BrowserFieldDemoScreen()); } }
3.
Gua de desarrollo
{ }
4. 5. 6.
En el constructor de pantalla, cree un objeto String que contenga la direccin Web bsica de la pgina Web a la que va a enviar los datos de formularios.
String baseURL = "http://www.blackberry.com";
7.
En el constructor de pantalla, cree un objeto String que especifique los datos de formularios que la aplicacin enva a la pgina Web.
String postData = "fieldname1=value1&fieldname2=value2";
8.
En el constructor de pantalla, cree un objeto Hashtable para almacenar la informacin de encabezado para los datos de formulario.
Hashtable header = new Hashtable();
9.
En el constructor de pantalla, invoque Hashtable.put() para especificar la informacin de encabezado para los datos de formulario.
header.put("Content-Length", "" + postData.length()); header.put("Content-Type", "application/x-www-form-urlencoded");
10. En el constructor de pantalla, invoque BrowserField.requestContent() para enviar los datos de formulario a la pgina Web y mostrar la pgina Web.
browserField.requestContent(baseURL, postData.getBytes(), new HttpHeaders(header));
Ejemplo de cdigo: enviar los datos del formulario a una direccin Web en un campo del navegador
import net.rim.device.api.browser.field2.*; import net.rim.device.api.io.http.*; import net.rim.device.api.system.*; import net.rim.device.api.ui.*; import net.rim.device.api.ui.container.*; import java.lang.*; import java.util.*; public class BrowserFieldDemo extends UiApplication { public static void main(String[] args) { BrowserFieldDemo app = new BrowserFieldDemo(); app.enterEventDispatcher(); } 68
Gua de desarrollo
Cuadros de dilogo
} class BrowserFieldDemoScreen extends MainScreen { public BrowserFieldDemoScreen() { BrowserField browserField = new BrowserField();} add(browserField); String baseURL = "http://www.blackberry.com"; String postData = "fieldname1=value1&fieldname2=value2"; Hashtable header = new Hashtable(); header.put("Content-Length", "" + postData.length()); header.put("Content-Type", "application/x-www-form-urlencoded"); browserField.requestContent(baseURL, postData.getBytes(), new HttpHeaders(header)); } }
Cuadros de dilogo
Utilice los cuadros de dilogo para realizar las siguientes acciones: Pedir a los usuarios la informacin necesaria para finalizar una tarea iniciada por un usuario. Transmitir a los usuarios informacin urgente o el estado de acciones importantes. Advertir a los usuarios sobre condiciones o situaciones inesperadas o que puedan resultar destructivas.
Los cuadros de dilogo son modales; interrumpen el funcionamiento normal del dispositivo BlackBerry y se insertan en la parte superior de la pila. Un cuadro de dilogo incluye un mensaje, los botones que permiten a los usuarios llevar a cabo una accin y un indicador que muestra el tipo de cuadro de dilogo. El tamao de los cuadros de dilogo depende del tamao de la pantalla del dispositivo BlackBerry. El tema que seleccionan los usuarios en el dispositivo BlackBerry determina el estilo visual del cuadro de dilogo.
69
Gua de desarrollo
Cuadros de dilogo
70
Gua de desarrollo
Cuadros de dilogo
71
Gua de desarrollo
Listas desplegables
Evite utilizar las etiquetas "S" y "No". Utilice verbos que describan la accin asociada (por ejemplo, "Cancelar", "Eliminar", "Descartar" o "Guardar"). Este enfoque ayuda a los usuarios a comprender rpida y fcilmente lo que sucede cuando hacen clic en un botn. Si es necesario, incluya texto ms descriptivo en otra parte en la pantalla (por ejemplo, en un mensaje de la aplicacin). Evite la utilizacin de smbolos o grficos en una etiqueta. Evite el uso de puntuacin en las etiquetas. Utilice puntos suspensivos en una etiqueta de botn para indicar que es necesaria informacin adicional antes de que la accin asociada pueda realizarse.
Listas desplegables
Utilice listas desplegables para proporcionar un conjunto de valores mutuamente exclusivos. Los usuarios pueden llevar a cabo las acciones siguientes con una lista desplegable: Slo dispositivos BlackBerry con panel tctil Pulsar la tecla Intro o hacer clic en el panel tctil. Slo dispositivos BlackBerry con pantalla tctil y panel tctil Tocar el elemento. Pulse la tecla Intro. Hacer clic en el panel tctil.
72
Gua de desarrollo
Listas desplegables
Gua de desarrollo
Listas desplegables
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase MyUiScreen, que se describe en el paso 3, representa la pantalla personalizada.
public class MyUi extends UiApplication { public static void main(String[] args) { MyUi theApp = new MyUi(); theApp.enterEventDispatcher(); } public MyUi() { pushScreen(new MyUiScreen()); } }
3.
Cree la pantalla personalizada de la aplicacin ampliando la clase MainScreen. En el constructor de la pantalla, invoque setTitle() para especificar el ttulo de la pantalla.
class MyUiScreen extends MainScreen { public MyUiScreen() { setTitle("UI Component Sample"); } }
4.
En el constructor de pantalla, cree una lista desplegable que muestre una lista de palabras u oraciones utilizando la clase ObjectChoiceField. Cree una matriz de String para almacenar los elementos que desea mostrar en la lista desplegable. Cree un objeto int para almacenar el elemento predeterminado que se va a mostrar en la lista desplegable. En el constructor ObjectChoiceField, especifique la etiqueta para la lista desplegable, la matriz de elementos a mostrar y el elemento predeterminado. En el siguiente cdigo de ejemplo, se mostrar Mircoles de forma predeterminada. Invoque add() para agregar la lista desplegable a la pantalla.
String choices[] = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"}; int iSetTo = 2; add(new ObjectChoiceField("First Drop-down List",choices,iSetTo));
5.
En el constructor de pantalla, cree una segunda lista desplegable que muestre una lista de nmeros utilizando la clase NumericChoiceField. En el constructor NumericChoiceField, especifique la etiqueta de la lista desplegable, el primer y ltimo nmero a mostrar en la lista desplegable, el incremento a utilizar para la lista de nmeros y el nmero predeterminado. En el siguiente ejemplo de cdigo, los parmetros numricos se almacenan en objetos int. Los nmeros del 1 al 31 se incluyen en la lista desplegable y, de forma predeterminada, se muestre el nmero 10. Invoque add() para agregar la segunda lista desplegable a la pantalla.
74
Gua de desarrollo
Listas desplegables
int iStartAt = 1; int iEndAt = 31; int iIncrement = 1; iSetTo = 10; add(new NumericChoiceField("Numeric Drop-Down List",iStartAt,iEndAt,iIncrement,iSetTo));
6.
Para omitir la funcionalidad predeterminada que solicita al usuario guardar los cambios antes de que se cierre la aplicacin, en la extensin de la clase MainScreen, omita el mtodo MainScreen.onSavePrompt(). En el siguiente ejemplo de cdigo, el valor devuelto es true que indica que la aplicacin no preguntar al usuario antes de cerrarse.
public boolean onSavePrompt() { return true; }
75
Gua de desarrollo
Etiquetas
return true;
Etiquetas
Utilice una etiqueta para mostrar texto que identifique un control.
Listas y tablas
Utilice listas y tablas para mostrar los elementos que los usuarios pueden seleccionar y abrir. Si la lista es larga, los elementos se capturan y muestran por lotes. Cuando los usuarios alcanzan el ltimo elemento de la lista, el siguiente lote de elementos se muestra al final de la lista. Utilice una lista sencilla para mostrar fcilmente el texto en filas.
76
Gua de desarrollo
Listas y tablas
Utilice una lista enriquecida para mostrar fcilmente filas de texto e iconos. Actualmente, las listas enriquecisas slo muestran informacin y no son interactivas.
77
Gua de desarrollo
Listas y tablas
Puede agrupar los elementos bajo encabezados para ayudar a los usuarios a desplazarse por las listas ms largas. Por ejemplo, puede crear encabezados que se contraigan, facilitando as a los usuarios el poder encontrar elementos en la lista.
Tambin puede agrupar elementos bajo encabezados que siempre aparezcan en la parte superior de la lista. Por ejemplo, puede agregar una fecha como encabezado y los mensajes en grupo recibidos en esa fecha bajo el encabezado. Los usuarios pueden seleccionar un encabezado para realizar una accin en el grupo de elementos o pueden utilizar teclas de atajo para desplazarse a travs de la lista.
Los usuarios pueden realizar las siguientes acciones en las listas y las tablas: Slo dispositivos BlackBerry con panel tctil Desplazar un dedo verticalmente en el panel tctil. Slo dispositivos BlackBerry con pantalla tctil y panel tctil Arrastrar un dedo verticalmente en la pantalla. Deslizar hacia arriba o hacia abajo en la pantalla.
78
Gua de desarrollo
Listas y tablas
Accin
Slo dispositivos BlackBerry con pantalla tctil y panel tctil Desplazar un dedo verticalmente en el panel tctil. Tocar el elemento levemente. Desplazar un dedo verticalmente en el panel tctil. Tocar el elemento. Hacer clic en el panel tctil. Pulse la tecla Intro.
Desplazar un dedo verticalmente en el panel tctil. Hacer clic en el panel tctil. Pulse la tecla Intro.
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor, invoque pushScreen para mostrar la pantalla personalizada de la aplicacin. La clase CreateMenuScreen representa la pantalla personalizada, que se describe en el paso 3.
public class ListFields extends UiApplication { public static void main(String[] args) 79
Gua de desarrollo
Listas y tablas
3.
Cree la pantalla personalizada de la aplicacin ampliando la clase MainScreen. En el constructor, invoque setTitle() para mostrar el ttulo de la pantalla. Invoque add() para mostrar un campo de texto en la pantalla. Invoque addMenuItem() para agregar un elemento de men al men que crea MainScreen.
class ListFieldScreen extends MainScreen { private ListField _listField; private Vector _listElements; public ListFieldScreen() { setTitle("List Field Sample"); } }
4.
En el constructor de pantalla, cree el cuadro de lista. Cree una matriz para los elementos que quiere agregar al cuadro de lista utilizando la clase Vector. Cree el cuadro de lista utilizando la clase ListField(). Invoque add() para agregar el cuadro de lista a la pantalla. Invoque initializeList(), que se describe en el paso 4, para agregar y construir el cuadro de lista.
_listElements = new Vector(); _listField = new ListField(); ListCallback _callback = new ListCallback(); _listField.setCallback(_callback); add(_listField); initializeList();
5.
Cree un mtodo para especificar los elementos que quiera que aparezcan en el cuadro de lista utilizando el objeto String. Invoque addElement() para agregar los elementos a la lista. Invoque setSize() para especificar el nmero de elementos en el cuadro de lista.
private void initializeList() { String itemOne = "List item one"; String itemTwo = "List item two"; _listElements.addElement(itemOne); _listElements.addElement(itemTwo); reloadList(); } private void reloadList() { _listField.setSize(_listElements.size()); }
80
Gua de desarrollo
Botones de opcin
6.
Cree una clase que implemente la interfaz ListFieldCallback. Implemente drawListRow() para agregar los elementos de cuadro de la lista a la pantalla. Implemente get() para devolver el elemento de cuadro de lista al ndice especificado. Implemente indexOfList() para devolver la primera ocurrencia de una cadena dada. Implemente getPreferredWidth(), para recuperar la anchura del cuadro de lista.
private class ListCallback implements ListFieldCallback { public void drawListRow(ListField list, Graphics g, int index, int y, int w) { String text = (String)_listElements.elementAt(index); g.drawText(text, 0, y, 0, w); } public Object get(ListField list, int index) { return _listElements.elementAt(index); } public int indexOfList(ListField list, String prefix, int string) { return _listElements.indexOf(prefix, string); } public int getPreferredWidth(ListField list) { return Display.getWidth(); } }
Botones de opcin
Utilice botones de opcin para indicar un conjunto de opciones que se excluyan entre s pero que estn relacionadas al mismo tiempo. Los usuarios pueden realizar las acciones siguientes con botones de opcin: Slo dispositivos BlackBerry con panel Slo dispositivos BlackBerry con tctil pantalla tctil y panel tctil Pulsar la tecla Espacio o hacer clic en el Tocar el elemento. panel tctil. Pulse la tecla Espacio. Hacer clic en el panel tctil.
81
Gua de desarrollo
Botones de opcin
82
Gua de desarrollo
Botones de opcin
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase MyUiScreen que se describe en el paso 3, representa la pantalla personalizada.
public class MyUi extends UiApplication { public static void main(String[] args) { MyUi theApp = new MyUi(); theApp.enterEventDispatcher(); } public MyUi() { pushScreen(new MyUiScreen()); } }
3.
Cree la pantalla personalizada de la aplicacin ampliando la clase MainScreen. En el constructor de la pantalla, invoque setTitle() para especificar el ttulo de la pantalla.
class MyUiScreen extends MainScreen { public MyUiScreen() { setTitle("UI Component Sample"); } }
4.
En el constructor de pantalla, cree un grupo de botones de opcin utilizando la clase RadioButtonGroup. Cree los botones de opcin que desee agregar al grupo utilizando la clase RadioButtonField. En el constructor RadioButtonField, especifique la etiqueta para el botn de opcin, el grupo y un valor booleano para indicar la seleccin predeterminada (por ejemplo, true indica que la opcin se selecciona de forma predeterminada). Invoque add() para agregar los botones de opcin a la pantalla.
RadioButtonGroup rbg = new RadioButtonGroup(); add(new RadioButtonField("Option 1",rbg,true)); add(new RadioButtonField("Option 2",rbg,false));
5.
Para omitir la funcionalidad predeterminada que solicita al usuario guardar los cambios antes de que se cierre la aplicacin, en la extensin de la clase MainScreen, omita el mtodo MainScreen.onSavePrompt(). En el siguiente ejemplo de cdigo, el valor devuelto es true que indica que la aplicacin no preguntar al usuario antes de cerrarse.
public boolean onSavePrompt() { return true; }
83
Gua de desarrollo
84
Gua de desarrollo
Utilice un indicador de progreso si puede determinar la duracin de una accin. Los indicadores de progreso incluyen una etiqueta para indicar la operacin de que se trata y una barra horizontal que se va llenando de izquierda a derecha a medida que progresa la accin. En la barra aparece un porcentaje que indica qu parte de la accin se ha completado.
85
Gua de desarrollo
Permita siempre a los usuarios utilizar la tecla Fin para ocultar un indicador de progreso. Utilice un texto conciso y descriptivo (por ejemplo, "Cargando datos..." o "Creando una lista de aplicaciones..."). Si una accin es larga y desea comunicar lo que sucede en cada fase, proporcione texto que describa cada una de las fases (por ejemplo, "Descargando..." o "Instalando..."). Utilice maysculas para las oraciones. Coloque puntos suspensivos (...) en el texto.
La aplicacin de ejemplo Demostracin del indicador de progreso se incluye en el BlackBerry Java SDK. Esta aplicacin de ejemplo muestra cmo crear y manipular una variedad de indicadores de actividad y una barra de indicador de progreso.
Indicar actividad
Puede mostrar un campo en su aplicacin de dispositivo BlackBerry que indique que se estn llevando a cabo acciones en el dispositivo. Normalmente, el campo muestra una brjula o reloj de arena, o cualquier otra pista visual animada similar. El campo se implementa mediante la clase ActivityImageField. 1. Importe las clases y las interfaces necesarias.
import import import import net.rim.device.api.system.Bitmap; net.rim.device.api.ui.*; net.rim.device.api.ui.component.progressindicator.*; net.rim.device.api.ui.container.*;
2.
Cree una imagen que contenga marcos de una animacin y inclyala en su proyecto. La imagen debe consistir en una serie de marcos de la animacin distribuidos de forma horizontal. El ancho de la imagen debe coincidir con el ancho de un marco multiplicado por el nmero de marcos. Por ejemplo, la siguiente imagen dispone de cinco marcos de igual tamao.
86
Gua de desarrollo
3. 4.
5.
Para especificar a gestor a utilizar para el diseo y el enfoque, proporcione un segundo argumento cuando cree ActivityIndicatorView. Si no especifica a gestor, se utilizar un objeto VerticalFieldManager. Cree un modelo y un controlador.
ActivityIndicatorModel model = new ActivityIndicatorModel(); ActivityIndicatorController controller = new ActivityIndicatorController();
6.
7.
8. 9.
En este ejemplo, el mapa de bits consiste en cinco marcos y se muestra centrado en el gestor de vista. Agregue la vista a su pantalla.
add(view);
Controle la indicacin de actividad controlando la vistas del modelo, tal como sea necesario.
MenuItem _stopIndicator = new MenuItem("Stop spinner", 66000, 0) { public void run() { view.getModel().cancel(); } }; MenuItem _resumeIndicator = new MenuItem("Resume spinner", 66010, 0) { public void run() { view.getModel().resume(); } };
Este ejemplo invoca el mtodo cancel() del modelo para detener la animacin. El ejemplo invoca el mtodo resume() del modelo para reanudar la animacin. Cdigo de ejemplo
87
Gua de desarrollo
public class ActivityIndicatorScreen extends MainScreen { ActivityIndicatorView view = new ActivityIndicatorView(Field.USE_ALL_WIDTH); ActivityIndicatorModel model = new ActivityIndicatorModel(); ActivityIndicatorController controller = new ActivityIndicatorController(); public ActivityIndicatorScreen () { setTitle("Activity Indicator Demo"); view.setController(controller); view.setModel(model); controller.setModel(model); controller.setView(view); model.setController(controller); // Define the indicator image and create a field from it Bitmap bitmap = Bitmap.getBitmapResource("spinner.png"); view.createActivityImageField(bitmap, 5, Field.FIELD_HCENTER); // add the view to the screen add(view); MenuItem _stopIndicator = new MenuItem("Stop spinner", 66000, 0) { public void run() { view.getModel().cancel(); } }; MenuItem _resumeIndicator = new MenuItem("Resume spinner", 66010, 0) { public void run() { view.getModel().resume(); } }; addMenuItem(_stopIndicator); addMenuItem(_resumeIndicator); } }
La aplicacin de muestra Demostracin del indicador de progreso que se incluye en BlackBerry Java SDK crea y manipula una variedad de indicadores de actividad, incluida una brjula que se muestra ms arriba.
Indicar progreso
Puede mostrar un campo en su aplicacin de dispositivo BlackBerry que indique que se estn llevando a cabo tareas en el dispositivo. El progreso se representa mediante una barra que se rellena a medida que la tarea finaliza. 1. Importe las clases y las interfaces necesarias.
import net.rim.device.api.ui.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.ui.component.progressindicator.*;
2.
Cree un objeto ProgressIndicatorView. Puede especificar un estilo para la vista en el constructor. En el ejemplo siguiente, no se ha especificado ningn estilo.
ProgressIndicatorView view = new ProgressIndicatorView(0);
88
Gua de desarrollo
3. 4.
Para especificar a gestor a utilizar para el diseo y el enfoque, proporcione un segundo argumento cuando cree ProgressIndicatorView. Si no especifica un gestor, se utilizar un objeto VerticalFieldManager. Cree un objeto ProgressIndicatorController.
ProgressIndicatorController controller = new ProgressIndicatorController();
Cree un objeto ProgressIndicatorModel. Este objeto representa el progreso de la tarea. Al crear el objeto, puede especificar el valor inicial del modelo, su valor mximo y su valor mnimo. ProgressIndicatorModel utiliza un objeto Adjustment para permitir el acceso encadenado al modelo de datos y para permitir la representacin de la tarea a travs de valores de nmero entero.
ProgressIndicatorModel model = new ProgressIndicatorModel(0, 100, 0);
5.
En este ejemplo, la tarea comienza con el valor 0 y puede alcanzar 100. Estos valores dan forma a la finalizacin de una tarea como un porcentaje. Conecte el controlador, el modelo y la vista.
model.setController(controller); view.setModel(model); view.setController(controller); controller.setModel(model); controller.setView(view);
6.
Cree un subproceso para procesar la tarea. Normalmente, las tareas que requieren indicadores de progreso se realizan utilizando un subproceso. A medida que la tarea progresa, actualice el valor del modelo para que refleje el progreso de la tarea.
class ProgressThread extends Thread { private boolean _paused; private boolean _stop; public void run() { // perform the task here and update the model's value as appropriate } public synchronized void setPaused(boolean paused) { // pause the indicator here } public synchronized void stopThread() { // stop the indicator here } }
7.
Cree una clase que implemente la interfaz ProgressIndicatorListener para ser notificada de los cambios efectuados al modelo de datos. Puede ser notificado cuando el modelo se reinicie, reanude o cancele o cuando el valor del modelo cambie mediante medios no relacionados con la programacin.
private final class DemoProgressIndicatorListener implements ProgressIndicatorListener { public void cancelled() { 89
Gua de desarrollo
... }
8. 9.
Configure la etiqueta para la vista. La etiqueta se muestra sobre los resultados proporcionados ProgressIndicatorField (teniendo en cuenta que el gestor es un VerticalFieldManager y que adems es un gestor predeterminado).
view.setLabel("Percent completion");
10. Cree el campo que representa el progreso. Puede proporcionar los estilos definidos en ProgressBarField para especificar si se debe mostrar texto en la barra y cmo se muestra. De forma predeterminada, el valor del modelo se muestra en el centro del espacio ocupado por la barra.
view.createProgressBar(Field.FIELD_HCENTER);
En este ejemplo, la barra de progreso utiliza el estilo predeterminado de texto y se muestra centrada en el gestor de vista. 11. Agregue la vista a su pantalla.
add(view);
12. Controle la indicacin de progreso prestando ms atencin al modelo de la vista, tal como considere necesario.
MenuItem _pauseIndicator = new MenuItem("Pause indicator", 66010, 0) { public void run() { view.getModel().cancel(); } }; MenuItem _resumeIndicator = new MenuItem("Resume indicator", 66020, 0) { public void run() { view.getModel().resume(); } };
Este ejemplo invoca el mtodo cancel() del modelo para detener la indicacin de progreso. El ejemplo invoca el mtodo resume() del modelo para reanudar la indicacin de progreso. Cdigo de ejemplo
90
Gua de desarrollo
public class ProgressIndicatorScreen extends MainScreen { ProgressIndicatorView view = new ProgressIndicatorView(0); ProgressIndicatorModel model = new ProgressIndicatorModel(0, 100, 0); ProgressIndicatorController controller = new ProgressIndicatorController(); ProgressThread _progressThread; public ProgressIndicatorScreen() { setTitle("Progress Indicator Screen"); model.setController(controller); model.addListener(new DemoProgressIndicatorListener()); view.setModel(model); view.setController(controller); controller.setModel(model); controller.setView(view); view.setLabel("Percent completion"); view.createProgressBar(Field.FIELD_HCENTER); add(view); MenuItem _startIndicator = new MenuItem("Start indicator", 66000, 0) { public void run() { if(_progressThread != null) { _progressThread.stopThread(); } _progressThread = new ProgressThread(); _progressThread.start(); } }; MenuItem _pauseIndicator = new MenuItem("Pause indicator", 66010, 0) { public void run() { view.getModel().cancel(); } }; MenuItem _resumeIndicator = new MenuItem("Resume indicator", 66020, 0) { public void run() { view.getModel().resume(); } }; addMenuItem(_startIndicator); addMenuItem(_pauseIndicator); addMenuItem(_resumeIndicator); } class ProgressThread extends Thread { private boolean _paused; private boolean _stop; public void run() { // Run dummy operations to simulate the processing of // a collection of data. 91
Gua de desarrollo
} private final class DemoProgressIndicatorListener implements ProgressIndicatorListener { public void cancelled() { _progressThread.setPaused(true); } public void resumed() { _progressThread.setPaused(false); }
} public synchronized void setPaused(boolean paused) { _paused = paused; this.notify(); } public synchronized void stopThread() { _stop = true; if(_paused) { // If the thread is in a paused state, wake it up this.notify(); } }
for(int i = 0; i <= 100; ++i) { synchronized(this) { if(_stop) { break; } if(_paused) { try { wait(); } catch(InterruptedException ie) { } } } ProgressIndicatorScreen.this.model.setValue(i); try { // Simulate work sleep(250); } catch(InterruptedException ie) { } }
92
Gua de desarrollo
Colectores
void reset() Not implemented void setNonProgrammaticValue(int value) Not implemented void configurationChanged(Adjustment source) Not implemented void valueChanged(Adjustment source) Not implemented
La aplicacin de ejemplo Demostracin del indicador de progreso que se incluye en BlackBerry Java SDK crea y manipula una barra de progreso.
Colectores
Puede utilizar colectores para ayudar a los usuarios a seleccionar con facilidad un elemento de una lista. Tipo de colector Archivo Descripcin Este colector permite que los usuarios busquen archivos en los dispositivos BlackBerry.
Ubicacin
Este colector permite que los usuarios seleccionen una ubicacin de una lista que defina. Por ejemplo, puede permitir que los usuarios elijan su ubicacin GPS o una ubicacin seleccionada anteriormente.
93
Gua de desarrollo
Colectores
Tipo de colector
Descripcin
Fecha
Este colector permite que los usuarios seleccionen un da, mes o ao especficos. Por ejemplo, puede permitir que los usuarios seleccionen un mes y ao para especificar la fecha de caducidad de su tarjeta de crdito.
Hora
Este colector permite que los usuarios seleccionen una hora, minuto o segundo especficos.
94
Gua de desarrollo
Colectores
Tipo de colector
Descripcin
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor, invoque pushScreen() para mostrar la pantalla personalizada de la aplicacin. La clase DatePickScreen representa la pantalla personalizada que se describe en el paso 3.
public class DatePick extends UiApplication { public static void main(String[] args) { DatePick theApp = new DatePick(); theApp.enterEventDispatcher(); } public DatePick() {
95
Gua de desarrollo
Colectores
pushScreen(new DatePickScreen());
3.
Cree la pantalla personalizada de la aplicacin ampliando la clase MainScreen. En el constructor, invoque setTitle() para mostrar un ttulo en la pantalla. Invoque add() para mostrar un campo de texto enriquecido en la pantalla.
class DatePickScreen extends MainScreen { public DatePickScreen() { setTitle("Date Picker Sample"); add(new RichTextField("Trying Date Picker")); } }
4.
Agregue una seccin de cdigo a la cola de eventos de la aplicacin invocando invokeLater(). Cree un objeto Runnable y pselo como parmetro a invokeLater(). Omita run() en la definicin de Runnable.
class DatePickScreen extends MainScreen { public DatePickScreen() { setTitle("Date Picker Sample"); add(new RichTextField("Trying Date Picker")); UiApplication.getUiApplication().invokeLater(new Runnable() { public void run() { } }); } }
5.
En run(), invoque DateTimePicker.getInstance() para devolver un objeto DateTimePicker. Invoque doModal() para mostrar el colector de fechas. Invoque getDateTime() para devolver un objeto Calendar que represente la fecha y la hora que selecciona el usuario. Utilice getTime() para devolver la fecha y la hora como un objeto Date. Utilice Dialog.alert() para mostrar la fecha y la hora seleccionadas.
class DatePickScreen extends MainScreen { public DatePickScreen() { setTitle("Date Picker Sample"); add(new RichTextField("Trying Date Picker")); UiApplication.getUiApplication().invokeLater(new Runnable() { public void run() { DateTimePicker datePicker = DateTimePicker.getInstance(); datePicker.doModal(); Calendar cal = datePicker.getDateTime(); Date date = cal.getTime(); Dialog.alert("You selected " + date.toString());
96
Gua de desarrollo
Colectores
});
97
Gua de desarrollo
Colectores
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase FilePickScreen representa la pantalla personalizada que se describe en el paso 3.
public class FilePick extends UiApplication { public static void main(String[] args) { FilePick theApp = new FilePick(); theApp.enterEventDispatcher(); } public FilePick() { pushScreen(new FilePickScreen()); } }
3.
Cree la pantalla personalizada de la aplicacin ampliando la clase MainScreen. En el constructor de la pantalla, invoque setTitle() para especificar el ttulo de la pantalla. Invoque add() para agregar un campo de etiqueta a la pantalla.
class FilePickScreen extends MainScreen { public FilePickScreen() { setTitle("File Picker Sample"); add(new LabelField("Trying File Picker")); } }
4.
En el constructor de pantalla, invoque invokeLater() para agregar una seccin de cdigo a la cola de eventos de la aplicacin. Cree un objeto Runnable y pselo como parmetro a invokeLater().
class FilePickScreen extends MainScreen { public FilePickScreen() { setTitle("File Picker Sample"); add(new LabelField("Trying File Picker")); UiApplication.getUiApplication().invokeLater(new Runnable() { public void run() { } }); } }
98
Gua de desarrollo
Colectores
5.
Omita run() en la definicin de Runnable. En run(), invoque FilePicker.getInstance() para devolver un objeto FilePicker. Cree un objeto FilePickListener, descrito en el paso 6. Invoque setListener () para registrar el oyente para el colector de archivos. Invoque show() para mostrar el colector de archivos en la pantalla.
class FilePickScreen extends MainScreen { public FilePickScreen() { setTitle("File Picker Sample"); add(new LabelField("Trying File Picker")); UiApplication.getUiApplication().invokeLater(new Runnable() { public void run() { FilePicker fp = FilePicker.getInstance(); FilePickListener fileListener = new FilePickListener(); fp.setListener(fileListener); fp.show(); } }); } }
6.
Invoque Dialog.alert para crear un cuadro de dilogo con un mensaje que muestre qu archivo se ha seleccionado. InvoqueDialog.alert en una clase que implemente la interfaz FilePicker.Listener omitiendo selectionDone(). La aplicacin llamar a selectionDone() cuando el usuario seleccione un archivo utilizando el colector de archivos.
class FilePickListener implements FilePicker.Listener { public void selectionDone(String str) { Dialog.alert("You selected " + str); } }
Gua de desarrollo
Buscar
{ }
pushScreen(new FilePickScreen());
} class FilePickScreen extends MainScreen { public FilePickScreen() { setTitle("File Picker Sample"); add(new LabelField("Trying File Picker")); UiApplication.getUiApplication().invokeLater(new Runnable() { public void run() { FilePicker fp = FilePicker.getInstance(); FilePickListener fileListener = new FilePickListener(); fp.setListener(fileListener); fp.show(); } }); } } class FilePickListener implements FilePicker.Listener { public void selectionDone(String str) { Dialog.alert("You selected " + str); } }
Buscar
Los usuarios pueden utilizar el campo de bsqueda en la pantalla de inicio para buscar elementos en cualquier aplicacin del dispositivo, incluidas aplicaciones de terceros. La bsqueda tambin puede incluir contenido que no est almacenado en el dispositivo, por ejemplo, la base de datos de una empresa o un sitio Web.
100
Gua de desarrollo
Buscar
Los usuarios tambin pueden utilizar un campo de bsqueda en una aplicacin para buscar elementos en dicha aplicacin. Por ejemplo, los usuarios pueden buscar un mensaje de correo electrnico en una lista de mensajes, una cancin en la aplicacin Multimedia o un contacto en la lista de contactos. En algunas ocasiones, es posible que desee mostrar los resultados de bsqueda de otras aplicaciones. En algunas aplicaciones, el campo de bsqueda aparece en la pantalla. En el resto de casos, la bsqueda est disponible desde el men completo, el men emergente o la barra de herramientas. Cuando los usuarios escriben texto en un campo de bsqueda, muestre los resultados de la bsqueda. En el caso de devolver una gran cantidad de resultados, puede permitir a los usuarios para delimitar la bsqueda a un campo o a un grupo de campos. Por ejemplo, si los usuarios buscan la lista de mensajes, pueden utilizar la lista desplegable a la derecha del campo de bsqueda para delimitar su bsqueda al campo Para o al campo Asunto. Para obtener ms informacin acerca de la adicin de un campo de bsqueda a su aplicacin, consulte la Gua de desarrollo de integracin de BlackBerryJava Application.
Los usuarios pueden llevar a cabo las acciones siguientes en un campo de bsqueda: Slo dispositivos BlackBerry con panel tctil Pulse la tecla Intro. Hacer clic en el panel tctil. Slo dispositivos BlackBerry con pantalla tctil y panel tctil Tocar la pantalla. Pulse la tecla Intro. Hacer clic en el panel tctil. Tocar y mantener pulsado un resultado de bsqueda en la pantalla. Hacer clic y mantener pulsado el panel tctil.
Accin Abrir un elemento seleccionado en los resultados de bsqueda. Mostrar un men emergente con acciones para un resultado de bsqueda (por ejemplo, llamar a un contacto).
Puede registrar contenido en su aplicacin para que pueda ser incluida en los resultados de bsqueda. Tambin puede registrar su aplicacin como mtodo para los usuarios con el fin de ampliar la bsqueda. Por ejemplo, si los usuarios buscan una cancin en la aplicacin Multimedia y no encuentran la cancin, puede permitir a los usuarios
101
Gua de desarrollo
Buscar
buscar su aplicacin como una fuente alternativa de resultados de bsqueda. Para obtener ms informacin acerca del registro de contenido o una aplicacin, consulte la Gua de desarrollo de integracin de BlackBerry Java Application.
102
Gua de desarrollo
Buscar
2.
Cree variables. En el siguiente cdigo de ejemplo, CountryList ampla la clase SortedReadableList e implementa la interfaz KeywordProvider.
private KeywordFilterField _keywordField; private CountryList _CountryList; private Vector _countries;
3.
Para crear una lista de elementos de texto seleccionables, rellene el objeto Vector con datos de un archivo de texto.
_countries = getDataFromFile();
4.
5. 6. 7. 8.
Para especificar los elementos de la lista, cree una instancia nueva de un objeto KeywordFilterField.
_keywordField = new KeywordFilterField();
Invoque KeywordFilterField.setList().
_keywordField.setList(_CountryList, _CountryList);
9.
Para crear un mtodo que rellene y devuelva un objeto Vector de los objetos Country que contienen los datos del archivo de texto, en la firma del mtodo, especifique Vector como el de tipo que se ha de devolver.
public Vector getDataFromFile()
13. Lea los datos de la lnea uno del flujo de entrada a la vez hasta alcanzar el final del indicador. Cada una de las lneas se analiza para extraer los datos que se utilizan para construir objetos Country.
103
Gua de desarrollo
Buscar
for(;;){ //Obtain a line of text from the text file String line = new String(lineReader.readLine()); //If we are not at the end of the file, parse the line of text if(!line.equals("EOF")) { int space1 = line.indexOf(" "); String country = line.substring(0,space1); int space2 = line.indexOf(" ",space1+1); String population = line.substring(space1+1,space2); String capital = line.substring(space2+1,line.length()); // Create a new Country object countries.addElement(new Country(country,population,capital)); } else { break; } } // end the for loop return countries;
14. Para agregar una palabra clave a la lista de elementos te texto seleccionables, invoque SortedReadableList.doAdd(element).
SortedReadableList.doAdd(((Country)countries.elementAt(i)) .getCountryName()) ;
16. Para obtener la palabra clave que el usuario del dispositivo BlackBerry ha escrito en KeywordFilterField, invoque KeywordFilterField.getKeyword().
String userTypedWord = _keywordField.getKeyword();
palabras y oraciones. Puede configurar los campos de los objetos de datos con los que se compara y qu campos se muestran cuando se encuentra una coincidencia. Por ejemplo, puede comparar el texto que escribe el usuario con el valor del campo DATA_FIELD_CONTACTS_BIRTHDAY en la fuente de datos DATA_SOURCE_CONTACTS y devolver el valor del campo DATA_FIELD_CONTACTS_NAME_FULL correspondiente. Hay cuatro tipos de datos que usted puede vincular a BasicFilteredList para utilizarlos con un valor AutoCompleteField. Puede especificar el conjunto de cadenas con las que comparar de una de las maneras siguientes:
104
Gua de desarrollo
Buscar
una matriz de objetos que sean compatibles con toString() fuentes de datos en un dispositivo BlackBerry, como contactos, notas, tareas y varios tipos de archivos multimedia una matriz de objetos y una matriz de cadenas con sus correspondientes ndices
De forma predeterminada, la funcin Autocompletar del campo de texto muestra el conjunto de cadenas devueltas por el proceso de comparacin en una lista desplegable. Puede configurar la apariencia de esta lista especificando indicadores de estilo al crear las opciones para autocompletar campos de texto. Puede cambiar la apariencia de la lista y cmo los usuarios pueden interactuar con la lista.
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor, invoque pushScreen() para mostrar la pantalla personalizada de la aplicacin. La clase HomeScreen, descrita en el paso 3, representa la pantalla personalizada.
public class AutoCompleteFieldApp extends UiApplication { public static void main(String[] args) { AutoCompleteFieldApp app = new AutoCompleteFieldApp(); app.enterEventDispatcher(); } AutoCompleteFieldApp() { pushScreen(new HomeScreen()); } }
3.
4.
En el constructor, cree un objeto BasicFilteredList. Cree una matriz String y almacene las cadenas que desea hacer coincidir en la matriz. En este ejemplo, las cadenas son los das de la semana. Invoque addDataSet () para enlazar los datos de la matriz a BasicFilteredList.
105
Gua de desarrollo
Buscar
5.
En el constructor, cree un objeto AutoCompleteField. Pase una instancia de BasicFilteredList al constructor de AutoCompleteField para enlazar BasicFilteredList al campo de texto con la funcin Autocompletar. Invoque add() para agregar el campo a la pantalla.
AutoCompleteField autoCompleteField = new AutoCompleteField(filterList); add(autoCompleteField);
Ejemplo de cdigo: crear un campo con la funcin Autocompletar desde un conjunto de datos
import net.rim.device.api.ui.UiApplication; import net.rim.device.api.ui.container.MainScreen; import net.rim.device.api.ui.component.AutoCompleteField; import net.rim.device.api.collection.util.*; public class AutoCompleteFieldApp extends UiApplication { public static void main(String[] args) { AutoCompleteFieldApp app = new AutoCompleteFieldApp(); app.enterEventDispatcher(); } AutoCompleteFieldApp() { HomeScreen scr = new HomeScreen(); this.pushScreen(scr); } } class HomeScreen extends MainScreen { public HomeScreen() { BasicFilteredList filterList = new BasicFilteredList(); String[] days = {"Monday","Tuesday","Wednesday", "Thursday","Friday","Saturday","Sunday"}; filterList.addDataSet(1,days,"days",BasicFilteredList .COMPARISON_IGNORE_CASE); AutoCompleteField autoCompleteField = new AutoCompleteField(filterList); add(autoCompleteField); } }
Crear un campo de texto con la funcin Autocompletar desde una fuente de datos
1. Importe las clases y las interfaces necesarias.
106
Gua de desarrollo
Buscar
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase HomeScreen representa la pantalla personalizada que se describe en el paso 3.
public class AutoCompleteFieldApp extends UiApplication { public static void main(String[] args) { AutoCompleteFieldApp app = new AutoCompleteFieldApp(); app.enterEventDispatcher(); } public AutoCompleteFieldApp() { pushScreen(new HomeScreen()); } }
3.
4.
En el constructor de pantalla, cree un objeto de BasicFilteredList. Invoque addDataSource() para vincular una fuente de datos a BasicFilteredList. En este ejemplo, los datos son la informacin de contacto y la fuente de datos es la lista de contactos. El primer argumento que debe pasar a addDataSource() es un ID nico. El segundo argumento vincula el objeto BasicFilteredList a una fuente de datos. El tercer argumento especifica el conjunto de campos de fuentes de datos con los que realizar la comparacin. El cuarto argumento especifica el conjunto de campos de fuentes de datos que deben estar disponibles cuando se detecta una coincidencia. En este ejemplo, los campos con los que realizar la comparacin son los mismos que los campos que han de estar disponibles cuando se detecta una coincidencia. El quinto argumento especifica el campo de visualizacin principal. El sexto argumento especifica el campo de visualizacin secundario, ste puede configurarse en -1 si no desea utilizarlo. El argumento final especifica un nombre para BasicFilteredList; su valor se genera automticamente si especifica null.
BasicFilteredList filterList = new BasicFilteredList(); filterList.addDataSource( 1, BasicFilteredList.DATA_SOURCE_CONTACTS, BasicFilteredList.DATA_FIELD_CONTACTS_NAME_FULL | BasicFilteredList.DATA_FIELD_CONTACTS_COMPANY | BasicFilteredList.DATA_FIELD_CONTACTS_EMAIL, BasicFilteredList.DATA_FIELD_CONTACTS_NAME_FULL | BasicFilteredList.DATA_FIELD_CONTACTS_COMPANY |
107
Gua de desarrollo
Buscar
5.
En el constructor de la pantalla, cree un objeto AutoCompleteField. Pase el objeto BasicFilteredList que ha creado en el paso 4 al constructor AutoCompleteField para vincular BasicFilteredList al campo de texto con la funcin Autocompletar. Invoque add() para agregar el campo a la pantalla.
AutoCompleteField autoCompleteField = new AutoCompleteField(filterList); add(autoCompleteField);
Ejemplo de cdigo: crear un campo con la funcin Autocompletar desde una fuente de datos
import net.rim.device.api.ui.UiApplication; import net.rim.device.api.ui.container.MainScreen; import net.rim.device.api.ui.component.AutoCompleteField; import net.rim.device.api.collection.util.*; public class AutoCompleteFieldApp extends UiApplication { public static void main(String[] args) { AutoCompleteFieldApp app = new AutoCompleteFieldApp(); app.enterEventDispatcher(); } AutoCompleteFieldApp() { HomeScreen scr = new HomeScreen(); this.pushScreen(scr); } } class HomeScreen extends MainScreen { public HomeScreen() { BasicFilteredList filterList = new BasicFilteredList(); filterList.addDataSource(1, BasicFilteredList.DATA_SOURCE_CONTACTS, BasicFilteredList.DATA_FIELD_CONTACTS_NAME_FULL | BasicFilteredList.DATA_FIELD_CONTACTS_COMPANY | BasicFilteredList.DATA_FIELD_CONTACTS_EMAIL, BasicFilteredList.DATA_FIELD_CONTACTS_NAME_FULL | BasicFilteredList.DATA_FIELD_CONTACTS_COMPANY | BasicFilteredList.DATA_FIELD_CONTACTS_EMAIL, BasicFilteredList.DATA_FIELD_CONTACTS_NAME_FULL, BasicFilteredList.DATA_FIELD_CONTACTS_NAME_FULL, null); AutoCompleteField autoCompleteField = new AutoCompleteField(filterList); add(autoCompleteField); } }
108
Gua de desarrollo
Buscar
Utilizar fuentes de datos y campos con un campo de texto con la funcin Autocompletar
Puede utilizar la clase AutoCompleteField y la clase BasicFilteredList para comparar el texto que escribe un usuario en un campo de texto con la funcin Autocompletar con los valores de campos en una fuente de datos especificada. Debe especificar los campos a utilizar y sus fuentes de datos utilizando un objeto BasicFilteredList que pasar como un argumento al constructor de la clase AutoCompleteField AutoCompleteField. Fuente de datos DATA_SOURCE_APPOINTMENTS Campos DATA_FIELD_APPOINTMENTS_ALL DATA_FIELD_APPOINTMENTS_ATTENDEES DATA_FIELD_APPOINTMENTS_ORGANIZER DATA_FIELD_APPOINTMENTS_SUBJECT DATA_FIELD_CONTACTS_ADDRESS_ALL DATA_FIELD_CONTACTS_ADDRESS_HOME DATA_FIELD_CONTACTS_ADDRESS_WORK DATA_FIELD_CONTACTS_ANNIVERSARY DATA_FIELD_CONTACTS_BIRTHDAY DATA_FIELD_CONTACTS_CATEGORIES DATA_FIELD_CONTACTS_COMPANY DATA_FIELD_CONTACTS_EMAIL DATA_FIELD_CONTACTS_FAX DATA_FIELD_CONTACTS_JOB_TITLE DATA_FIELD_CONTACTS_NAME_FULL DATA_FIELD_CONTACTS_NAME_FIRST DATA_FIELD_CONTACTS_NAME_LAST DATA_FIELD_CONTACTS_NOTES DATA_FIELD_CONTACTS_PAGER DATA_FIELD_CONTACTS_PHONE_ALL DATA_FIELD_CONTACTS_PHONE_HOME DATA_FIELD_CONTACTS_PHONE_HOME2 DATA_FIELD_CONTACTS_PHONE_MOBILE DATA_FIELD_CONTACTS_PHONE_OTHER DATA_FIELD_CONTACTS_PHONE_WORK DATA_FIELD_CONTACTS_PHONE_WORK2 DATA_FIELD_CONTACTS_PIN DATA_FIELD_MEMOS_TITLE DATA_FIELD_MESSAGES_ALL DATA_FIELD_MESSAGES_RECIPIENT
DATA_SOURCE_CONTACTS
DATA_SOURCE_MEMOS DATA_SOURCE_MESSAGES
109
Gua de desarrollo
Fuente de datos
Campos DATA_FIELD_MESSAGES_SENDER DATA_FIELD_MESSAGES_SUBJECT DATA_FIELD_MUSIC_ALL DATA_FIELD_MUSIC_ALBUM DATA_FIELD_MUSIC_ARTIST DATA_FIELD_MUSIC_GENRE DATA_FIELD_MUSIC_PLAYLIST DATA_FIELD_MUSIC_SONG DATA_FIELD_PICTURES_TITLE DATA_FIELD_RINGTONES_TITLE DATA_FIELD_TASKS_TITLE DATA_FIELD_VIDEOS_TITLE DATA_FIELD_VOICENOTES_TITLE
DATA_SOURCE_MUSIC
Desplazar un dedo hacia arriba o hacia abajo en la pantalla o en el panel tctil. Elevar un dedo desde la pantalla. Hacer clic en el panel tctil. Arrastrar un dedo verticalmente en la pantalla. Desplazar un dedo verticalmente en el panel tctil.
110
Gua de desarrollo
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase HomeScreen representa la pantalla personalizada que se describe en el paso 3.
public class SpinBoxApp extends UiApplication { public static void main(String[] args) { SpinBoxApp app = new SpinBoxApp(); app.enterEventDispatcher(); } public SpinBoxApp() { pushScreen(new HomeScreen()); } }
3.
Cree la pantalla personalizada de la aplicacin ampliando la clase MainScreen. Declare una variable para cada campo en la casilla de seleccin numrica y declare una variable para el gestor de campo de la casilla de seleccin numrica.
class HomeScreen extends MainScreen { TextSpinBoxField spinBoxDays; TextSpinBoxField spinBoxMonths; SpinBoxFieldManager spinBoxMgr; public HomeScreen() 111
Gua de desarrollo
{ }
4.
En el constructor de la pantalla, cree una matriz de objetos String para cada uno de los campos de la casilla de seleccin numrica.
final String[] DAYS = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"}; final String[] MONTHS = {"January","February","March","April","May","June","July","A ugust","September","October","November","December"};
5.
En el constructor de pantalla, cree instancias nuevas del gestor de campo de la casilla de seleccin numrica y los dos campos de la casilla de seleccin numrica. Pase la matriz apropiada de Strings como argumentos a cada uno de los constructores del campo de la casilla de seleccin numrica.
spinBoxMgr = new SpinBoxFieldManager(); spinBoxDays = new TextSpinBoxField(DAYS); spinBoxMonths = new TextSpinBoxField(MONTHS);
6.
En el constructor de pantalla, agregue los campos de la casilla de seleccin numrica al gestor del campo de dicha casilla. Invoque add() para agregar el gestor y los campos que contiene a la pantalla.
spinBoxMgr.add(spinBoxDays); spinBoxMgr.add(spinBoxMonths); add(spinBoxMgr);
112
Gua de desarrollo
Campos de texto
} public void close() { Dialog.alert("You selected " + (String)spinBoxDays.get(spinBoxDays.getSelectedIndex()) + " and " + (String)spinBoxMonths.get(spinBoxMonths.getSelectedIndex())); super.close(); }
final String[] DAYS = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"}; final String[] MONTHS = {"January","February","March","April","May","June","July","August","Sep tember","October","November","December"}; spinBoxMgr = new SpinBoxFieldManager(); spinBoxDays = new TextSpinBoxField(DAYS); spinBoxMonths = new TextSpinBoxField(MONTHS); spinBoxMgr.add(spinBoxDays); spinBoxMgr.add(spinBoxMonths); add(spinBoxMgr);
Campos de texto
Los usuarios pueden utilizar un campo de texto para escribir texto.
113
Gua de desarrollo
Campos de texto
Descripcin Los usuarios pueden insertar un smbolo de arroba (@) o un punto (.) en el campo de direccin de un correo electrnico pulsando la tecla Espacio. Los usuarios pueden cambiar la fecha o la hora en los dispositivosBlackBerry con un panel tctil mediante el teclado o desplazando un dedo verticalmente en el panel tctil. Los usuarios pueden cambiar la fecha o la hora en los dispositivos BlackBerry con una pantalla tctil desplazndose hacia arriba o hacia abajo en la pantalla. Si los usuarios necesitan escribir en un campo de nmero con un teclado fsico, el dispositivo BlackBerry cambia al modo de bloqueo de nmeros para que los usuarios no tengan que pulsar la tecla Alt para escribir nmeros. Si los usuarios necesitan escribir en un campo de nmero con un teclado virtual, aparecer el teclado de nmeros. Cuando los usuarios escriben en un campo de contrasea, aparece un asterisco (*) en lugar de texto. Los usuarios no pueden cortar, copiar ni pegar texto o utilizar Texto automtico en los campos de contraseas. En dispositivos BlackBerry con tecnologa SureType, la pulsaciones mltiples constituyen el mtodo predeterminado de escritura en campos de contraseas. Si los usuarios escriben en un campo de nmero de telfono con un teclado fsico, el dispositivo BlackBerry cambia al modo de bloqueo de nmeros para que los usuarios no tengan que pulsar la tecla Alt para escribir nmeros. Puede permitir tambin a los usuarios realizar las acciones siguientes en los campos de nmero de telfono: Escribir el signo ms (+) para nmeros de telfono internacionales. Escribir caracteres de formato, como el signo menos (-), punto (.), parntesis (()) y espacios. Escribir el signo almohadilla (#) o asterisco (*). Indicar una pausa escribiendo una coma (,) o indique un tono de espera escribiendo un signo de exclamacin (!). Indicar una extensin pulsando la tecla Alt y E, X o T.
nmero
contrasea
nmero de telfono
Si los usuarios necesitan escribir en un campo de nmero de telfono con un teclado virtual, aparecer el teclado de nmeros. Puede permitir tambin a los usuarios realizar las acciones siguientes en los campos de nmero de telfono: Escribir el signo almohadilla (#) o asterisco (*). Indicar una pausa o una extensin manteniendo pulsada la tecla asterisco (*). Indicar un tono de espera o una extensin manteniendo pulsada la tecla signo almohadilla (#).
114
Gua de desarrollo
Campos de texto
Descripcin Los usuarios escriben texto en los campos de texto. Los usuarios pueden cortar, copiar y pegar texto en los campos de texto. Cuando el cursor alcanza el final de una lnea de texto, el texto se ajusta a la lnea siguiente. En los campos de texto, los dispositivos BlackBerry tambin pueden convertir los nmeros telefnicos, las pginas Web y las direcciones de correo electrnico en vnculos automticamente. Los usuarios pueden insertar un punto (.) en un campo de direccin pulsando la tecla Espacio.
direccin Web
Crear un campo de texto editable que no tenga formato y que acepte filtros
1. Importe las siguientes clases:
115
Gua de desarrollo
Campos de texto
2.
net.rim.device.api.ui.component.BasicEditField net.rim.device.api.ui.component.EditField
2.
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase MyUiScreen que se describe en el paso 3, representa la pantalla personalizada.
public class MyUi extends UiApplication { public static void main(String[] args) { MyUi theApp = new MyUi(); theApp.enterEventDispatcher(); }
116
Gua de desarrollo
Vistas de rbol
3.
Cree la pantalla personalizada de la aplicacin ampliando la clase MainScreen. En el constructor de la pantalla, invoque setTitle() para especificar el ttulo de la pantalla.
class MyUiScreen extends MainScreen { public MyUiScreen() { setTitle("UI Component Sample"); } }
4.
En el constructor de pantalla, cree un campo de fecha utilizando la clase DateField. Proporcione System.currentTimeMillis() como parmetro para devolver la hora actual. Utilice el estilo DateField.DATE_TIME para mostrar tanto la fecha como la hora. Puede utilizar otros estilos para mostrar slo la fecha o slo la hora.
add(new DateField("Date: ", System.currentTimeMillis(), DateField.DATE_TIME));
Vistas de rbol
Utilice una vista de rbol para mostrar objetos, por ejemplo, carpetas, de una forma jerrquica. Los objetos en la vista de rbol son nodos. El nodo de nivel superior es el nodo raz. El nodo en el rbol puede tener nodos secundarios que dependan del mismo. Un nodo con nodo secundario, ser un nodo principal. Los usuarios pueden realizar la acciones siguientes en una vista de rbol:
117
Gua de desarrollo
Vistas de rbol
Accin Expandir o contraer un objeto con un signo ms (+) o un signo menos (-) en una jerarqua.
Slo dispositivos BlackBerry con panel Slo dispositivos BlackBerry con tctil pantalla tctil y panel tctil Pulsar la tecla Espacio o hacer clic en el Tocar el objeto. panel tctil. Pulse la tecla Espacio. Hacer clic en el panel tctil.
2.
118
Gua de desarrollo
Vistas de rbol
3.
Invoque TreeField.setExpanded() en el objeto TreeField para especificar si la carpeta se puede contraer. Cree un objeto TreeField y varios nodos secundarios en el objeto TreeField. Invoque TreeField.setExpanded() utilizando node4 como un parmetro para contraer la carpeta.
String fieldOne = new String("Main folder"); ... TreeCallback myCallback = new TreeCallback(); TreeField myTree = new TreeField(myCallback, Field.FOCUSABLE); int node1 = myTree.addChildNode(0, fieldOne); int node2 = myTree.addChildNode(0, fieldTwo); int node3 = myTree.addChildNode(node2, fieldThree); int node4 = myTree.addChildNode(node3, fieldFour); ... int node10 = myTree.addChildNode(node1, fieldTen); myTree.setExpanded(node4, false); ... mainScreen.add(myTree);
4.
Para volver a pintar un valor TreeField cuando cambia un nodo, cree una clase que implemente la interfaz TreeFieldCallback y que implemente el mtodo TreeFieldCallback.drawTreeItem. El mtodo TreeFieldCallback.drawTreeItem utiliza la cookie de un nodo de rbol para dibujar una String en la ubicacin de un nodo. El mtodo TreeFieldCallback.drawTreeItem invoca Graphics.drawText() para dibujar el valor String.
private class TreeCallback implements TreeFieldCallback { public void drawTreeItem(TreeField _tree, Graphics g, int node, int y, int width, int indent) { String text = (String)_tree.getCookie(node); g.drawText(text, indent, y); } }
119
Gua de desarrollo
Imgenes
Imgenes
Uso de imgenes cifradas
Acceder a una imagen cifrada a travs de un flujo de entrada
1. 2. 3. 4. Importe las clases necesarias.
import java.io.InputStream;
Guarde la imagen en la carpeta o subcarpeta del proyecto. Agregue la imagen al proyecto en BlackBerry Java Plug-in para Eclipse o BlackBerry Java Development Environment. Invoque getClass().getResourceAsStream() para recuperar la imagen como un flujo de entrada de bytes.
private InputStream input; ... Class _class = this.getClass(); input = _class.getResourceAsStream("/images/example.png");
Invoque EncodedImage.createEncodedImage(). Este mtodo utiliza los datos de imagen sin procesar en la matriz de bytes para crear una instancia de EncodedImage. Busque el IllegalArgumentException que EncodedImage.createEncodedImage() arroja si la matriz de bytes que ha proporcionado como parmetro no contiene un formato de imagen reconocido.
// Store the contents of the image file. private byte[] data = new byte[2430]; try { // Read the image data into the byte array input.read(data); } catch (IOException e) { // Handle exception. } try { EncodedImage image = EncodedImage.createEncodedImage(data, 0, data.length); } catch (IllegalArgumentException iae) { System.out.println("Image format not recognized."); }
120
Gua de desarrollo
Invoque BitmapField.setImage() para asignar la imagen codificada a un BitmapField. Invoque add() para agregar BitmapField a la pantalla.
BitmapField field = new BitmapField(); field.setImage(image); add(field);
Invoque EncodedImage.scaleImage32(int scaleX, int scaleY). Los parmetros del valor de escala pasados deben ser los nmeros net.rim.device.api.math.Fixed32 (0 < escala < 1 para escala ascendente y escala > 1 para escala descendente). scaleImage32() crea un nuevo EncodedImage en lugar de modificar el actual.
Invoque EncodedImage.setDecodeMode() utilizando uno de los siguientes modos como parmetro: Utilice DECODE_ALPHA para descodificar un canal alfa, si existe (ste es el modo predeterminado). Utilice DECODE_NATIVE para forzar la descodificacin de la imagen del mapa de bits segn el tipo de imagen nativa de mapa de bits de BlackBerry Device Software. Utilice DECODE_READONLY para marcar la imagen de mapa de bits descodificada como de slo lectura.
121
Gua de desarrollo
En dispositivosBlackBerry con pantalla tctil, los usuarios pueden definir la regin de la imagen a la que aplicar el zoom. El usuario puede tocar dos puntos en la imagen para definir las esquinas opuestas en diagonal de la regin. Cuando se selecciona la regin, el usuario puede deslizar un dedo alrededor de la imagen para mover la regin del zoom. Para ampliar la regin definida, el usuario hace clic en la pantalla. Para alejar la imagen, el usuario pulsa la tecla Escape.
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor, cree un EncodedImage mediante un recurso del proyecto, cree un ZoomScreen con EncodedImage e invoque pushScreen() para mostrar la imagen con el fin de acercarla, alejarla y desplazarla.
public class ZoomableImageApp extends UiApplication { public static void main(String[] args) { ZoomableImageApp theApp = new ZoomableImageApp(); theApp.enterEventDispatcher(); } public ZoomableImageApp() {
122
Gua de desarrollo
123
Gua de desarrollo
images[2] = Bitmap.getBitmapResource("img3.jpg"); labels[2] = "Label for image 3"; tooltips[2] = "Tooltip for image 3"; ScrollEntry[] entries = ScrollEntry[3]; for (int i = 0; i < entries.length; i++) { entries[i] = new ScrollEntry(images[i], labels[i],tooltips[i]); } PictureScrollField pictureScrollField = new PictureScrollField(150, 100); pictureScrollField.setData(entries, 0); pictureScrollField.setHighlightStyle(HighlightStyle.ILLUMINATE); pictureScrollField.setHighlightBorderColor(Color.BLUE); pictureScrollField.setBackground (BackgroundFactory.createSolidTransparentBackground(Color.RED, 150)); pictureScrollField.setLabelsVisible(true); add(pictureScrollField); } }
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor, invoque pushScreen() para mostrar la pantalla personalizada de la aplicacin. La clase PictureScrollFieldDemoScreen, descrita en el paso 3, representa la pantalla personalizada.
public class PictureScrollFieldDemo extends UiApplication { public static void main(String[] args) { PictureScrollFieldDemo app = new PictureScrollFieldDemo(); app.enterEventDispatcher(); } public PictureScrollFieldDemo() { pushScreen(new PictureScrollFieldDemoScreen()); } }
3.
124
Gua de desarrollo
{ }
4.
En el constructor, invoque setTitle() para establecer el texto que aparece en la seccin del ttulo de la pantalla.
setTitle("PictureScrollField Demo");
5.
En el constructor, cree e inicialice tres matrices para almacenar las imgenes para mostrar en PictureScrollField y las etiquetas y texto de las sugerencias que aparece cuando se selecciona cada una de las imgenes. En este ejemplo, PictureScrollField contiene tres imgenes.
Bitmap[] images = new Bitmap[3]; String[] labels = new String[3]; String[] tooltips = new String[3]; images[0] = Bitmap.getBitmapResource("img1.jpg"); labels[0] = "Label for image 1"; tooltips[0] = "Tooltip for image 1"; images[1] = Bitmap.getBitmapResource("img2.jpg"); labels[1] = "Label for image 2"; tooltips[1] = "Tooltip for image 2"; images[2] = Bitmap.getBitmapResource("img3.jpg"); labels[2] = "Label for image 3"; tooltips[2] = "Tooltip for image 3";
6.
En el constructor, cree e inicialice una matriz de objetos ScrollEntry. ScrollEntry representa cada elemento de PictureScrollField.
ScrollEntry[] entries = ScrollEntry[3]; for (int i = 0; i < entries.length; i++) { entries[i] = new ScrollEntry(images[i], labels[i], tooltips[i]); }
7.
En el constructor, cree e inicialice PictureScrollField con cada imagen de 150 pxeles de ancho y 100 pxeles de alto. Invoque setData() para establecer las entradas en PictureScrollField. El segundo parmetro en setData() especifica qu posicin de imagen se selecciona de forma predeterminada.
PictureScrollField pictureScrollField = new PictureScrollField(150, 100); pictureScrollField.setData(entries, 0);
8.
En el constructor, configure el estilo de PictureScrollField. Invoque setHighlightStyle() para especificar cmo se resalta la imagen seleccionada. Invoque setHighlightBorderColor() para especificar el color del borde de la imagen seleccionada. Invoque setBackground() para especificar el fondo de PictureScrollField. Invoque setLabelVisible() para especificar si PictureScrollField muestra la etiqueta de la imagen seleccionada.
pictureScrollField.setHighlightStyle(HighlightStyle.ILLUMINATE); pictureScrollField.setHighlightBorderColor(Color.BLUE); pictureScrollField.setBackground(BackgroundFactory .createSolidTransparentBackground(Color.RED, 150)); pictureScrollField.setLabelsVisible(true);
125
Gua de desarrollo
9.
126
Gua de desarrollo
Opciones de men
Opciones de men
Crear un men
10
La clase MainScreen proporciona los componentes estndar de una aplicacin del dispositivo BlackBerry. Incluye un men predeterminado. 1. Importe las clases y las interfaces necesarias.
import net.rim.device.api.ui.*; import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*;
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase CreateMenuScreen que se describe en el paso 3, representa la pantalla personalizada.
public class CreateMenu extends UiApplication { public static void main(String[] args) { CreateMenu theApp = new CreateMenu(); theApp.enterEventDispatcher(); } public CreateMenu() { pushScreen(new CreateMenuScreen()); } }
3.
Cree la pantalla personalizada de la aplicacin ampliando la clase MainScreen. En el constructor de la pantalla, invoque setTitle() para especificar el ttulo de la pantalla. Invoque add() para agregar un campo de texto a la pantalla. Invoque addMenuItem() para agregar un elemento de men al men que crea MainScreen.
class CreateMenuScreen extends MainScreen { public CreateMenuScreen() { setTitle("Create Menu Sample"); add(new RichTextField("Create a menu")); addMenuItem(_viewItem); } }
4.
Cree el elemento de men utilizando la clase MenuItem. Omita run() para especificar la accin que tiene lugar cuando el usuario hace clic en el elemento de men. Cuando el usuario hace clic en el elemento de men, la aplicacin invoca Menu.run().
private MenuItem _viewItem = new MenuItem("More Info", 110, 10) { public void run() { 127
Gua de desarrollo
Crear un men
};
5.
Omita close() para mostrar un cuadro de dilogo cuando el usuario haga clic en el elemento de men Cerrar. De forma predeterminada, el elemento de men Cerrar se incluye en el men que crea MainScreen. Invoque super.close() para cerrar la aplicacin. Cuando el usuario cierra el cuadro de dilogo, la aplicacin invoca MainScreen.close() para cerrar la aplicacin.
public void close() { Dialog.alert("Goodbye!"); super.close(); }
128
Gua de desarrollo
Submens
Un submen es un grupo de elementos de men relacionados que aparece como un subconjunto de un elemento de men en el men completo. Al incluir elementos en un submen, los usuarios pueden encontrar elementos que se utilizan con frecuencia o elementos importantes ms fcilmente en el men completo. Los submens incluyen normalmente los siguientes tipos de acciones: enviar elementos de mltiples maneras (por ejemplo, envo de una imagen en un mensaje correo electrnico, un mensaje MMS, o como postal de audio) clasificar, buscar, encontrar y filtrar elementos de distintas formas (por ejemplo, filtrando los mensajes por remitente o asunto) cambiar vistas (por ejemplo, vista Da, Semana o Agenda en un calendario)
129
Gua de desarrollo
Submens
Slo dispositivos BlackBerry con panel tctil Hacer clic en el panel tctil. Desplazar un dedo a la derecha en el panel tctil. Pulse la tecla Men. Pulse la tecla Intro. Hacer clic en el panel tctil. Pulse la tecla Men. Pulse la tecla Intro. Desplazar un dedo a la izquierda en el panel tctil. Pulsar la tecla Escape.
Slo dispositivos BlackBerry con pantalla tctil y panel tctil Tocar el elemento de men. Hacer clic en el panel tctil. Desplazar un dedo a la derecha en el panel tctil. Pulse la tecla Men. Pulse la tecla Intro. Tocar el elemento de men. Hacer clic en el panel tctil. Pulse la tecla Men. Pulse la tecla Intro. Tocar fuera del submen. Desplazar un dedo a la izquierda en el panel tctil. Pulsar la tecla Escape. Tocar fuera del men completo y del submen dos veces. Pulsar la tecla Escape dos veces. Abrir o cerrar el control deslizante.
Cerrar un submen.
Aparece una flecha cuando los elementos del submen estn disponibles para un elemento en el men completo.
130
Gua de desarrollo
Submens
Crear un submen
Puede crear un submen para una aplicacin del dispositivo BlackBerry. Un submen aparece cuando un usuario selecciona un elemento del men que tiene un submen asociado al mismo. 1. Importe las clases y las interfaces necesarias.
131
Gua de desarrollo
Submens
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase CreateSubmenuScreen que se describe en el paso 3, representa la pantalla personalizada.
public class CreateSubmenu extends UiApplication { public static void main(String[] args) { CreateSubmenu theApp = new CreateSubmenu(); theApp.enterEventDispatcher(); } public CreateSubmenu() { pushScreen(new CreateSubmenuScreen()); } }
3.
Cree la pantalla personalizada de la aplicacin ampliando la clase MainScreen. En el constructor de la pantalla, invoque setTitle() para especificar el ttulo de la pantalla. Invoque add() para agregar un campo de texto a la pantalla.
class CreateSubmenuScreen extends MainScreen { public CreateSubmenuScreen() { setTitle("Create Submenu Sample"); add(new RichTextField("Create a submenu")); } }
4.
Cree elementos de submen mediante la clase MenuItem. Para cada elemento del submen, omita run() para especificar la accin que tiene lugar cuando el usuario hace clic en el elemento de men. Cuando el usuario hace clic en el elemento de men, la aplicacin invoca Menu.run().
private MenuItem _status1 = { public void run() { Dialog.inform("I'm } }; private MenuItem _status2 = { public void run() { Dialog.inform("I'm } }; new MenuItem("Available", 100, 1)
unavailable");
132
Gua de desarrollo
Submens
5.
Omita makeMenu() para crear el men para la aplicacin. Cree el submen utilizando la clase SubMenu. Invoque add() para agregar elementos de submen al submen. Invoque super.makeMenu() para crear el men.
protected void makeMenu( Menu menu, int instance ) { SubMenu statusSubMenu = new SubMenu(null,"My Status",300,3); statusSubMenu.add(_status1); statusSubMenu.add(_status2); menu.add(statusSubMenu); super.makeMenu(menu, instance); };
Gua de desarrollo
Mens emergentes
};
Mens emergentes
Un men emergente proporciona a los usuarios una forma rpida de acceder las acciones ms comunes para un elemento seleccionado. Tambin puede utilizar un men emergente si un elemento seleccionado tiene varias acciones asociadas al mismo o si un elemento seleccionado no cuenta con acciones principales asociadas al mismo. Puede crear un men emergente que contenga nueve acciones, seis acciones o tres acciones. Slo dispositivos BlackBerry con panel tctil Hacer clic en el panel tctil. Si ya se ha asignado una accin principal a un elemento (por ejemplo, abrir un mensaje), los usuarios pueden hacer clic y mantener pulsado el panel tctil para abrir un men emergente. Slo dispositivos BlackBerry con pantalla tctil y panel tctil Tocar el elemento. Hacer clic en el panel tctil. Si una accin principal ya ha sido asignada a un elemento (por ejemplo, abrir un mensaje), los usuarios pueden hacer clic en y mantener pulsado el panel tctil o bien tocar con un dedo y mantenerlo sobre la pantalla tctil para abrir un men emergente. Tocar el elemento. Hacer clic en el panel tctil. Pulse la tecla Intro. Tocar fuera del men emergente. Pulsar la tecla Escape. Abrir o cerrar el control deslizante.
134
Gua de desarrollo
Mens emergentes
Los mens emergentes reemplazan los mens contextuales o los mens reducidos. Cualquier men contextual existente se convierte automticamente en men emergente.
Si las posiciones se rellenan de forma dinmica, no debe mostrar elementos de men que no estn disponibles. Permita a los elementos de men disponibles cambiar la posicin.
135
Gua de desarrollo
Mens emergentes
Si no hay suficientes acciones para rellenar el men, utilice un men ms pequeo. Si es necesario rellenar una o dos posiciones, incluya acciones tiles como Copiar o Buscar. Si no rellena una posicin, aparecer "Cambiar aplicacin" o "Inicio".
Gua de desarrollo
Mens emergentes
se utilizar para el elemento en el men emergente. De lo contrario, se utiliza un icono predeterminado. Al igual que otros mens emergentes, slo los primeros ocho elementos del men contextual se muestran en el men emergente. Si el men contextual tiene ms de ocho elementos de men, asegrese de que utiliza los nmeros ordinales para los elementos de men adecuadamente de forma que los elementos ms importantes y tiles aparezcan en el men emergente. Para obtener ms informacin acerca de la creacin de mens contextuales, visite el Centro de recursos para desarrolladores de BlackBerry en www.blackberry.com/developer para leer el artculo Distinguir entre un men completo y un men de acciones principales.
Elementos de comando
Gua de desarrollo
Mens emergentes
Componente
Descripcin Para obtener ms informacin acerca de los comandos y los controladores de comandos, consulteAPI de marco de comandos. La aplicacin de ejemplo del marco de comandos proporcionada en BlackBerry Java SDK muestra los comandos y los controladores de comandos.
Si utiliza un men contextual heredado, BlackBerry Device Software 6.0 convierte los elementos del men contextual en elementos de comando y los enva al proveedor de elementos de comando. Para obtener ms informacin, consulteCompatibilidad con los mens contextuales heredados.
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase MyPopUpMenuScreen que se describe en el paso 3, representa la pantalla personalizada.
public class MyPopUpMenuApp extends UiApplication { public static void main(String[] args) { Mypop-upMenuApp theApp = new Mypop-upMenuApp(); theApp.enterEventDispatcher(); } public Mypop-upMenuApp() { pushScreen(new Mypop-upMenuScreen()); } }
3.
Cree la pantalla personalizada de la aplicacin ampliando la clase MainScreen. En el constructor de la pantalla, invoque setTitle() para especificar el ttulo de la pantalla.
class MyPopUpMenuScreen extends MainScreen { EmailAddressEditField emailAddress; public Mypop-upMenuScreen() {
138
Gua de desarrollo
Mens emergentes
4.
En el constructor de pantalla, especifique un proveedor de men contextual. Pase un objeto DefaultContextMenuProvider a Screen.setContextMenuProvider() para hacer que su pantalla muestre un men emergente.
setContextMenuProvider(new DefaultContextMenuProvider());
5.
En el constructor de pantalla, cree los componentes de interfaz de usuario que puedan invocar el men emergente. En el siguiente ejemplo de cdigo, la etiqueta utiliza la propiedad Field.FOCUSABLE para permitir a los usuario seleccionar el campo.
LabelField labelField = new LabelField("Click to invoke pop-up menu", Field.FOCUSABLE); emailAddress = new EmailAddressEditField("Email address: ", "name@blackberry.com", 40);
6.
En el constructor de pantalla, configure los componentes de interfaz de usuario como proveedores de elemento de comando. El objeto DefaultContextMenuProvider buscar campos configurados como proveedores de elemento de comando y los utilizar para crear y mostrar un men emergente. En cada componente, invoque Field.setCommandItemProvider() para configurar el campo como un proveedor de elemento de comando. La ItemProvider clase est descrita en el paso 7.
ItemProvider itemProvider = new ItemProvider(); labelField.setCommandItemProvider(itemProvider); emailAddress.setCommandItemProvider(itemProvider);
7.
En la pantalla personalizada, implemente la interfaz de CommandItemProvider. En getContext(), devuelva el campo configurado como proveedor de elemento de comando. En getItems(), cree un objeto Vector al que agregar los elementos de men emergente.
class ItemProvider implements CommandItemProvider { public Object getContext(Field field) { return field; } public Vector getItems(Field field) { } }
8.
En getItems(), proporcione los elementos de men emergente creando instancias de la clase CommandItem. En cada elemento del comando, especifique el texto de men emergente, el icono, y el comando. En el ejemplo de cdigo siguiente, se utiliza una declaracin if-then-else para comprobar qu componente ha invocado el men emergente antes de crear el CommandItem. El comando es un proxy a una instancia de una clase que ampla la clase CommandHandler abstracta descrita en el paso 9. Invoque Vector.addElement () para agregar los elementos de men emergente al Vector. Devuelva el Vector.
CommandItem defaultCmd; Image myIcon = ImageFactory.createImage(Bitmap.getBitmapResource("my_logo.png")); if(field.equals(emailAddress)){ 139
Gua de desarrollo
Mens emergentes
} else { defaultCmd = new CommandItem(new StringProvider("Label Field"), myIcon, new Command(new DialogCommandHandler())); } items.addElement(defaultCmd); return items;
9.
En la pantalla personalizada, cree un controlador de comandos creando una clase que ample la clase CommandHandler abstracta. En execute(), defina la funcionalidad que desea asociar a los elementos de men emergente. Este controlador de comandos podra ser utilizado por cualquier componente de la interfaz de usuario en su pantalla (por ejemplo, elementos del men completo, botones, etc.). Al no implementarse canExecute(), este comando es siempre ejecutable. En el ejemplo de cdigo siguiente, aparecer un cuadro de dilogo cuando el usuario haga clic en un elemento de men emergente.
class DialogCommandHandler extends CommandHandler { public void execute(ReadOnlyCommandMetadata metadata, Object context) { Dialog.alert("Executing command for " + context.toString()); } }
140
Gua de desarrollo
} /* To override the default functionality that prompts the user to save changes before the application closes, * override the MainScreen.onSavePrompt() method. In the following code sample, the return value is true which * indicates that the application does not prompt the user before closing. */ protected boolean onSavePrompt() { return true; } class ItemProvider implements CommandItemProvider { public Object getContext(Field field) { return field; } public Vector getItems(Field field) { Vector items = new Vector(); CommandItem defaultCmd; Image myIcon = ImageFactory.createImage(Bitmap .getBitmapResource("my_logo.png")); if(field.equals(emailAddress)){ defaultCmd = new CommandItem(new StringProvider("Email Address"), myIcon, new Command(new DialogCommandHandler())); } else{ defaultCmd = new CommandItem(new StringProvider("Label Field"), myIcon, new Command(new DialogCommandHandler())); } items.addElement(defaultCmd); return items; } } class DialogCommandHandler extends CommandHandler { public void execute(ReadOnlyCommandMetadata metadata, Object context) { Dialog.alert("Executing command for " + context.toString()); } }
setContextMenuProvider(new DefaultContextMenuProvider()); LabelField labelField = new LabelField("Click to invoke pop-up menu", Field.FOCUSABLE); emailAddress = new EmailAddressEditField("Email address: ", "name@blackberry.com", 40); ItemProvider itemProvider = new ItemProvider(); labelField.setCommandItemProvider(itemProvider); emailAddress.setCommandItemProvider(itemProvider); add(labelField); add(emailAddress);
141
Gua de desarrollo
2.
Ample la clase abstracta ApplicationMenuItem para crear un elemento de men. Omita el constructor ApplicationMenuItem() con un entero para especificar la posicin del elemento de men en el men. Un nmero ms alto coloca el elemento de men en una escala inferior en el men.
public class SampleMenuItem extends ApplicationMenuItem { SampleMenuItem() { super(20); } }
3.
4.
5.
142
Gua de desarrollo
6.
Invoque ApplicationMenuItemRepository.addMenuItem() para agregar el elemento de men al correspondiente repositorio de la aplicacin del dispositivo BlackBerry.
repository.addMenuItem(ApplicationMenuItemRepository .MENUITEM_ADDRESSCARD_VIEW, contactsDemoMenuItem);
7.
Implemente run() para especificar el comportamiento del elemento de men. En el siguiente cdigo de ejemplo, cuando un usuario hace clic en el elemento de men y en el caso de que exista un objeto Contact, la aplicacin ContactsDemo recibe el evento e invoca ContactsDemo.enterEventDispatcher().
public Object run(Object context) { BlackBerryContact c = (BlackBerryContact)context; if ( c != null ) { new ContactsDemo().enterEventDispatcher(); } else { throw new IllegalStateException( "Context is null, expected a Contact instance"); } Dialog.alert("Viewing an email message in the email view"); return null; }
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase CreateCustomMenuScreen, que se describe en el paso 3, representa la pantalla personalizada.
public class CreateCustomMenu extends UiApplication { public static void main(String[] args)
143
Gua de desarrollo
3.
Cree la pantalla personalizada de la aplicacin ampliando la clase MainScreen. En el constructor de la pantalla, invoque setTitle() para especificar el ttulo de la pantalla. Invoque add() para agregar un campo de texto a la pantalla.
class CreateCustomMenuScreen extends MainScreen { Background _menuBackground; Border _menuBorder; Font _menuFont; CreateCustomMenuScreen() { setTitle("Custom Menu Sample"); add(new RichTextField("Creating a custom menu")); } }
4.
En el constructor de la pantalla, especifique la apariencia del men. Cree el espaciado para el borde que rodea el men a travs de un objeto XYEdges. Invoque createRoundedBorder() con el fin de crear un borde con las esquinas redondeadas. Invoque createSolidTransparentBackground() para crear un color de fondo transparente para el men.
XYEdges thickPadding = new XYEdges(10, 10, 10, 10); _menuBorder = BorderFactory.createRoundedBorder(thickPadding, Border.STYLE_DOTTED); _menuBackground = BackgroundFactory.createSolidTransparentBackground(Color .LIGHTSTEELBLUE, 50);
5.
En el constructor de la pantalla, especifique el tipo de fuente para el men utilizando un objeto FontFamily. Invoque forName() para recuperar un tipo de fuente en el dispositivo BlackBerry. Invoque getFont() para especificar el estilo y el tamao del tipo de fuente.
try {
} catch(final ClassNotFoundException cnfe) { UiApplication.getUiApplication().invokeLater(new Runnable() { public void run() { Dialog.alert("FontFamily.forName() threw " + cnfe.toString());
144
Gua de desarrollo
});
6.
En la clase Screen, omita makeMenu() para aplicar la apariencia del men. Invoque setBackground(), setBorder() y setFont() para aplicar la apariencia del men que ha especificado en los pasos 4 y 5.
protected void makeMenu(Menu menu, int context) { menu.setBorder(_menuBorder); menu.setBackground(_menuBackground); menu.setFont(_menuFont); super.makeMenu(menu, context); }
Gua de desarrollo
} } protected void makeMenu(Menu menu, int context) { menu.setBorder(_menuBorder); menu.setBackground(_menuBackground); menu.setFont(_menuFont); super.makeMenu(menu, context); }
UiApplication.getUiApplication().invokeLater(new Runnable() { public void run() { Dialog.alert("FontFamily.forName() threw " + cnfe.toString()); } });
146
Gua de desarrollo
Fuentes personalizadas
Fuentes personalizadas
11
La clase FontManager del paquete net.rim.device.api.ui proporciona constantes y mtodos que puede utilizar para instalar y desinstalar una fuente TrueType en un dispositivo BlackBerry. El tamao mximo permitido para el archivo de la fuente TrueType es de 60 KB. Puede especificar que la fuente est disponible para la aplicacin que la instale o para todas las aplicaciones del dispositivo BlackBerry. La clase FontManager tambin proporciona mtodos para establecer la fuente predeterminada para el dispositivo BlackBerry o la aplicacin.
Instalar y utilizar una fuente personalizada en una aplicacin BlackBerry Java Application
1. Importe las clases y las interfaces necesarias.
import import import import import net.rim.device.api.system.*; net.rim.device.api.ui.*; net.rim.device.api.ui.container.*; net.rim.device.api.ui.component.*; java.util.*;
2.
Cree el marco de la aplicacin ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicacin para recibir eventos. En el constructor de la aplicacin, invoque pushScreen() para mostrar la pantalla personalizada para la aplicacin. La clase FontLoadingDemoScreen, descrita en el paso 3, representa la pantalla personalizada.
public class FontLoadingDemo extends UiApplication { public static void main(String[] args) { FontLoadingDemo app = new FontLoadingDemo(); app.enterEventDispatcher(); } public FontLoadingDemo() { pushScreen(new FontLoadingDemoScreen()); } }
3.
Cree la pantalla personalizada ampliando la clase MainScreen. Invoque setTitle() para configurar el texto que aparece en la seccin del ttulo de la pantalla. Cree un objeto nuevo LabelField. Debe aplicar la fuente personalizada a este objeto.
class FontLoadingDemoScreen extends MainScreen { public FontLoadingDemoScreen() { setTitle("Font Loading Demo"); LabelField helloWorld = new LabelField("Hello World"); } } 147
Gua de desarrollo
Ejemplo de cdigo: instalar y utilizar una fuente personalizada en una aplicacin BlackBerry Java Application
4.
En el constructor de la pantalla, invoque el mtodo FontManager.getInstance() para obtener una referencia al objeto FontManager, a continuacin, invoque el mtodo load() para instalar la fuente. Ajuste la invocacin load() a una declaracin IF para comprobar si la instalacin ha sido correcta. El mtodo load () devuelve un indicador que especifica si la fuente se ha instalado correctamente. El cdigo siguiente especifica que la fuente slo puede ser utilizada por la aplicacin.
if (FontManager.getInstance().load("Myfont.ttf", "MyFont", FontManager.APPLICATION_FONT) == FontManager.SUCCESS) { }
5.
En el constructor de la pantalla, en un bloque try/catch en la declaracin IF que ha creado en el paso 5, cree un objeto Font para la fuente que acaba de instalar. Invoque el mtodo setFont() para aplicar la fuente al valor LabelField creado en el paso 5.
try {
6.
Ejemplo de cdigo: instalar y utilizar una fuente personalizada en una aplicacin BlackBerry Java Application
import net.rim.device.api.system.*; import net.rim.device.api.ui.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.ui.component.*; import java.util.*; public class FontLoadingDemo extends UiApplication { public static void main(String[] args) { FontLoadingDemo app = new FontLoadingDemo(); app.enterEventDispatcher(); } public FontLoadingDemo() { pushScreen(new FontLoadingDemoScreen()); } }
148
Gua de desarrollo
Ejemplo de cdigo: instalar y utilizar una fuente personalizada en una aplicacin BlackBerry Java Application
class FontLoadingDemoScreen extends MainScreen { public FontLoadingDemoScreen() { setTitle("Font Loading Demo"); LabelField helloWorld = new LabelField("Hello World"); if (FontManager.getInstance().load("Myfont.ttf", "MyFont", FontManager.APPLICATION_FONT) == FontManager.SUCCESS) { try { FontFamily typeface = FontFamily.forName("MyFont"); Font myFont = typeface.getFont(Font.PLAIN, 50); helloWorld.setFont(myFont); } catch (ClassNotFoundException e) { System.out.println(e.getMessage()); } } add(helloWorld); } }
149
Gua de desarrollo
Verificacin ortogrfica
Verificacin ortogrfica
12
Puede utilizar los elementos en el paquete net.rim.blackberry.api.spellcheck para agregar la funcionalidad de corrector ortogrfico a una aplicacin. La interfaz SpellCheckEngine permite a una aplicacin verificar la ortografa de un valor de campo de la interfaz de usuario y proporcionar al usuario del dispositivo BlackBerry opciones para la verificacin ortogrfica. La interfaz SpellCheckUI permite a una aplicacin proporcionar una interfaz de usuario que posibilitar al usuario de un dispositivo BlackBerry resolver un problema de ortografa interactuando con la implementacin de SpellCheckEngine. Para obtener ms informacin acerca de cmo utilizar la API de comprobacin ortogrfica, consulte la aplicacin de ejemplo de verificacin ortogrfica, proporcionada con BlackBerry Java Development Environment 4.3.1 o posterior y con BlackBerry Java Plug-in para Eclipse.
2.
3.
4. 5.
Invoque createSpellCheckUI().
_spellCheckUI = SpellCheckEngineFactory.createSpellCheckUI();
Para notificar a una aplicacin cundo debe ocurrir un evento de verificacin ortogrfica, invoque addSpellCheckUIListener() con un objeto SpellCheckUIListener como parmetro.
_spellCheckUI.addSpellCheckUIListener(new SpellCheckUIListener());
6.
Para permitir a las aplicaciones verificar la ortografa de los campos de la interfaz de usuario y sugerir correcciones ortogrficas para un dispositivo BlackBerry, obtenga un objeto SpellCheckEngine e invoque getSpellCheckEngine().
_spellCheckEngine = _spellCheckUI.getSpellCheckEngine();
7.
Para utilizar la correccin de una palabra mal escrita, invoque SpellCheckEngine.learnCorrection(). Utilice los parmetros new StringBuffer(text), new StringBuffer(correction), donde text representa la palabra escrita mal y correction representa la palabra correcta.
_spellCheckEngine.learnCorrection(new StringBuffer(text), new StringBuffer (correction));
150
Gua de desarrollo
8.
9.
Para aceptar una palabra mal escrita como deletreada correctamente, invoque SpellCheckEngine.learnWord() con la palabra que se va a aprender como parmetro.
_spellCheckEngine.learnWord(new StringBuffer(word));
2.
3.
4.
Cree un mtodo que devuelva la constante SpellCheckUIListener.LEARNING_ACCEPT cuando el valor SpellCheckEngine aprenda una correccin de la palabra.
public int wordCorrectionLearned(SpellCheckUI ui, StringBuffer word, StringBuffer correction){ UiApplication.getUiApplication().invokeLater(new popUpRunner("Correction learned")); return SpellCheckUIListener.LEARNING_ACCEPT; }
5.
Cree un mtodo que devuelva la constante SpellCheckUIListener.ACTION_OPEN_UI cuando el valor SpellCheckEngine encuentre una palabra escrita de forma incorrecta.
public int misspelledWordFound(SpellCheckUI ui, Field field, int offset, int len){ UiApplication.getUiApplication().invokeLater(new popUpRunner("Misspelled word found")); return SpellCheckUIListener.ACTION_OPEN_UI; }
151
Gua de desarrollo
Recursos relacionados
Recursos relacionados
13
www.blackberry.com/go/apiref: vea la ltima versin de la referencia de la API para BlackBerry Java SDK. www.blackberry.com/go/devguides: encuentre las guas de desarrollo, notas de la versin y las descripciones generales de la aplicacin de ejemplo para BlackBerry Java SDK. www.blackberry.com/developers: visite BlackBerry Developer Zone si desea conocer recursos acerca del desarrollo de aplicaciones del dispositivo BlackBerry. www.blackberry.com/go/developerkb: consulte los artculos de la base de conocimientos para desarrolladores de BlackBerry. www.blackberry.com/developers/downloads: encuentre las ltimas herramientas de desarrollo y descargas para desarrollar aplicaciones de dispositivos BlackBerry.
152
Gua de desarrollo
Glosario
Glosario
3-D tridimensional API Application Programming Interface (Interfaz de programacin de aplicaciones) JVM Java Virtual Machine MIDP Perfil de dispositivo mvil de informacin (Mobile Information Device Profile)
14
153
Gua de desarrollo
Comentarios
Comentarios
Para ofrecer comentarios acerca de esta entrega, visite www.blackberry.com/docsfeedback.
15
154
Gua de desarrollo
16
Acceder a una imagen cifrada a travs de un flujo de entrada Acerca de la colocacin de elementos en los mens emergentes Prctica recomendada: implementar mens emergentes Prctica recomendada: implementar submens API de marco de comandos Crear un men emergente Crear un men emergente Crear un submen Mostrar una etiqueta en una posicin absoluta en la pantalla Mostrar una imagen cifrada Mostrar una imagen acercndola, alejndola y desplazndola Mostrar una fila de imgenes para realizar desplazamientos Mostrar un campo en una posicin absoluta en la pantalla Visualizacin de una imagen acercndola, alejndola y desplazndola Visualizacin de una fila de imgenes para realizar desplazamientos Activar los gestos para pellizcar Activar los deslizamientos que los usuarios realizan en el panel tctil Cifrar una imagen Imgenes Indicar actividad Indicar progreso Indicar el progreso de la actividad o de la tarea Gestos de pellizco Mens emergentes Especificar el modo de descodificacin de una imagen Especificar el tamao de la pantalla de una imagen cifrada Submens Compatibilidad con los mens contextuales heredados Desplazamientos con paneles tctiles Modelos de interaccin con la pantalla tctil Utilizar un comando en una o ms aplicaciones
155
Gua de desarrollo
Fecha
Descripcin Utilizar un comando con un componente de la interfaz de usuario Uso de imgenes cifradas
Se agregaron los siguientes ejemplos de cdigo: Ejemplo de cdigo: crear un men emergente Ejemplo de cdigo: crear un submen Ejemplo de cdigo: visualizar una fila de imgenes para realizar desplazamientos Ejemplo de cdigo: mostrar una etiqueta en una posicin absoluta en la pantalla Cdigo de ejemplo: visualizacin de una imagen acercndola, alejndola y desplazndola
Se cambiaron los temas siguientes: Indicadores de actividad e indicadores de progreso Botones Crear una interfaz de usuario que sea coherente con las interfaces de usuario estndar de BlackBerry Cuadros de dilogo Listas desplegables Listas y tablas Colectores Botones de opcin Buscar Casillas de seleccin numrica Campos de texto Vistas de rbol
Se eliminaron los siguientes temas: Agregar un icono a un elemento de men Agregar un icono a un elemento de men Ejemplo de cdigo: agregar un icono a un elemento de men
156
Gua de desarrollo
Aviso legal
Aviso legal
17
2010 Research In Motion Limited. Reservados todos los derechos. BlackBerry, RIM, Research In Motion y las marcas comerciales, nombres y logotipos relacionados son propiedad de Research In Motion Limited y estn registrados y/o se usan en EE. UU. y en diferentes pases del mundo. Eclipse es una marca comercial de Eclipse Foundation, Inc. Java es una marca comercial de Oracle America, Inc. TrueType es una marca comercial de Apple Inc. Todas las dems marcas comerciales son propiedad de sus respectivos propietarios. Esta documentacin, incluida cualquier documentacin que se incorpore mediante referencia como documento proporcionado o disponible en www.blackberry.com/go/docs, se proporciona o se pone a disposicin "TAL CUAL" y "SEGN SU DISPONIBILIDAD" sin ninguna condicin, responsabilidad o garanta de ningn tipo por Research In Motion Limited y sus empresas afiliadas ("RIM") y RIM no asume ninguna responsabilidad por los errores tipogrficos, tcnicos o cualquier otra imprecisin, error u omisin contenidos en esta documentacin. Con el fin de proteger la informacin confidencial y propia de RIM, as como los secretos comerciales, la presente documentacin describe algunos aspectos de la tecnologa de RIM en lneas generales. RIM se reserva el derecho a modificar peridicamente la informacin que contiene esta documentacin, si bien tampoco se compromete en modo alguno a proporcionar cambios, actualizaciones, ampliaciones o cualquier otro tipo de informacin que se pueda agregar a esta documentacin. Esta documentacin puede contener referencias a fuentes de informacin, hardware o software, productos o servicios, incluidos componentes y contenido como, por ejemplo, el contenido protegido por copyright y/o sitios Web de terceros (conjuntamente, los "Productos y servicios de terceros"). RIM no controla ni es responsable de ningn tipo de Productos y servicios de terceros, incluido, sin restricciones, el contenido, la exactitud, el cumplimiento de copyright, la compatibilidad, el rendimiento, la honradez, la legalidad, la decencia, los vnculos o cualquier otro aspecto de los Productos y servicios de terceros. La inclusin de una referencia a los Productos y servicios de terceros en esta documentacin no implica que RIM se haga responsable de dichos Productos y servicios de terceros o de dichos terceros en modo alguno. EXCEPTO EN LA MEDIDA EN QUE LO PROHBA ESPECFICAMENTE LA LEY DE SU JURISDICCIN, QUEDAN EXCLUIDAS POR LA PRESENTE TODAS LAS CONDICIONES, APROBACIONES O GARANTAS DE CUALQUIER TIPO, EXPLCITAS O IMPLCITAS, INCLUIDA, SIN NINGN TIPO DE LIMITACIN, CUALQUIER CONDICIN, APROBACIN, GARANTA, DECLARACIN DE GARANTA DE DURABILIDAD, IDONEIDAD PARA UN FIN O USO DETERMINADO, COMERCIABILIDAD, CALIDAD COMERCIAL, ESTADO DE NO INFRACCIN, CALIDAD SATISFACTORIA O TITULARIDAD, O QUE SE DERIVE DE UNA LEY O COSTUMBRE O UN CURSO DE LAS NEGOCIACIONES O USO DEL COMERCIO, O RELACIONADO CON LA DOCUMENTACIN O SU USO O RENDIMIENTO O NO RENDIMIENTO DE CUALQUIER SOFTWARE, HARDWARE, SERVICIO O CUALQUIER PRODUCTO O SERVICIO DE TERCEROS MENCIONADOS AQU. TAMBIN PODRA TENER OTROS DERECHOS QUE VARAN SEGN EL ESTADO O PROVINCIA. ES POSIBLE QUE ALGUNAS JURISDICCIONES NO PERMITAN LA EXCLUSIN O LA LIMITACIN DE GARANTAS IMPLCITAS Y CONDICIONES. EN LA MEDIDA EN QUE LO PERMITA LA LEY, CUALQUIER GARANTA IMPLCITA O CONDICIONES EN RELACIN CON LA DOCUMENTACIN NO SE PUEDEN EXCLUIR TAL Y COMO SE HA EXPUESTO ANTERIORMENTE, PERO PUEDEN SER LIMITADAS, Y POR LA PRESENTE ESTN LIMITADAS A NOVENTA (90) DAS DESDE DE LA FECHA QUE ADQUIRI LA DOCUMENTACIN O EL ELEMENTO QUE ES SUJETO DE LA RECLAMACIN.
157
Gua de desarrollo
Aviso legal
EN LA MEDIDA MXIMA EN QUE LO PERMITA LA LEY DE SU JURISDICCIN, EN NINGN CASO RIM ASUMIR RESPONSABILIDAD ALGUNA POR CUALQUIER TIPO DE DAOS RELACIONADOS CON ESTA DOCUMENTACIN O SU USO, O RENDIMIENTO O NO RENDIMIENTO DE CUALQUIER SOFTWARE, HARDWARE, SERVICIO O PRODUCTOS Y SERVICIOS DE TERCEROS AQU MENCIONADOS INCLUIDOS SIN NINGN TIPO DE LIMITACIN CUALQUIERA DE LOS SIGUIENTES DAOS: DIRECTOS, RESULTANTES, EJEMPLARES, INCIDENTALES, INDIRECTOS, ESPECIALES, PUNITIVOS O AGRAVADOS, DAOS POR PRDIDA DE BENEFICIOS O INGRESOS, IMPOSIBILIDAD DE CONSEGUIR LOS AHORROS ESPERADOS, INTERRUPCIN DE LA ACTIVIDAD COMERCIAL, PRDIDA DE INFORMACIN COMERCIAL, PRDIDA DE LA OPORTUNIDAD DE NEGOCIO O CORRUPCIN O PRDIDA DE DATOS, IMPOSIBILIDAD DE TRANSMITIR O RECIBIR CUALQUIER DATO, PROBLEMAS ASOCIADOS CON CUALQUIER APLICACIN QUE SE UTILICE JUNTO CON PRODUCTOS Y SERVICIOS DE RIM, COSTES DEBIDOS AL TIEMPO DE INACTIVIDAD, PRDIDA DE USO DE LOS PRODUCTOS Y SERVICIOS DE RIM O PARTE DE L O DE CUALQUIER SERVICIO DE USO, COSTE DE SERVICIOS SUSTITUTIVOS, COSTES DE COBERTURA, INSTALACIONES O SERVICIOS, COSTE DEL CAPITAL O CUALQUIER OTRA PRDIDA MONETARIA SIMILAR, TANTO SI DICHOS DAOS SE HAN PREVISTO O NO, Y AUNQUE SE HAYA AVISADO A RIM DE LA POSIBILIDAD DE DICHOS DAOS. EN LA MEDIDA MXIMA EN QUE LO PERMITA LA LEY DE SU JURISDICCIN, RIM NO TENDR NINGN OTRO TIPO DE OBLIGACIN O RESPONSABILIDAD CONTRACTUAL, EXTRACONTRACTUAL O CUALQUIER OTRA, INCLUIDA CUALQUIER RESPONSABILIDAD POR NEGLIGENCIA O RESPONSABILIDAD ESTRICTA. LAS LIMITACIONES, EXCLUSIONES Y DESCARGOS DE RESPONSABILIDAD SE APLICARN: (A) INDEPENDIENTEMENTE DE LA NATURALEZA DE LA CAUSA DE LA ACCIN, DEMANDA O ACCIN SUYA, INCLUIDA PERO NO LIMITADA AL INCUMPLIMIENTO DEL CONTRATO, NEGLIGENCIA, AGRAVIO, EXTRACONTRACTUAL, RESPONSABILIDAD ESTRICTA O CUALQUIER OTRA TEORA DEL DERECHO Y DEBERN SOBREVIVIR A UNO O MS INCUMPLIMIENTOS ESENCIALES O AL INCUMPLIMIENTO DEL PROPSITO ESENCIAL DE ESTE CONTRATO O CUALQUIER SOLUCIN CONTENIDA AQU; Y (B) A RIM Y A SUS EMPRESAS AFILIADAS, SUS SUCESORES, CESIONARIOS, AGENTES, PROVEEDORES (INCLUIDOS LOS PROVEEDORES DE SERVICIOS DE USO), DISTRIBUIDORES AUTORIZADOS POR RIM (INCLUIDOS TAMBIN LOS PROVEEDORES DE SERVICIOS DE USO) Y SUS RESPECTIVOS DIRECTORES, EMPLEADOS Y CONTRATISTAS INDEPENDIENTES. ADEMS DE LAS LIMITACIONES Y EXCLUSIONES MENCIONADAS ANTERIORMENTE, EN NINGN CASO NINGN DIRECTOR, EMPLEADO, AGENTE, DISTRIBUIDOR, PROVEEDOR, CONTRATISTA INDEPENDIENTE DE RIM O CUALQUIER AFILIADO DE RIM ASUMIR NINGUNA RESPONSABILIDAD DERIVADA DE O RELACIONADA CON LA DOCUMENTACIN. Antes de instalar, usar o suscribirse a cualquiera de los Productos y servicios de terceros, es su responsabilidad asegurarse de que su proveedor de servicios de uso ofrezca compatibilidad con todas sus funciones. Puede que algunos proveedores de servicios de uso no ofrezcan las funciones de exploracin de Internet con una suscripcin al servicio BlackBerry Internet Service. Consulte con su proveedor de servicios acerca de la disponibilidad, arreglos de itinerancia, planes de servicio y funciones. La instalacin o el uso de los Productos y servicios de terceros con productos y servicios de RIM puede precisar la obtencin de una o ms patentes, marcas comerciales, derechos de autor u otras licencias para evitar que se vulneren o violen derechos de terceros. Usted es el nico responsable de determinar si desea utilizar Productos y servicios de terceros y si se necesita para ello cualquier otra licencia de terceros. En caso de necesitarlas, usted es el nico responsable de su adquisicin. No instale o utilice Productos y servicios de terceros hasta que se hayan adquirido todas las licencias necesarias. Cualquier tipo de Productos y servicios de terceros que se proporcione con los productos y servicios de RIM se le facilita para su comodidad "TAL CUAL" sin ninguna condicin expresa e implcita, aprobacin, garanta de cualquier tipo por RIM y RIM no sume
158
Gua de desarrollo
Aviso legal
ninguna responsabilidad en relacin con ello. El uso de los Productos y servicios de terceros se regir y estar sujeto a la aceptacin de los trminos de licencias independientes aplicables en este caso con terceros, excepto en los casos cubiertos expresamente por una licencia u otro acuerdo con RIM. Algunas funciones mencionadas en esta documentacin requieren una versin mnima del software de BlackBerry Enterprise Server, BlackBerry Desktop Software y/o BlackBerry Device Software. Los trminos de uso de cualquier producto o servicio de RIM se presentan en una licencia independiente o en otro acuerdo con RIM que se aplica en este caso. NINGUNA PARTE DE LA PRESENTE DOCUMENTACIN EST PENSADA PARA PREVALECER SOBRE CUALQUIER ACUERDO EXPRESO POR ESCRITO O GARANTA PROPORCIONADA POR RIM PARA PARTES DE CUALQUIER PRODUCTO O SERVICIO DE RIM QUE NO SEA ESTA DOCUMENTACIN.
Research In Motion Limited 295 Phillip Street Waterloo, ON N2L 3W8 Canad Research In Motion UK Limited Centrum House 36 Station Road Egham, Surrey TW20 9LF Reino Unido Publicado en Canad
159