Agregando y Editando Gráficos Vectoriales Escalables (SVG) Archivos en Mobility Pack
Con el soporte JSR-226 incluido en Netbeans Mobility Pack para CLDC/MIDP 5.5,tu ahora
puedes utilizar archivos con formato Scalable Vector Graphics (SVG) para agregar vector-based graphics en tus aplicaciónes móviles.
Los archivos SVG files son compactos y te dan la posibilidad de tener gráficos de alta-calidad sobre dispositivos de limitados-recursos.
SVG tambien soporta secuencia de comandos (scripts) y animaciónes, lo cual es ideal para interactuar, manejar datos y personalizar gráficos.
Este articulo te mostrara como la GUI-based Visual Mobile Designer dentro del software Mobility Pack te permitira crear menús, splash screens,
wait screens, y animaciónes solo seleccionando y arrastrando (drag-and-drop)componentes desde la paleta
Que son SVG y JSR-266?
De su sigla en inglés, Java Specification Request, (JSR)-226
especifica una nueva API para interpretar escalables, vectores gráficos bidimensionales. En lugar de codificar el
contenido de cada pixel, como imágenes de formato raster-based, asi como GIF y JPG, los vectores gráficos contienen
solo instrucciones de dibujo para cada pixel. Lo cual da a las imágenes vectoriales varias ventajas:
Son Escalables, a calidad de la imagen permanece igual sobre las pantallas de diferentes tamaños y resoluciones.
También puedes reducir, voltear e invertir la imagen sin perder la calidad.
-
Soportan scrips y animaciones, son ideales para interactuar,
y para gráficos data-driven.
Soncompactas. Las imágenes Vector-base pueden ser diez veces más pequeñas e idénticas como una imagen en formato GIF o JPEG. Esta importante ventaja hace posible
crear aplicaciónes gráficamente ricas para dispositivos de mano con recursos limitados
Permiten a los usuarios interactuarcon el contenido de la imagen.
Son consultables, permiten a los usuarios buscar textos dentro de la imagen. Por ejemplo, el usuario puede buscar en un mapa nombres específicos de calles,
o buscar una lista de restaurantes con sus menús y seleccionar su plato favorito.
La especificación SVG (Gráficos Vectoriales Escalables) es la World
Wide Web Consortium especificación para describir gráficos bidimensionales y aplicaciónes graficas en XML. La especificación SVG describe imágenes con formas vectoriales, texto, y gráficos raster integrados.
Un subconjunto completamente equipado, o perfil, de SVG dirigido a hacia dispositivos móviles es llamada
"SVG-Tiny."
JSR-226 adopta la version 1.1 del perfil SVG-Tiny como el formato oficial para los vectores gráficos de J2ME.
Tu puedes encontrar mas acerca de JSR-226 leyendo el articulo, Obteniendo
Graficos 2D para moviles (J2ME).
Trabajando con imagenes SVG
Visual Mobile Designer (VMD) te proporciona de forma intuitiva la manera de incorporar imágenes SVG y animaciónes dentro de tus aplicaciones móviles. En el VMD, puedes inspeccionar
y ver previamente animaciónes e imágenes SVG, y seleccionar y arrastrar (drag and drop) componentes SVG (splash screens, menús, and wait screens) desde la Paleta de Componentes al diagrama de flujo(Flow Design)
de tu aplicación o dentro del Diseñador de Pantallas (Screen Designs).
Para usar las nuevas funciones SVG, necesitas tener el siguiente software instalado:
Vision previa de los Archivos SVG
Para usar archivos SVG en tus aplicación móvil, primero agrega el archivo al
<project_home>/src directorio de tu proyecto. Una vista rapida al grafico estan facil como hacer doble-click al nombre del archivo.
Despues de abrir el archivo, puedes pasar el mouse sobre el grafico para resaltar los diferentes elementos. Has clic sobre el área amarilla en la barra
de herramientas para correr las animaciones. También puedes utilizar barra horizontal de desplazamiento para seleccionar en cualquier momento una parte de la animación.
Para agregar gráficos SVG dentro del diagrama de flujo de tu aplicación, arrastra un componente SVGMenú, SVGSplashScreen, o SVGWaitScreen de la Paleta de componentes
dentro del Flow Designer (te explicare estos componentes en los siguientes párrafos). Ahora selecciona y arrastra el grafico desde la ventana de proyectos (Projects window)
dentro del componente. También es posible solo darle doble-clic al componente para abrirlo en modo Screen Designer, y solo arrastrar el archivo SVG dentro de la pantalla abierta.
De la misma manera puedes seleccionar y arrastrar archivos SVG dentro del Screen Designer, y asi colocar el grafico dentro de la pantalla. Nota que cuando tu arrastras un
grafico dentro de un componente, un SVGImage es agregado en el folder "Resources" en la ventana de navegacion
(Navigator Window).
Editor Externo
Al ser SVG un lenguaje basado en XML, es posible producir contenidos SVG con un editor de text. De cualquier manera,
tu probablemente obtendrás mejores resultado utilizando uno de los muchas herramientas de código abierto o comercial que hay disponibles hoy en día .
Las herramientas comerciales que han sido probadas con NetBeans Mobility Pack son:
La W3C mantiene una extensa lista
de productos que implementan SVG. Estos aun no han sido probados, pero deberían trabajar sin problema con el IDE.
Para agregar un editor IDE, selecciona Tools > Options. Y selecciona el icono Miscellaneous, se expenderán los Setting de SVG.
Clic en el botón Change para agregar la ruta de tu editor al IDE.

