programación web para móviles - ua · programación web para móviles sesión 2: introducción...

45
Experto en Desarrollo de Aplicaciones para Dispositivos Móviles © 2012-2013 Depto. Ciencia de la Computación e IA Programación web para móviles Sesión 2: Introducción a Sencha Touch

Upload: others

Post on 02-Jan-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IA 

Programación webpara móvilesSesión 2: Introducción

a Sencha Touch

Page 2: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 2

Contenidos

• Introducción

• Sencha Touch vs. JQuery Mobile

• Instalar Sencha Touch

• Estructura de carpetas

• Código HTML básico

• Instanciar una aplicación

• Comprobando los resultados

• Todo en un único fichero

• Paneles y Layouts

• Identificadores

• Toolbars

• Docked items

• Botones

Page 3: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 3

Introducción

• Sencha Touch es un framework para el desarrollo de aplicaciones móviles centrado en

WebKit.

• Fue el primer framework basado en HTML5 y JavaScript, además utiliza CSS3 para

realizar animaciones.

• La apariencia de las aplicaciones desarrolladas es similar al de las aplicaciones nativas

en Android, BlackBerry e iOS.

• Dispone de multitud de controles IU, fáciles de usar y personalizar.

• Ha sido diseñado específicamente para dispositivos táctiles por lo que incluye una

amplia gama de eventos táctiles o gestures.

Page 4: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 4

Introducción• Sencha Touch funciona perfectamente junto a PhoneGap.

• Puede ser usado para distribuir nuestras aplicaciones en la App Store o en

Android Marketplace.

• Gracias a PhoneGap podemos acceder a la lista de contactos, la cámara y

muchas otras opciones directamente desde JavaScript.

• Sencha Touch implementa el patrón de diseño MVC en el lado del cliente.

• Permite leer datos directamente a través de AJAX, JSON, YQL o la nueva

capacidad local storage de HTML5.

• Podemos enlazar esos datos a elementos específicos de nuestras vistas, y

utilizar los datos sin conexión gracias a los almacenes locales.

Page 5: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 5

Sencha Touch vs. JQuery Mobile

JQuery Mobile:

• Muy sencillo de aprender e implementar aplicaciones.

• Es necesario escribir muy poco código.

• Al estar basado en JQuery, funciona correctamente en un mayor número

de dispositivos móviles y de navegadores, como Symbian, Android, iOS,

Blackberry, Window Phone 7 o WebOS.

• No dispone de muchos controles para el diseño de la interfaz.

• Actualmente sigue en versión beta.

• Tiene una ejecución más lenta en los dispositivos móviles.

Page 6: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 6

Sencha Touch vs. JQuery Mobile

Sencha Touch:

• Curva de aprendizaje mucho mayor.

• Necesidad de una mayor comprensión del lenguaje JavaScript.

• Se escribe mucho código (mayor potencia de configuración, pero por

contra conlleva más tiempo de desarrollo).

• API mucho más potente.

• Mayor número de controles IU, transición y animaciones, mucho más

personalizables.

• El comportamiento y velocidad es mucho mejor que el de otros

frameworks, a excepción del tiempo de carga inicial.

Page 7: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 7

Instalar Sencha Touch

• Descargar el SDK desde su página Web:

http://www.sencha.com/products/touch/download/

• Se nos descargará un fichero comprimido con ZIP.

• Descomprimir en una carpeta de nuestro servidor Web que

renombraremos a “touch”.

• También es posible guardar el SDK de Sencha Touch en una

carpeta diferente y posteriormente crear un enlace simbólico.

Page 8: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 8

Instalar Sencha Touch

Para comprobar la instalación accedemos a “http://localhost/touch”:

Page 9: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 9

Navegadores

• Sencha Touch solo funciona con navegadores basados en

WebKit, como son: Safari, Google Chrome, Epiphany, Maxthon

o Midori.

• Si lo probamos en un navegador que no lo soporte, como

Firefox o Internet Explorer, solamente veremos una página

