App Inventor es una herramienta que nos da la posibilidad de crear aplicaciones android sin tener que escribir ni usa sóla linea de código. Realmente está orientada a facilitar el aprendizaje. Su nacimiento se debe a Google, sin embargo, cuando empezaron a centrarse en unos pocos proyectos, App Inventor fue una de las herramientas afectadas que fue cerrada. Poco tiempo después el MIT anunciaba que se hacía cargo de continuar con su desarrollo. Y ahora tenemos ya la primera BETA.
App Inventor se compone de dos partes:
La herramienta de diseño nos ofrece a través de un interfaz web una serie de controles que podremos añadir a nuestras pantallas. Estos controles no cubren todos los que trae android pero si que nos ofrece un conjunto lo suficientemente amplio como para poder crear aplicaciones ricas.
Vamos a echar un vistazo a los principales controles de cada categoría.
Hasta ahora sólo hemos diseñado nuestra interfaz gráfica. Es en el editor de bloques donde vamos a crear nuestro código, sólo que en base a componentes gráficos, sin tener que escribir ni una sóla línea de código.
Para ello, tenemos que utilizar la opción ”open blocks editor”, la cual nos va a descargar un fichero AppInventorForAndroidCodeblocks.jnlp encargado de arrancar la Java Web Start.
En el editor de bloques iremos indicando cómo se comportan los eventos, o qué valores vamos a asignar a los atributos de nuestros componentes.
La forma que han elegido para trabajar es como si tuviésemos piezas de un puzzle que tenemos que unir. Es una forma muy intuitiva, ya que viendo la forma de la pieza que tenemos y la que queremos añadir, vemos, si es posible o no que estás interactúen.
Tenemos tres pestañas:
El MIT ha puesto a nuestra disposición una serie de tutoriales muy bien explicados y organizados por dificultad, a través de los cuáles vamos a ver todas las posibilidades que nos brinda el App Inventor.
Vamos a ver uno de ellos, el más fácil para ver como enlazar todo lo que hemos comentado.
En la aplicación vamos a permitir que el usuario pueda dibujar líneas de colores y círculos sobre una imagen. Se podrá seleccionar el color que queremos aplicar.
Para ello, necesitamos insertar en la pantalla tres botones. Para que se muestren con una orienzación horizontal, seleccionaremos el Screen Arrangement, HorizontalArragement. Al añadir los botones, podemos modificar una serie de atributos, como el color de fondo, si tiene que aparecer activado o desactivado, el tipo de letra, el texto que va a mostrar, etc. Para asignarle el nombre, debemos utilizar el botón Rename de la sección Components, ya que no está dentro de las propiedades de los componentes.
Ahora añadiremos un cavas, en el que pondremos una imagen de fondo y debajo del canvas otro botón para limpiar el canvas.
Como veis, la parte de la interfaz no tiene excesiva dificultad.
Tenemos que abrir el editor de código para comenzar a crear nuestro “código”.
Queremos, que al pulsar un botón de color podamos dibujar líneas en nuestro canvas del color del botón. En la pestaña My Blocks están todos los componentes que hemos añadido. Al entrar en cualquiera de los botones vemos los eventos que podemos manejar, por ejemplo, Click, GotFocus, LongClick, etc y los atributos del botón que vamos a pode modificar o acceder a sus valores, como BackgroundColor o setBackgroundColor. Cuando modificamos un valor, el atributo nos indica que se va a hacer, set ButtonBlue.BackGroundColor to. Cuando añadamos este método, tendremos que unir una pieza de un color.
Siguiendo con el ejemplo, añadiremos el evento click. Se añade una pieza de puzzle en la que la estructura es “cuando hacemos click en el botón” hay que … Para establecer que el color seleccionado en el canvas es el que corresponde con el botón, vamos al componente canvas y añadimos el método “set Canvas.PaintColor to”. Ahora tenemos que completar esta pieza con el color que queremos dibujar. Los colores están en la pestaña Built-in. Seleccionamos el que corresponda y lo añadimos.
Debemos repetir estos pasos para los otros tres colores.
Vamos a dotar de funcionalidad al botón que limpia la pantalla. Al igual que con los otros botones, añadimos el evento click y llamamos al método Clear de Canvas.
Ahora nos falta dar funcionalidad a nuestro canvas. Vamos a manejar dos eventos; qué tiene que suceder cuando arrastremos el dedo o cuando lo mantengamos presionado en una misma posición.
Si arrastramos el dedo queremos que se dibuje una línea con el color que hemos seleccionado en el cambas. Para ello tendremos que añadir el evento Dragged y juntaremos la pieza DrawLine, para que se dibuje una línea. El evento Dragged tiene siete argumentos:
- La posición de nuestro dedo antes de empezar a arrastrarle.
- La actual posición de nuestro dedo.
- La posición inmediatamente previa de nuestro dedo.
- Un spritte.
El método DrawLine nos pide que le indiquemos las posiciones entre las que tiene que trazar las líneas. Para poder añadirlas tenemos que ir a My Definitions, donde tenemos todas nuestros valores. Añadiremos la posición previa y la actual.
Para poder dibujar círculos cuando presionemos la pantalla, seleccionaremos el evento Touched y llamaremos al método DrawCircle. Los parámetros que tenemos que pasarle son la posición actual (la encontramos en My Definitions) y el radio del círculo que queremos dibujar. Este valor no nos es devuelto por ningún evento ni propiedad, tenemos que asignárselo nosotros mismos. Para ello, picaremos en cualquier parte limpia de la pantalla, nos aparecerán botones con las opciones de Built-in. Seleccionamos Math y le decimos que queremos insertar un número. Para cambiar el valor simplemento picamos el valor actual y se activa para que añadamos un 5.
Como habéis visto, en la interfaz gráfica hemos añadido dos botones para el tamaño de los puntos que se dibujarán cuando dejemos presionada la pantalla. De esta forma, podemos ver como trabajar con variables. Nos crearemos dos variables globales, con el tamaño de los puntos grandes y pequeños. Para ello seleccionaremos el componente variable del Built-in en Definition. Le indicamos que la variable va a ser de tipo numérica y el valor por defecto que va a tener.
También necesitamos otra variable para recoger el valor que hemos seleccionado. En el evento Click de los botones será donde hagamos la asignación.
Y finalmente, sólo tendremos que sustituir en el método DrawCircle, el parámetro que recoge el tamaño de los puntos, que lo habíamos dejado como valor fijo, por nuestra variable.
Ya tenemos la aplicación desarrollado. Ahora podemos probarla tanto en un emulador como en nuestro dispositivo.