{"id":84,"date":"2013-02-15T13:30:58","date_gmt":"2013-02-15T13:30:58","guid":{"rendered":"http:\/\/www.einaweb.es\/dev\/?p=84"},"modified":"2013-03-04T08:42:34","modified_gmt":"2013-03-04T08:42:34","slug":"soporte-para-diferentes-dispositivos-en-android-i","status":"publish","type":"post","link":"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/","title":{"rendered":"Soporte para diferentes dispositivos en Android I"},"content":{"rendered":"<p>Los dispositivos que corren bajo el SO Android vienen en muchas formas y tama\u00f1os a lo largo y ancho del mundo. \u00bfLa raz\u00f3n? El extenso n\u00famero de fabricantes detr\u00e1s de cada tel\u00e9fono. De la mano de esta amplia gama de dispositivos, los desarrolladores tenemos la oportunidad de llegar a un p\u00fablico enorme con cada aplicaci\u00f3n que construyamos. Sin embargo, para que esto sea posible es prioritario que nuestras aplicaciones tengan la capacidad de adaptarse a las diferentes configuraciones que presentan todos estos dispositivos. Entre las variaciones a tomar en cuenta est\u00e1n los temas del idioma, tama\u00f1os de pantalla y las versiones de la plataforma Android.<\/p>\n<p>Con la intenci\u00f3n de seguir con los tutoriales orientados a explicar aquellas recomendaciones para construir aplicaciones que se vean bien en el mayor n\u00famero de dispositivos, el d\u00eda de hoy vamos a hablar de c\u00f3mo debemos construir y organizar nuestros layouts, los recursos de imagen y una parte de la gu\u00eda de dise\u00f1o de Android relacionada con la iconograf\u00eda de las aplicaciones. \u00bfListo?<\/p>\n<p>Uno de los primeros puntos importantes es conocer c\u00f3mo se utilizan las funciones b\u00e1sicas de la plataforma para aprovechar al m\u00e1ximo los recursos alternativos y otras caracter\u00edsticas con la intenci\u00f3n de que nuestras aplicaciones puedan proporcionar una experiencia de usuario optimizada en una amplia gama de dispositivos compatibles con Android utilizando una misma APK.<\/p>\n<p>Android categoriza las pantallas de los dispositivos utilizando dos propiedades importantes: <strong>tama\u00f1o<\/strong> y <strong>densidad<\/strong>. Como los dispositivos Android se mueven entre diferentes rangos que mezclan estas dos caracter\u00edsticas, es necesario incluir algunos recursos alternativos que nos ayudar\u00e1n a optimizar la apariencia de nuestras aplicaciones.<\/p>\n<p>Para empezar a trabajar con estos conceptos, necesitamos saber que:<\/p>\n<ul>\n<li>Existen cuatro tama\u00f1os est\u00e1ndar:\u00a0peque\u00f1o (<em>small<\/em>), normal, grande (<em>large<\/em>) y extra grande (<em>xlarge<\/em>).<\/li>\n<li>Existen cuatro densidades est\u00e1ndar:\u00a0low (<em>ldpi<\/em>), medium (<em>mdpi<\/em>), high (<em>hdpi<\/em>) y extra high (<em>xhdpi<\/em>).<\/li>\n<\/ul>\n<p>Para declarar los diferentes layouts y archivos gr\u00e1ficos (bitmaps) que utilizaremos para diferentes pantallas, resulta \u00fatil organizar estos recursos en directorios separados.<\/p>\n<p>Otro punto importante es saber que la orientaci\u00f3n de pantalla (<em>portrait<\/em> y <em>landscape<\/em>) se consideran como una variaci\u00f3n al tama\u00f1o de pantalla, por lo que tambi\u00e9n es conveniente trabajar en el dise\u00f1o de los layouts destinados a cada orientaci\u00f3n para optimizar la experiencia de usuario.<\/p>\n<p>Ahora vamos a aprender c\u00f3mo empezar a organizar nuestros recursos del proyecto de acuerdo a las necesidades de visualizaci\u00f3n de la aplicaci\u00f3n. Empecemos con los layouts.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Creaci\u00f3n de diferentes layouts para una aplicaci\u00f3n Android<\/strong><\/p>\n<p>Para optimizar la experiencia de usuario en los diferentes tama\u00f1os de pantalla, debes crear un archivo XML de layout por cada tama\u00f1o de pantalla a soportar. Cada uno de estos layouts deben guardarse dentro del directorio apropiado. En Android, los layouts van en el directorio <em>res\/layout<\/em>. Para los casos en que estemos realizando el \u00f3ptimo soporte para m\u00faltiples tama\u00f1os de pantalla debemos crear un directorio <em>layout-[tama\u00f1o_pantalla]<\/em> donde los valores <em>small<\/em>, <em>large<\/em> y <em>xlarge<\/em> son los sufijos a sustituir seg\u00fan sea el caso y siendo el directorio <em>layout<\/em> que nos crea Eclipse por default, el tama\u00f1o <em>normal<\/em> soportado.<\/p>\n<p>Por lo tanto, si estuvi\u00e9ramos creando un layout para definir el estilo de una pantalla\u00a0en nuestra aplicaci\u00f3n y quisi\u00e9ramos que este layout estuviera soportado por pantallas de tama\u00f1o normal y grande, nuestra estructura de directorios ser\u00eda muy similar a la siguiente:<\/p>\n<p><a title=\"Diferentes pantallas en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_01.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Diferentes pantallas en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_01.png\" width=\"556\" height=\"283\" \/><\/a><\/p>\n<p>Como se muestra en el ejemplo, el archivo de layout se llama de la misma forma para ambas carpetas, de esta forma Android podr\u00e1 llamar al archivo <em>main.xml<\/em> apropiado dependiendo del tama\u00f1o de pantalla que tenga el dispositivo que se encuentre ejecutando nuestra aplicaci\u00f3n. Esta gesti\u00f3n de recursos la hace Android, por lo que nosotros \u00fanicamente nos encargaremos de organizar correctamente nuestros archivos en los directorios que correspondan. (Es el mismo sistema que se utiliza cuando utilizamos <a title=\"Manejo de varios idiomas en una aplicaci\u00f3n Android\" href=\"http:\/\/androideity.com\/2011\/08\/17\/manejo-de-varios-idiomas-en-una-aplicacion-android\/\" target=\"_blank\">diferentes archivos de <em>strings.xml<\/em> para el soporte de varios idiomas<\/a>).<\/p>\n<p>De esta forma, para llamar los layouts lo haremos de la forma en que siempre lo hemos hecho:<\/p>\n<p><a title=\"Diferentes dispositivos en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_02.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Diferentes dispositivos en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_02.png\" width=\"399\" height=\"92\" \/><\/a><\/p>\n<p>Lo \u00fanico que var\u00eda de estos archivos es su contenido, pues ambos pueden tener un acomodo distinto de los componentes que representan la pantalla de la aplicaci\u00f3n. Esta pr\u00e1ctica te ayudar\u00e1 a construir UI\u2019s optimizadas para cada tama\u00f1o de pantalla.<\/p>\n<p>Por otro lado, el tema del cambio de orientaci\u00f3n en el dispositivo es algo que se debe tambi\u00e9n manejar en el dise\u00f1o de los layouts dependiendo si en nuestro dise\u00f1o consideramos que habr\u00e1 alg\u00fan comportamiento de respuesta al momento que nuestro usuario rote su tel\u00e9fono.<\/p>\n<p>En este segundo caso, si quisi\u00e9ramos que una pantalla luzca bien en ambas orientaciones deberemos incluir un directorio extra llamado <em>layout-land<\/em> cuyo sufijo corresponde a la abreviaci\u00f3n de <em>landscape<\/em>, es decir, a la orientaci\u00f3n horizontal del tel\u00e9fono.<\/p>\n<p>Por default, la carpeta <em>layout<\/em>\u00a0(que nos crea Eclipse) contiene los archivos para el dise\u00f1o de pantallas que corresponden al tama\u00f1o <em>normal<\/em> y cuya orientaci\u00f3n es <em>portrait<\/em>.<\/p>\n<p>Por lo tanto, la distribuci\u00f3n de directorios para el soporte de ambas orientaciones de pantalla quedar\u00eda de la siguiente manera:<\/p>\n<p><a title=\"Diferentes dispositivos en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_03.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Diferentes dispositivos en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_03.png\" width=\"558\" height=\"283\" \/><\/a><\/p>\n<p>En un proyecto real, manejamos layouts para soporte de orientaci\u00f3n y tama\u00f1o de pantalla. Por lo que nuestra distribuci\u00f3n de directorios es bastante similar a la siguiente:<\/p>\n<p><a title=\"Diferentes dispositivos en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_04.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Diferentes dispositivos en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_04.png\" width=\"538\" height=\"397\" \/><\/a><\/p>\n<p>De esta forma, nuestro \u00e1rbol de directorios ir\u00e1 creciendo dependiendo de las necesidades de visualizaci\u00f3n de la aplicaci\u00f3n.<\/p>\n<p><strong>Nota Importante:<\/strong> A partir de la versi\u00f3n Android 3.2 y superiores tenemos a nuestra disposici\u00f3n un m\u00e9todo m\u00e1s avanzado para definir tama\u00f1os de pantalla que nos permite especificar recursos para ciertos tama\u00f1os de pantalla basados en los valores m\u00ednimos de ancho (<em>width<\/em>) y alto (<em>height<\/em>) en t\u00e9rminos de <em>dip\/dp <\/em>(<em>density-independent pixels<\/em>). En un siguiente post veremos esta otra t\u00e9cnica.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Creaci\u00f3n de diferentes Bitmaps<\/strong><\/p>\n<p>A la par del cuidado que le pongamos a la construcci\u00f3n de los layouts, es igual de importante poner especial atenci\u00f3n en que la escala de los recursos de im\u00e1genes que manejaremos dentro de la aplicaci\u00f3n (iconos, fondos, barras, etc.) sea la apropiada para cada uno de los grupos de densidades que manejamos en Android: <em>low<\/em>, <em>medium<\/em>, <em>high<\/em> y <em>extra-high<\/em>. Esto nos ayudar\u00e1 a conseguir una buena calidad gr\u00e1fica en todas las densidades de pantalla.<\/p>\n<p>Para generar cada una de estas im\u00e1genes, se recomienda partir con el archivo en bruto hecho en un formato vectorizado y a partir de este sacar cada una de las im\u00e1genes en base a la siguiente escala (que est\u00e1 definida en la documentaci\u00f3n oficial de Android):<\/p>\n<ul>\n<li>xhdpi: 2.0<\/li>\n<li>hdpi: 1.5<\/li>\n<li>mdpi: 1.0 (baseline)<\/li>\n<li>ldpi: 0.75<\/li>\n<\/ul>\n<p>Esto significa que si generamos una imagen de 200\u00d7200 para los dispositivos de una densidad de xhdpi, deber\u00edamos en teor\u00eda tener una versi\u00f3n de ese recurso con una dimensi\u00f3n de 150\u00d7150 en el directorio hdpi, una versi\u00f3n de ese recurso con una dimensi\u00f3n de 100\u00d7100 en el directorio mdpi y otra versi\u00f3n de ese recurso con una dimensi\u00f3n de 75\u00d775 en el directorio ldpi.<\/p>\n<p>Siguiendo esta pr\u00e1ctica, el \u00e1rbol de directorios de nuestro proyecto quedar\u00eda de la siguiente manera:<\/p>\n<p><a title=\"Diferentes dispositivos en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_05.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Diferentes dispositivos en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_05.png\" width=\"323\" height=\"496\" \/><\/a><\/p>\n<p><strong>Nota importante:<\/strong> Los recursos de baja densidad (ldpi) no siempre son necesarios. En los casos en los que tengamos agregados recursos de alta resoluci\u00f3n (hdpi), el sistema se encarga de escalar los recursos contenidos en este directorio a la mitad para que se puedan visualizar en los dispositivos con pantallas de baja densidad. Si no tenemos recursos en hdpi s\u00ed resulta importante agregar los recursos del directorio de baja resoluci\u00f3n.<\/p>\n<p>De la misma forma en la que Android gestiona qu\u00e9 archivos de layout llamar, presenta el mismo comportamiento para los recursos de imagen. Dependiendo de la resoluci\u00f3n de pantalla que detecte el sistema ser\u00e1 el set de im\u00e1genes que mande a llamar para mostrar en la UI de la aplicaci\u00f3n.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Iconograf\u00eda en Android<\/strong><\/p>\n<p>Para cerrar este post, voy a citar parte de la documentaci\u00f3n que se ha actualizado en el sitio de <strong>Android Design<\/strong>, un apartado que se cre\u00f3 con el objetivo de empezar a estandarizar el dise\u00f1o de las aplicaciones a partir del lanzamiento de la versi\u00f3n Android 4.0 Icecream Sandwich.<\/p>\n<p>El apartado que voy a tratar corresponde a la <a href=\"http:\/\/developer.android.com\/design\/style\/iconography.html\" target=\"_blank\">gu\u00eda de dise\u00f1o para la iconograf\u00eda<\/a> de las aplicaciones.\u00a0Esta secci\u00f3n de la documentaci\u00f3n se centra en definir el tipo de iconos que podemos utilizar, su tama\u00f1o, proporciones y estilos.<\/p>\n<p>Es importante que si quieres conseguir un trabajo de excelencia en el dise\u00f1o de UI\u2019s leas detalladamente esta referencia. En este post incluyo la parte de iconograf\u00eda porque despu\u00e9s de conocer c\u00f3mo vamos a organizar nuestras im\u00e1genes tambi\u00e9n es importante saber c\u00f3mo pedirle a los dise\u00f1adores estos recursos.<\/p>\n<p>Vamos por partes.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u00bfQu\u00e9 es un icono?<\/strong><\/p>\n<p>Es un gr\u00e1fico que ocupa una peque\u00f1a porci\u00f3n del espacio de la pantalla y ofrece una representaci\u00f3n <strong>r\u00e1pida e intuitiva<\/strong> de una acci\u00f3n, estado o una aplicaci\u00f3n. Tener presente este concepto es importante para no descuidar estas dos caracter\u00edsticas. No tendr\u00eda caso contar con im\u00e1genes que no representan lo que queremos decirle al usuario.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Los icono para el Launcher.<\/strong><\/p>\n<p>Son los iconos que representan visualmente a nuestra aplicaci\u00f3n en el Home del dispositivo. Como los dispositivos Android son altamente personalizables y podemos cambiarle el fondo a nuestro tel\u00e9fono, o los temas, ser\u00e1 importante poner especial cuidado en que el icono sea claramente visible en cualquier variedad de color de fondo.<\/p>\n<p><a title=\"Diferentes dispositivos en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_06.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Diferentes dispositivos en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_06.png\" width=\"478\" height=\"110\" \/><\/a><\/p>\n<p>&#8211; Tama\u00f1os y escalas.<\/p>\n<p>El tama\u00f1o de este icono en los dispositivos debe ser de <strong>48\u00d748 dp<\/strong>.<\/p>\n<p>El tama\u00f1o de este icono para efectos de mostrarse en Google Play debe ser de <strong>512\u00d7512 pixeles<\/strong>.<\/p>\n<p><a title=\"Iconograf\u00eda en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_launcher_size.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_launcher_size.png\" width=\"220\" height=\"220\" \/><\/a><\/p>\n<p>&#8211; Proporciones.<\/p>\n<p>El \u00e1rea activa del icono debe medir tal cual los 48\u00d748 dp, esto es, sin espacios en blanco (o aire que es el t\u00e9rmino que me han dicho se utiliza para nombrar esto).<\/p>\n<p><a title=\"Iconograf\u00eda en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_launcher_focal.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_launcher_focal.png\" width=\"220\" height=\"228\" \/><\/a><\/p>\n<p>&#8211; Estilo.<\/p>\n<p>Es necesario utilizar una silueta distinta. Es decir, el icono debe estar dise\u00f1ado cuidando sus tres dimensiones; una vista frontal con una perspectiva como si se estuviera viendo desde arriba, de modo que el usuario perciba cierta profundidad en el icono.<\/p>\n<p><a title=\"Iconograf\u00eda en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_launcher_style.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_launcher_style.png\" width=\"220\" height=\"220\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Los iconos de la Action Bar<\/strong><\/p>\n<p>Los iconos para la Action Bar son botones gr\u00e1ficos que representan las acciones m\u00e1s importantes que pueden realizar los usuarios dentro de tu aplicaci\u00f3n. Es importante que cada icono tome una simple met\u00e1fora que represente un simple concepto que el usuario pueda captar a primera vista.<\/p>\n<p>Iconos predefenidos pueden utilizarse para las acciones m\u00e1s comunes como lo son \u201cRefrescar\u201d (Refresh) o \u201cCompartir\u201d (Share). En la gu\u00eda de dise\u00f1o de Android est\u00e1 disponible un paquete de iconos que contiene archivos de Adobe Illustrator (vectores) para que podamos crear los sets para las diferentes densidades de pantalla utilizando los temas <em>Holo Light<\/em>\u00a0y <em>Holo Dark<\/em>\u00a0que es el tema oficial de la versi\u00f3n Android 4.0. Aparte de estos archivos tenemos iconos en PNG organizados en los directorios tal cual ocuparemos en nuestro proyecto y que son ejemplos de c\u00f3mo tenemos que escalar los iconos.<\/p>\n<p>El link de descarga es <a href=\"https:\/\/dl-ssl.google.com\/android\/design\/Android_Design_Icons_20120229.zip\" target=\"_blank\">este<\/a>.<\/p>\n<p>&#8211; Tama\u00f1o y escalas.<\/p>\n<p>Los iconos de la Action Bar para mostrarse en los dispositivos deben ser de <strong>32\u00d732 dp<\/strong>.<\/p>\n<p><a title=\"Iconograf\u00eda en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_actionbar_size.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_actionbar_size.png\" width=\"220\" height=\"220\" \/><\/a><\/p>\n<p>&#8211; \u00c1rea focal y proporciones.<\/p>\n<p>El \u00e1rea total de este icono debe ser tal cual los <strong>32\u00d732 dp<\/strong>.<\/p>\n<p>Se debe considerar un cuadrante de visi\u00f3n de <strong>24\u00d724 dp<\/strong> que corresponden a la imagen que representa el icono.<\/p>\n<p><a title=\"Iconograf\u00eda en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_actionbar_focal.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_actionbar_focal.png\" width=\"220\" height=\"228\" \/><\/a><\/p>\n<p>&#8211; Estilo.<\/p>\n<p>Debemos cuidar que este icono est\u00e9 dise\u00f1ado de forma pictogr\u00e1fica, plano, sin muchos detalles, con suaves formas y formas agudas. Si la imagen del icono es delgada podemos aplicarle una peque\u00f1a rotaci\u00f3n de 45\u00b0 hacia la izquierda o derecha con la intenci\u00f3n de llenar el espacio focal definido en el punto anterior. El grosor de los trazos y los espacios negativos deben ser de m\u00ednimo <strong>2 dp<\/strong>.<\/p>\n<p><a title=\"Iconograf\u00eda en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_actionbar_style.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_actionbar_style.png\" width=\"220\" height=\"220\" \/><\/a><\/p>\n<p>&#8211; Colores.<\/p>\n<p>Podemos utilizarlos con un color de #333333, con un 60% de opacidad cuando el icono est\u00e1 activado y con un 30% de opacidad cuando est\u00e1 desactivado.<\/p>\n<p>Podemos utilizarlos con un color de #FFFFFF, con un 80% de opacidad cuando el icono est\u00e1 activado y con un 30% de opacidad cuando est\u00e1 desactivado.<\/p>\n<p><a href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_actionbar_colors.png\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_actionbar_colors.png\" width=\"520\" height=\"170\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Los iconos contextuales\/peque\u00f1os<\/strong><\/p>\n<p>Dentro del flujo de la aplicaci\u00f3n es importante crear iconos que representen ciertas acciones o estatus dentro de los elementos que se est\u00e1n manejando. Estos elementos pueden ser listas, grid de im\u00e1genes, mensajes o cualquier otra cosa con la que pueda interactuar el usuario.<\/p>\n<p>Por ejemplo, en la aplicaci\u00f3n de Gmail, cuando marcamos alg\u00fan correo como favorito, una peque\u00f1a estrella se pone al lado de dicho correo para notificarle al usuario la acci\u00f3n que acaba de lanzar. Estos iconos son los que se tratan en esta secci\u00f3n.<\/p>\n<p>&#8211; Tama\u00f1o y escalas.<\/p>\n<p>Estos iconos deben ser de\u00a0<strong>16\u00d716 dp<\/strong>.<\/p>\n<p><a title=\"Iconograf\u00eda en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_small_size.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_small_size.png\" width=\"220\" height=\"220\" \/><\/a><\/p>\n<p>&#8211; \u00c1rea focal y proporciones.<\/p>\n<p>El tama\u00f1o total del archivo del icono es tal cual los 16\u00d716 dp.<\/p>\n<p>Se debe tomar en cuenta un cuadrante de visi\u00f3n de 12\u00d712 dp, que corresponde a la imagen que representa la figura del icono.<\/p>\n<p><a href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_small_focal.png\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_small_focal.png\" width=\"220\" height=\"228\" \/><\/a><\/p>\n<p>&#8211; Estilo.<\/p>\n<p>Este tipo de iconos deben tener un dise\u00f1o neutral, plano y simple. Dado que las formas rellenas son m\u00e1s f\u00e1ciles de ver que los trazos finos, util\u00edzalas en el dise\u00f1o de este tipo de iconos. Por \u00faltimo, trata de utilizar met\u00e1foras visuales sencillas que el usuario pueda reconocer f\u00e1cilmente y entender su prop\u00f3sito en la aplicaci\u00f3n.<\/p>\n<p><a title=\"Iconograf\u00eda en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_small_style.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_small_style.png\" width=\"220\" height=\"220\" \/><\/a><\/p>\n<p>&#8211; Colores.<\/p>\n<p>Utiliza colores no-neutros con moderaci\u00f3n y con un prop\u00f3sito. La estrella de favoritos que utiliza la aplicaci\u00f3n de Gmail es un ejemplo de este uso de colores. Resulta tambi\u00e9n buena idea utilizar colores que contrasten con el fondo.<\/p>\n<p><a title=\"Iconograf\u00eda en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_small_colors.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_small_colors.png\" width=\"220\" height=\"88\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Los iconos para notificaciones<\/strong><\/p>\n<p>En el caso de que tu aplicaci\u00f3n genere notificaciones, resulta \u00fatil proporcionar un icono para que el sistema pueda desplegar en la barra de estado cada que una nueva notificaci\u00f3n est\u00e9 disponible.<\/p>\n<p>&#8211; Tama\u00f1os y escala.<\/p>\n<p>Este tipo de iconos deben ser de <strong>24\u00d724 dp<\/strong>.<\/p>\n<p><a title=\"Iconograf\u00eda en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_notification_size.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_notification_size.png\" width=\"220\" height=\"220\" \/><\/a><\/p>\n<p>&#8211; \u00c1rea focal y proporciones.<\/p>\n<p>El tama\u00f1o total del archivo del icono es tal cual los <strong>24\u00d724 dp<\/strong>.<\/p>\n<p>Se debe tomar en cuenta un cuadrante de visi\u00f3n de <strong>22\u00d722 dp<\/strong>, que corresponde a la imagen que representa la figura del icono.<\/p>\n<p><a title=\"Iconograf\u00eda en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_notification_focal.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_notification_focal.png\" width=\"220\" height=\"228\" \/><\/a><\/p>\n<p>&#8211; Estilo.<\/p>\n<p>Es importante mantener un estilo plano y simple para este tipo de iconos, utilizando el mismo tipo de met\u00e1fora visual que la utilizada para el icono del launcher.<\/p>\n<p><a title=\"Iconograf\u00eda en Android\" href=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_notification_style.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" title=\"Iconograf\u00eda en Android\" alt=\"\" src=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/iconography_notification_style.png\" width=\"220\" height=\"220\" \/><\/a><\/p>\n<p>&#8211; Colores.<\/p>\n<p>Todos los iconos de notificaciones deben ser totalmente de color blanco.<\/p>\n<p>&nbsp;<\/p>\n<p>Con esto terminamos un primer tutorial de c\u00f3mo trabajar con diferentes dispositivos en Android. Espero que este par de tips te sean realmente \u00fatiles en la pr\u00e1ctica. Si quieres leer la documentaci\u00f3n oficial de Android Design visita <a href=\"http:\/\/developer.android.com\/design\/index.html\" target=\"_blank\">este link<\/a> y navega por todos los est\u00e1ndares que el equipo de Google tiene disponibles para que empieces a construir aplicaciones m\u00e1s bellas.<\/p>\n<p>Poco a poco ir\u00e9 publicando otros apartados de esta documentaci\u00f3n para que vayan quedando m\u00e1s claros. A veces resulta m\u00e1s sencillo que alguien m\u00e1s te platique las cosas.<\/p>\n<p>&nbsp;<\/p>\n<p>Referencia \u2013 <a href=\"http:\/\/developer.android.com\/training\/basics\/supporting-devices\/index.html\" target=\"_blank\">Android Training<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los dispositivos que corren bajo el SO Android vienen en muchas formas y tama\u00f1os a lo largo y ancho del mundo. \u00bfLa raz\u00f3n? El extenso n\u00famero de fabricantes detr\u00e1s de cada tel\u00e9fono. De la mano de esta amplia gama de dispositivos, los desarrolladores tenemos la oportunidad de llegar a un p\u00fablico enorme con cada aplicaci\u00f3n [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-84","post","type-post","status-publish","format-standard","hentry","category-android"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Soporte para diferentes dispositivos en Android I - Blog Desarrollador<\/title>\n<meta name=\"description\" content=\"Soporte para diferentes dispositivos en Android I - Blog Desarrollador\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Soporte para diferentes dispositivos en Android I - Blog Desarrollador\" \/>\n<meta property=\"og:description\" content=\"Soporte para diferentes dispositivos en Android I - Blog Desarrollador\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Desarrollador\" \/>\n<meta property=\"article:published_time\" content=\"2013-02-15T13:30:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-03-04T08:42:34+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_01.png\" \/>\n<meta name=\"author\" content=\"Angel Fernandez Gutierrez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@afernandezg76\" \/>\n<meta name=\"twitter:site\" content=\"@afernandezg76\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Angel Fernandez Gutierrez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/\",\"url\":\"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/\",\"name\":\"Soporte para diferentes dispositivos en Android I - Blog Desarrollador\",\"isPartOf\":{\"@id\":\"http:\/\/www.einaweb.es\/develop\/#website\"},\"datePublished\":\"2013-02-15T13:30:58+00:00\",\"dateModified\":\"2013-03-04T08:42:34+00:00\",\"author\":{\"@id\":\"http:\/\/www.einaweb.es\/develop\/#\/schema\/person\/2d3361868423160a6db46ce6f9fc9a3c\"},\"description\":\"Soporte para diferentes dispositivos en Android I - Blog Desarrollador\",\"breadcrumb\":{\"@id\":\"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"http:\/\/www.einaweb.es\/develop\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Soporte para diferentes dispositivos en Android I\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.einaweb.es\/develop\/#website\",\"url\":\"http:\/\/www.einaweb.es\/develop\/\",\"name\":\"Blog Desarrollador\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/www.einaweb.es\/develop\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/www.einaweb.es\/develop\/#\/schema\/person\/2d3361868423160a6db46ce6f9fc9a3c\",\"name\":\"Angel Fernandez Gutierrez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"http:\/\/www.einaweb.es\/develop\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/366f7c75ad085d0dcc2c290559c1aa5947679d86e3a8c55db42ac1c26e16c816?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/366f7c75ad085d0dcc2c290559c1aa5947679d86e3a8c55db42ac1c26e16c816?s=96&d=mm&r=g\",\"caption\":\"Angel Fernandez Gutierrez\"},\"url\":\"http:\/\/www.einaweb.es\/develop\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Soporte para diferentes dispositivos en Android I - Blog Desarrollador","description":"Soporte para diferentes dispositivos en Android I - Blog Desarrollador","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/","og_locale":"es_ES","og_type":"article","og_title":"Soporte para diferentes dispositivos en Android I - Blog Desarrollador","og_description":"Soporte para diferentes dispositivos en Android I - Blog Desarrollador","og_url":"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/","og_site_name":"Blog Desarrollador","article_published_time":"2013-02-15T13:30:58+00:00","article_modified_time":"2013-03-04T08:42:34+00:00","og_image":[{"url":"http:\/\/androideity.com\/wp-content\/uploads\/2012\/06\/diferentesPantallas_01.png"}],"author":"Angel Fernandez Gutierrez","twitter_card":"summary_large_image","twitter_creator":"@afernandezg76","twitter_site":"@afernandezg76","twitter_misc":{"Escrito por":"Angel Fernandez Gutierrez","Tiempo de lectura":"13 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/","url":"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/","name":"Soporte para diferentes dispositivos en Android I - Blog Desarrollador","isPartOf":{"@id":"http:\/\/www.einaweb.es\/develop\/#website"},"datePublished":"2013-02-15T13:30:58+00:00","dateModified":"2013-03-04T08:42:34+00:00","author":{"@id":"http:\/\/www.einaweb.es\/develop\/#\/schema\/person\/2d3361868423160a6db46ce6f9fc9a3c"},"description":"Soporte para diferentes dispositivos en Android I - Blog Desarrollador","breadcrumb":{"@id":"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/www.einaweb.es\/develop\/soporte-para-diferentes-dispositivos-en-android-i\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"http:\/\/www.einaweb.es\/develop\/"},{"@type":"ListItem","position":2,"name":"Soporte para diferentes dispositivos en Android I"}]},{"@type":"WebSite","@id":"http:\/\/www.einaweb.es\/develop\/#website","url":"http:\/\/www.einaweb.es\/develop\/","name":"Blog Desarrollador","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/www.einaweb.es\/develop\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"Person","@id":"http:\/\/www.einaweb.es\/develop\/#\/schema\/person\/2d3361868423160a6db46ce6f9fc9a3c","name":"Angel Fernandez Gutierrez","image":{"@type":"ImageObject","inLanguage":"es","@id":"http:\/\/www.einaweb.es\/develop\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/366f7c75ad085d0dcc2c290559c1aa5947679d86e3a8c55db42ac1c26e16c816?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/366f7c75ad085d0dcc2c290559c1aa5947679d86e3a8c55db42ac1c26e16c816?s=96&d=mm&r=g","caption":"Angel Fernandez Gutierrez"},"url":"http:\/\/www.einaweb.es\/develop\/author\/admin\/"}]}},"_links":{"self":[{"href":"http:\/\/www.einaweb.es\/develop\/wp-json\/wp\/v2\/posts\/84","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.einaweb.es\/develop\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.einaweb.es\/develop\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.einaweb.es\/develop\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.einaweb.es\/develop\/wp-json\/wp\/v2\/comments?post=84"}],"version-history":[{"count":2,"href":"http:\/\/www.einaweb.es\/develop\/wp-json\/wp\/v2\/posts\/84\/revisions"}],"predecessor-version":[{"id":127,"href":"http:\/\/www.einaweb.es\/develop\/wp-json\/wp\/v2\/posts\/84\/revisions\/127"}],"wp:attachment":[{"href":"http:\/\/www.einaweb.es\/develop\/wp-json\/wp\/v2\/media?parent=84"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.einaweb.es\/develop\/wp-json\/wp\/v2\/categories?post=84"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.einaweb.es\/develop\/wp-json\/wp\/v2\/tags?post=84"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}