Ahora pedes abrir un grafico en tu editor solo haciendo doble-clic en el grafico en la ventana del Screen Designer.
Trabajando con SVG en Visual Designer
Ahora que ya tienes los gráficos SVG y las animaciones preparadas, estas listo para agregarlas en tu aplicación móvil.
En esta sección te hablare acerca de cada componente que tu puedes utilizar para mejorar tu aplicación.
Working with SVG Animations
El componente svgAnimationWrapper permite insertar un archivo SVG animado en cualquier parte del flujo de tu aplicación o dentro de una pantalla.
EL componente es una envoltura sobre la clase
SVGAnimator de la API JSR-226. de la API JSR-226. Esto es también la base para todos
componentes (svgSplashScreen, svgWaitScreen, and svgMenu)—todos ellos
lo heredan del svgAnimationWrapper.
Para agregar un archivo SVG dentro de tu aplicación, selecciona y arrastra el componente svgAnimationWrapper de la Paleta de Componentes y colócalo en el Flow Designer.
Ahora arrastra un archivo SVG desde la ventana de Proyectos dentro del componente. Para controlar el comportamiento de la animación en la pantalla de tu aplicación puedes
modificar las siguientes propiedades:
-
Start Animation Immediately. Esto es si quieres que el componte inicie la animación inmediatamente
cuando aparezca sobre la pantalla
-
Animation Time Increment. El mínimo tiempo en segundos, que debería transcurrir entre la conversion de la trama.
Este valor debe ser mayor a cero
-
Reset Animation When Stopped - Si tiene valor "true", el componente automáticamente reinicia la animación desde
el principio cuando el componente es retirado de la pantalla. Si el valor es "false", la animación no es reiniciada y la siguiente vez que
el componente desplegado, la animación automáticamente continua donde fue detenida anteriormente.
-
Full Screen - Determina si el componente
debe ser mostrado en pantalla completa.
Trabajando con Splash Screens
Las Splash screens son usadas para mejorar la presentación de una aplicación. Típicamente,
se utiliza una splash screen cuando en programa inicia, o para desplegar el logo, marca o información.
Para agregar una SplashScreen a tu aplicación, arrastra una SVGSplashScreen desde la Paleta
y colócala en el Flow Designer. Ahora arrastra un archivo SVG desde la Ventana de Proyectos dentro del componente
Como una Splash Screen convencional en el Visual Designer, tu conectas splash screen en el Flow Design de tu aplicación
con el Mobile Device "Start Point" con el puerto de la svgSplashScreen y conecta el puerto "Dismiss"
con el componente helloForm. Si tu splash screen contiene una animación,
puedes utilizar la ventana de propiedades (Properties window) para ajustar el comportamiento,
por ejemplo determinar la propiedad "timeout" si quieres que sea interrumpida o no la animación..
Trabajando con Wait Screens
Las pantallas de espera (Wait Screens) permiten al usuario ejecutar tareas blocking background task (por ejemplo, conectarte a la red),
y mostrar el progreso de la tarea o desplegar un mensaje en la pantalla para informar al usuario que la información esta siendo procesada.
Como svgSplashScreen, svgWaitScreen es la versión SVG del componente WaitScreen. Para agregar una SVG Wait Screen, arrastra el componente
svgWaitScreen de la Component Palette y colócalo en el Flow Designer. Ahora arrastra un archivo SVG desde la ventana de proyectos y colócalo sobre del componente.
El componente svgWaitScreen contiene dos puertos, "Success" y "Failure".
Cuando la tarea (background task) es exitosamente terminada (esto es, que ninguna excepción es mostrada), el componente automáticamente continua
con la siguiente acción presentada en el en el flujo de la aplicación. Si la tarea falla (una excepción mostrada), el componente automáticamente
continua con la acción conectada al puerto "Failure".