en blanco o un resultado erróneo.

• Para probar las aplicaciones en un emulador o en dispositivo

móvil real tendremos que usar un servidor Web.

Page 10: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 10

Estructura de carpetas

Para crear un nuevo proyecto: • Crear una carpeta dentro del servidor (“hello-world”).• Crear un fichero HTML vacío llamado “index.html”. • Copiar (o enlazar) el SDK de Sencha Touch en “lib/touch”:

$ mkdir hello-world // Nuevo proyecto

$ cd hello-world

$ touch index.html

$ mkdir lib

$ ln -s /home/code/SenchaSDK ./lib/touch

Page 11: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 11

Estructura de carpetas

• En la imagen se han marcado

el fichero inicial del proyecto, la

hoja de estilo y la librería

JavaScript de Sencha Touch.

• Al desplegar nuestra aplicación

final no será necesario copiar

todo el código de la librería de

Sencha Touch, sino solamente

los recursos que utilicemos.

Page 12: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 12

Código HTML básico de una aplicación<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Hello World</title>

<link href="lib/touch/resources/css/sencha-touch.css" rel="stylesheet"

type="text/css" />

<script src="lib/touch/sencha-touch.js" type="text/javascript"></script>

<script src="app.js" type="text/javascript"></script>

</head>

<body>

</body>

</html>

HTML 5HTML 5

Page 13: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 13

Código HTML básico de una aplicación<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Hello World</title>

<link href="lib/touch/resources/css/sencha-touch.css" rel="stylesheet"

type="text/css" />

<script src="lib/touch/sencha-touch.js" type="text/javascript"></script>

<script src="app.js" type="text/javascript"></script>

</head>

<body>

</body>

</html>

Cargamos la hoja de estilo y la librería JavaScript de Sencha Touch

Page 14: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 14

Código HTML básico de una aplicación<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Hello World</title>

<link href="lib/touch/resources/css/sencha-touch.css" rel="stylesheet"

type="text/css" />

<script src="lib/touch/sencha-touch.js" type="text/javascript"></script>

<script src="app.js" type="text/javascript"></script>

</head>

<body>

</body>

</html>

Creamos el fichero “app.js”. El cual contendrá el código de nuestra aplicación.

Page 15: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 15

Código HTML básico de una aplicación<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Hello World</title>

<link href="lib/touch/resources/css/sencha-touch.css" rel="stylesheet"

type="text/css" />

<script src="lib/touch/sencha-touch.js" type="text/javascript"></script>

<script src="app.js" type="text/javascript"></script>

</head>

<body>

</body>

</html>

La sección <body> del documento quedará vacía, todo el código de la aplicación irá en “app.js”.

Page 16: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 16

Mostrar aviso durante la carga

• El contenido de la sección <body> se visualizará únicamente

durante la carga.

• Posteriormente será ocultado por el contenido de la aplicación.

<body>

<div style="margin:auto; font-size:16pt;">

Cargando aplicación...

</div>

</body>

Page 17: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 17

Instanciar una aplicación• Vamos a hacer una aplicación que muestre el texto “Hola Mundo”.

• En “app.js” añadimos el siguiente código:

var App = new Ext.Application({

name: 'MyApp',

useLoadMask: true,

launch: function()

{

MyApp.views.viewport = new Ext.Panel({

fullscreen: true,

html: 'Hello World!'

});

}

});

Page 18: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 18

Instanciar una aplicaciónvar App = new Ext.Application({

name: 'MyApp',

useLoadMask: true,

launch: function()

{

MyApp.views.viewport = new Ext.Panel({

fullscreen: true,

html: 'Hello World!'

});

}

});

Con “new Ext.Application({ ... });” creamos una nueva aplicación de Sencha Touch. Entre las llaves “{}” le pasamos la lista de opciones de configuración.

Page 19: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 19

Instanciar una aplicaciónvar App = new Ext.Application({

name: 'MyApp',

useLoadMask: true,

launch: function()

{

MyApp.views.viewport = new Ext.Panel({

fullscreen: true,

html: 'Hello World!'

});

}

});

