• No se han encontrado resultados

Plataforma Android. Sesión 5: Drawables, estilos y temas. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

N/A
N/A
Protected

Academic year: 2021

Share "Plataforma Android. Sesión 5: Drawables, estilos y temas. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles"

Copied!
25
0
0

Texto completo

(1)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Plataforma Android

(2)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Puntos a tratar

Elementos drawables

Colores, formas y gradientes

Imágenes y nine-patch

Lista de estados

Capas

Animación por fotogramas

Estilos y temas

Definición

Herencia

(3)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Elementos drawables

Recurso que puede ser dibujado en pantalla

Color

Gradiente

Forma

Imagen

Nine-patch

Animación

Capa

Estados

Niveles

(4)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Elementos drawables

Ejemplo de drawable:

Guardar en /res/drawable-Xdpi

Referencia en el código: R.drawable.rectangulo

En XML

Referencia: @drawable/rectangulo

Ejemplos de uso:

Mostrarlo con un ImageView

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android=

"http://schemas.android.com/apk/res/android" android:shape="rectangle">

<solid android:color="#ff0000"/>

<stroke android:width="2dp" android:color="#0000ff" android:dashWidth="10dp" android:dashGap="5dp"/> </shape>

(5)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: colores

El drawable más sencillo

Color sólido

<color xmlns:android="http://schemas.android.com/apk/res/android" android:color="#FF0000" />

(6)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: formas

Elemento shape para definir formas simples

Definición de dimensiones, fondo y bordes

Atributo android:shape

oval

rectangle: bordes redondeados con subnodo corners y atributo

radius

ring: radio interno (innerRadius, innerRadiusRatio) y anchura

(thickness, thicknessRatio)

Elementos comunes

stroke: atributos width y color

solid: atributo color

(7)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: formas

Ejemplo

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">

<solid android:color="#f0600000"/> <stroke android:width="10dp" android:color="#00FF00"/> <corners android:radius="15dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape>

(8)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: gradientes

Elemento gradient

Tipos (atributo type)

linear: ángulo angle

radial: radio en píxeles (gradientRadius) y posición (centerX,

centerY)

sweep

Parámetros comunes

Obligatorios: startColor, endColor

Optativo: middleColor

(9)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: gradientes

<!-- Rectángulo con gradiente lineal --> <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:useLevel="false"> <gradient android:startColor="#ffffff" android:endColor="#ffffff" android:centerColor="#000000" android:useLevel="false" android:type="linear" android:angle="45" /> </shape>

(10)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: gradientes

<!-- Oval con gradiente radial -->

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" android:useLevel="false"> <gradient android:type="radial" android:startColor="#ffffff" android:endColor="#ffffff" android:centerColor="#000000" android:useLevel="false" android:gradientRadius="300" /> </shape>

(11)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: gradientes

<!-- Anillo con gradiente de tipo sweep --> <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="ring" android:useLevel="false" android:innerRadiusRatio="3" android:thicknessRatio="8"> <gradient android:startColor="#ffffff" android:endColor="#ffffff" android:centerColor="#000000" android:useLevel="false" android:type="sweep" /> </shape>

(12)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: imágenes

Imágenes en /res/drawable-Xdpi/ tratadas como cualquier

recurso drawable

Archivo nombre.extension

Identificador de recurso: R.drawable.nombre

Identificador en XML: @drawable/nombre

Encapsuladas en la clase Bitmap

Inmutables: creado a partir de un array de píxels, un drawable de

tipo imagen, u otra imagen

Mutables: creando una imagen vacía o mediante una copia con

(13)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: imágenes

Creación de bitmaps mediante la clase BitmapFactory

Diferentes métodos decodeX para diferentes orígenes<

Liberar memoria: método recycle