Aquí se muestra una SVG wait screen en el emulador.
Trabajando con Menús
Las posibilidades para menús gráficos y animados son virtualmente sin límites cuando tú usas gráficos SVG como fondo o como elementos individuales del menú.
En el Visual Mobile Designer, tú puedes agregar un menú previamente creado a tu aplicación, o agregar un menú de fondo y entonces agregar por separado elementos del menú al menú.
Para agregar elementos al menú, arrastra un menú desde la paleta y colócalo en el Flow Designer. Ahora asigna un SVG image al componente arrastrado y colocando
un grafico SVG graphic desde la ventana de proyectos.
Tú puedes crear elementos de menú de dos maneras:
-
If the image you drop contains elements (representing
menu items) with IDs that start with the "menuItem_"
string, the elements are automatically recognized by the IDE and are added
to the component as menu items, sorted alphabetically.
-
Si el componente SVG image no contiene elementos con IDs
con el cual comienza el string"menuitem_", tu puedes
agregar nombres a los elementos para representar individualmente cada elemento del menú solo
arrastra un componente SVGMenu Element desde la Component Palette y colócalo en el
sobre el componente SVGMenu. Ahora que los componentes SVGMenu Element están
agregados al SVGMenu puedes obsever que en el Flow Designer nuevos puertos disponibles
llamados "menuItem_". Puedes renombrar los puertos de acuerdo al nombre del
archivo SVG.
En ventana del Flow Designer, puedes observar que el componente svgMenu ahora contiene
varios puertos llamados menuItem_. Esos puertos corresponden a elementos individuales
del menú y puedes ser usado en el flow design como cualquier otro puerto. Los elementos del menú también
son visibles en la Inspector Window y pueden ser borrados o reordenados en también en esta ventana.
Aquí te mostramos un ejemplo de un menú. Nota como el mouse corre sobre
la selección "Download data", esta cambia de color—esta es una función
de los gráficos SVG. Observa como tambien la opción "Download data"
tiene una línea de puntos alrededor—la línea muestra los límites de el elemento.

Ahora tomaremos este menú y lo agregaremos al diagrama del proyecto. Por medio de una línea de acción desde cada puerto
_menuitem, tu conectas las opciones del menú para una acción especifica o otras animaciones SVG.

Exportando Gráficos SVG y Animaciones
Mas y mas dispositivos móviles están soportando los estándares JSR-226 y SVG,
si tu quisieras convertir gráficos SVG graphics o animaciones a archivos PNG si
tu desarrollas en antiguos dispositivos..
Generando Archivos PNG desde Archivos SVG
Simplemente has clic-derecho en el nodo de la imagen en la Projects window
del Explorer y escoge la opción Export SVG Image to PNG Image, o Export SVG Animation
to PNG Animation. Un dialogo se abre, y te da la oportunidad de especificar el tamaño
de la imagen exportar la imagen para activar la configuración o todas las configuraciones para tus proyectos.
ISi tu escoges exportar la imagen o animación para todas tus configuraciones, el
IDE automáticamente creara raster imágenes basadas en el tamaño de la pantalla de cada
configuración individual. Por ejemplo, si tu tienes tres configuraciones, cada una con diferente tamaño de pantalla,
la export function automáticamente creara tres imágenes PNG o animaciones con el tamaño correspondiente para cada una de las tres configuraciones.
Siguientes Pasos
-
-
-
Lista de dispositivos que soportan JSR-226, ver lista en
svg.org.