Crea una variable global llamada MyApp junto con los siguientes namespaces: MyApp.views MyApp.controllers MyApp.models MyApp.stores

Page 20: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 20

Instanciar una aplicaciónvar App = new Ext.Application({

name: 'MyApp',

useLoadMask: true,

launch: function()

{

MyApp.views.viewport = new Ext.Panel({

fullscreen: true,

html: 'Hello World!'

});

}

});

La función “launch” solo se ejecuta una vez al cargar la aplicación.Aquí deberemos de colocar el código necesario para definir nuestra interfaz de usuario.

Page 21: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 21

Instanciar una aplicaciónvar App = new Ext.Application({

name: 'MyApp',

useLoadMask: true,

launch: function()

{

MyApp.views.viewport = new Ext.Panel({

fullscreen: true,

html: 'Hello World!'

});

}

});

Con “new Ext.Panel({ ....” instanciamos un panel para el contenido y se lo asignamos al “viewport” de la aplicación. El “viewport” es la vista principal, dentro de la cual iremos añadiendo el resto del contenido.

Page 22: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 22

Instanciar una aplicaciónvar App = new Ext.Application({

name: 'MyApp',

useLoadMask: true,

launch: function()

{

MyApp.views.viewport = new Ext.Panel({

fullscreen: true,

html: 'Hello World!'

});

}

});

Indicamos que el panel ocupará toda la pantalla.Y el código HTML que tiene que contener el panel.

Page 23: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 23

Separar funciones

Si queremos podemos definir la función launch como una función independiente:

function crearViewPort() {

...

}

var App = new Ext.Application({

name: 'MyApp',

useLoadMask: true,

launch: crearViewPort });

Page 24: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 24

Comprobar los resultados

Para comprobar las aplicaciones tenemos que usar un navegador compatible con WebKit, como Chrome o Safari:

Page 25: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 25

Comprobar los resultados

Si nuestro código está en un servidor también podemos comprobar el resultado utilizando un emulador o un dispositivo móvil real:

Page 26: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 26

Todo en un único fichero<!DOCTYPE html>

<html>

<head>

<title>Hello World</title>

<link href="http://cdn.sencha.io/touch/1.1.0/resources/css/sencha-

touch.css" rel="stylesheet" type="text/css" />

<script src="http://cdn.sencha.io/touch/1.1.0/sencha-touch.js"

type="text/javascript"></script>

<script type="text/javascript">

// Nuestro código JavaScript

</script>

</head>

<body></body>

</html>

Enlazamos las librerías de Sencha Touch directamente desde su SDK online

Page 27: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 27

Paneles

• En Sencha Touch el contenido se distribuye en paneles.

• Los cuales actúan de contenedores de otros elementos y nos

ayudan a distribuir el contenido.

• En primer lugar deberemos definir el panel asignado para el

“viewport”, dentro del cual iremos añadiendo el resto de contenido y

paneles:

MyApp.views.viewport = new Ext.Panel({

fullscreen: true,

layout: 'fit'

});

Page 28: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 28

Paneles y Layouts

• Con “new Ext.Panel({ .... })” creamos una instancia para un panel.

• Dentro de este constructor se incluirán los atributos necesarios

para describir su contenido.

• “layout: 'valor'” indica el tipo de disposición de un panel.

• Con “items: [ valores ]” podemos añadir elementos al panel.

• La forma de referenciar estos elementos es:

• Espacio de nombres: “NombreAplicación.view.NombrePanel”• Nombre variable.• Identificador.

Page 29: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 29

Layouts

El layout especifica el tipo de distribución del contenido:

• fit: los elementos se distribuyen consecutivamente ocupando todo el espacio disponible.

• card: los elementos se colocan de forma superpuesta, uno encima de otro. Este elemento se utiliza para colocar paneles intercambiables, solo se visualizará uno a la vez.

• vbox: los elementos se distribuyen de forma vertical.

• hbox: los elementos se distribuyen de forma horizontal.

Page 30: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 30

Paneles y Layouts - EjemploMyApp.views.panelSuperior = new Ext.Panel({

html: 'Panel Superior'

});

MyApp.views.panelInferior = new Ext.Panel({

html: 'Panel Inferior'

});

MyApp.views.viewport = new Ext.Panel({

fullscreen: true,

layout: 'vbox',

items: [

MyApp.views.panelSuperior,

MyApp.views.panelInferior

]

});

Page 31: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 31

Items

La propiedad “items” permite añadir elementos de diferentes formas:

• Especificar un elemento o una lista de elementos utilizando su nombre:

items: [ elemento ]

items: [ elemento1, elemento2 ]

• Crear un elemento o una lista de elementos en línea:

items: {}

items: [ {...}, {...} ]

Al crear un elemento en línea, además de especificar el resto de sus propiedades, también tendremos que definir su tipo (xtype), de la forma:

items: { xtype: 'toolbar', dock: 'top' }

En todos los casos deberemos especificar un layout apropiado.

Page 32: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 32

Identificadores• En todos los componentes de Sencha Touch podemos definir un identificador (id)

mediante el cual posteriormente podremos hacer referencia a ese elemento:

var panelSuperior = new Ext.Panel({

id: 'idPanelSuperior',

html: 'Panel Superior'

});

• Desde otro elemento podremos referirnos a este panel como 'panelSuperior':

MyApp.views.viewport = new Ext.Panel({

fullscreen: true,

layout: 'card',

items: [ 'idPanelSuperior' ]

// También podríamos haber usado su nombre de variable:

// items: [ panelSuperior ]

});

Page 33: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 33

Identificadores

• Se pueden usar con todos los elementos: botones, barras, etc.

• Es una buena práctica definirlos para todos los elementos que

vayamos a referenciar posteriormente.

• Cuando aparezca una referencia a otro elemento por su

nombre de variable, también sería posible hacerlo por su

identificador.

• En algunos casos solo será posible hacerlo por su nombre de

identificador.

Page 34: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 34

Toolbars

• Usamos el constructor “new Ext.Toolbar({ ... })” para crear una barra de

herramientas.

• Usamos “dock: 'top'” o “dock: 'bottom'” para indicar que se coloque en la

parte superior o en la parte inferior.

• Con “title: 'texto'” indicamos el título de la barra.

• Para añadir barras a un panel utilizamos “dockedItems: [ ... ]”, referenciando

cada barra a través:

• Espacio de nombres (“NombreAplicación.view.NombreBarra”)

• Variable

• Identificador.

Page 35: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 35

ToolbarsMyApp.views.topToolbar = new Ext.Toolbar({

dock: 'top',

title: 'Top Toolbar'

});

var bottomToolbar = new Ext.Toolbar({

id: 'bottomToolbar',

dock: 'bottom',

title: 'Bottom Toolbar'

});

MyApp.views.viewport = new Ext.Panel({

fullscreen: true,

layout: 'fit',

html: 'Contenido central',

dockedItems: [

MyApp.views.topToolbar, // Usamos el espacio de nombres

'bottomToolbar' // Usamos su identificador

]

});

Page 36: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 36

Docked items• dockedItems se utiliza para especificar los elementos que serán anclados a un panel.

• Las posiciones que podemos usar son: top, bottom, left, right.

• Los elementos se pueden añadir o definir en línea (usando xtype):

dockedItems: [

{

xtype: 'toolbar',

dock: 'top',

title: 'barra superior'

}, {

xtype: 'toolbar',

dock: 'bottom',

title: 'barra inferior'

}

];

Definición en Línea

Page 37: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 37

Docked items

Por cuestiones de claridad será mejor crear una definición separada:

var toolbar1 = new Ext.Toolbar({

dock: 'top', title: 't1' });

var toolbar2 = new Ext.Toolbar({ dock: 'top', title: 't2' });

MyApp.views.viewport = new Ext.Panel({

...

dockedItems: [ toolbar1, toolbar2 ]

});

Page 38: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 38

Botones• Los botones se añaden a las barras de herramientas mediante su propiedad “items”.

• Simplemente tendremos que definir el tipo de botón (ui) y el texto a mostrar (text).

var topToolbar = new Ext.Toolbar({

dock: 'top',

title: 'mi barra',

items: [

{ ui: 'action', text: 'Nuevo' }

]

});

MyApp.views.viewport = new Ext.Panel({

fullscreen: true,

layout: 'fit',

dockedItems: [ topToolbar ]

});

Page 39: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 39

Botones• Podemos usar siete tipos predefinidos de botones, estos son:

ui: 'back' ui: 'action'

ui: 'forward' ui: 'confirm'

ui: 'normal' ui: 'decline'

ui: 'round'

• Si no seleccionamos un tipo (ui), por defecto nos aparecerá el botón tipo “normal”.

• Con los modificadores “-small” y “-round” sobre los tipos “action”, “confirm” y “decline” obtenemos botones más pequeños o redondeados (ex: “action-round”):

• Si queremos variar el ancho de un botón podemos utilizar la propiedad:

• “width: '200px'” en píxeles

• “width: '95%'” en porcentaje.

Page 40: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 40

Botones - Iconos

var button = new Ext.Button({

iconCls: 'action', // nombre del icono

iconMask: true // Para que se visualice correctamente

});

action add arrow_down

arrow_left arrow_right arrow_up

compose delete organize

refresh reply search

settings star trash

maps locate home

Page 41: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 41

Botones - Iconos• Si además usamos la propiedad “text: 'texto'” al definir el botón, el

texto aparecerá a la derecha del icono:

• También podemos aplicar colores a estos iconos, usando los tipos (ui) de 'action', 'decline' o 'confirm':

• Podemos añadir una insignia distintiva a cualquier botón usando la propiedad “badgeText: '2'”, que daría como resultado:

Page 42: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 42

Botones – Imágenes externas• Si queremos usar una imagen externa tenemos que aplicar al botón un estilo CSS.

• Usaremos la propiedad “cls” para indicar el nombre del estilo:

items: [ { ui: 'normal', cls: 'btnAyuda' } ]

• El estilo lo tendremos que definir indicando la imagen junto con el ancho y el alto del botón.

• El tamaño deberá de coincidir con el tamaño aplicado al botón.

• El tamaño habitual es de 45x35 píxeles.

• Es muy importante añadir la propiedad !important al cargar la imagen de fondo.

.btnAyuda {

background: url(imgs/ayuda.png) !important;

width: 45px;

height: 35px;

}

Page 43: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 43

Botones - Alineaciones• Por defecto los botones salen alineados a la izquierda. • Para crear otras alineaciones utilizaremos un espaciador “{ xtype: 'spacer' }”.

// Alineación derecha

items: [

{ xtype: 'spacer' },

{ ui: 'normal', text: 'Botón' }

]

// Alineación centrada

items: [

{ xtype: 'spacer' },

{ ui: 'normal', text: 'Botón' },

{ xtype: 'spacer' }

]

Page 44: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 44

Botones - AccionesPara añadir acciones a los botones tenemos que definir su propiedad “handler”:

function botonPresionado(btn, evt) {

alert("Botón '" + btn.text + "' presionado.");

}

var topToolbar = new Ext.Toolbar({

items: [

{ ui: 'normal',

text: 'Botón 1',

handler: botonPresionado

},

{ ui: 'action',

text: 'Botón 2',

handler: function(btn, evt) { // Definición en línea

alert("Botón '" + btn.text + "' presionado.");

}

}

]});

Page 45: Programación web para móviles - ua · Programación web para móviles Sesión 2: Introducción ... Contenidos • Introducción • Sencha Touch vs. JQuery Mobile • Instalar Sencha

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

© 2012-2013 Depto. Ciencia de la Computación e IAProgramación web para móviles Sencha Touch - 45

¿Preguntas...?