Bitmap imagen = BitmapFactory.decodeResource(

(14)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: imágenes nine-patch

Permiten especificar qué partes de la imagen “estirar”

Divididas en nueve partes:

La parte central puede ser escalada en cualquier dirección

Las esquinas nunca pueden ser escaladas

(15)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: imágenes nine-patch

(16)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: lista de estados

Un drawable distinto para cada estado de un elemento de

la interfaz (por ejemplo, un botón)

Los drawables indicados pueden ser de cualquier tipo

Alternativa: level list

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/boton_pressed" /> <!-- presionado --> <item android:state_focused="true" android:drawable="@drawable/boton_selected" /> <!-- seleccionado -->

<item android:drawable="@drawable/boton_normal" /> <!-- no seleccionado -->

(17)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: capas

Drawable a partir de varios elementos

Dibujados en orden (el primer elemento queda en el

fondo)

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/bottomimage"/> <item android:drawable="@drawable/image2"/> <item android:drawable="@drawable/image3"/> <item android:drawable="@drawable/topimage"/> </layer-list>

(18)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: animación por fotogramas

Los fotogramas son drawables

Atributos

duration: duración en milisegundos

oneshot: con valor false la animación será cíclica

<animation-list

xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">

<item android:drawable="@drawable/spr0" android:duration="50" /> <item android:drawable="@drawable/spr1" android:duration="50" /> <item android:drawable="@drawable/spr2" android:duration="50" /> </animation-list>

(19)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: animación por fotogramas

Acceso desde el código (archivo animacion.xml)

Definición por código:

AnimationDrawable animFotogramas = getResources().getDrawable(R.drawable.animacion); BitmapDrawable f1 = (BitmapDrawable)getResources() .getDrawable(R.drawable.sprite0); BitmapDrawable f2 = (BitmapDrawable)getResources() .getDrawable(R.drawable.sprite1); BitmapDrawable f3 = (BitmapDrawable)getResources() .getDrawable(R.drawable.sprite2);

AnimationDrawable animFotogramas = new AnimationDrawable(); animFotogramas.addFrame(f1, 50);

(20)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Drawables: animación por fotogramas

Un BitmapDrawable es un Bitmap que puede ser

asignado como drawable

Comenzar animación:

Detener animación:

No utilizar el método start en onCreate

El drawable todavía no ha sido asignado a la vista.

Utilizar el método onWindowFocusChanged

animFotogramas.start();

(21)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Estilos y temas

Permiten modificar el aspecto de una vista o actividad

Definido en un XML separado del layout (en /res/values/)

Filosofía CSS

Modificar aspecto sin cambiar código

Elemento style con atributo name y uno o más elementos

item

<?xml version="1.0" encoding="utf-8"?> <resources>

<style name="NombreEstilo">

<item name="NombreAtributo">value</item> </style>

(22)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Un ejemplo de estilo

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#00FF00" android:typeface="monospace" android:text="@string/hello" > <?xml version="1.0" encoding="utf-8"?> <resources>

<style name="EstiloFuente">

<item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:textColor">#00FF00</item>

<item name="android:typeface">monospace</item> </style>

(23)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Herencia

Extender estilos base

Ahorrar código

Aspecto homogéneo

Atributo parent

<?xml version="1.0" encoding="utf-8"?> <resources> <style name="TextoBase"> <item name="android:textSize">14sp</item> <item name="android:textColor">#111</item> </style>

<style name="TextoPequenyo" parent="TextoBase"> <item name="android:textSize">8sp</item> </style>

(24)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Aplicando estilos y temas

Estilo

Vista

ViewGroup (no se aplica a los elementos hijo)

Atributo style al elemento correspondiente en el layout

Tema

Actividad o aplicación completa

Cada vista toma las propiedades aplicables a ella

Atributo android:theme a un elemento activity o al elemento

(25)

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Referencias

Documento similar

En este trabajo se detalla la creación de una plataforma de adquisición de datos de usuarios reales para el modelado de la interacción hombre-máquina en dispositivos móviles..

 Se ha desarrollado una aplicación que permite gestionar emplazamientos creados por el usuario, representar un perfil junto con la primera zona de Fresnel en

Desarrollo de una aplicación de cálculo de mapas de visibilidad radioeléctricos para dispositivos móviles móvil con sistema operativo

En este proyecto se ha unificado el desarrollo de aplicaciones para dispositivos móviles S40 de Nokia con la tecnología NFC, dando como resultado la aplicación “Smart-Info UPCT”,

Por otro lado, en la actualidad existe la posibilidad de crear aplicaciones software para dispositivos móviles inteligentes que funcionan gracias a sistemas

Desarrollo de un sistema de telecontrol distribuido para la gestión de arquetas hidráulicas basado en dispositivos móviles y motes

h) Emplear herramientas de desarrollo, lenguajes y componentes visuales, siguiendo las especificaciones y verificando interactividad y usabilidad, para desarrollar

Para dar cumplimiento al problema planteado se establece como objetivo general: Desarrollar una aplicación para dispositivos móviles con sistema operativo Android