Algunas notas sobre Material Design para Android Devs
Estoy llevando el curso de Udacity llamado “Material Design for Android Developers” y dejaré aquí algunos apuntes (no es un artículo propiamente dicho, sino notas de lo que me parece útil) o cosas que tenía anotadas por allí.
Unidades
Pixel density: Se traduciría como “densidad por pixel” y se refiere al número de pixeles que entran en una pulgada (inch). A más pixeles por pulgada, mayor será la densidad de la pantalla.
screen density = screen width (or height) in pixels / width (or height) in inches
Density-independent pixels (dp): Se traduciría como “pixeles indeṕendiente de la densidad” y se refiere a unidades flexibles que permiten escalar las dimensiones de un elemento de manera uniforme en cualquier tipo de pantalla. Toma en cuenta que para un elemento debes sacarle los “dips” que ocupará de ancho y de largo.
dp = (width in pixels * 160) / screen density
Scaleable pixels (sp): Se traduciría como “pixeles escalables” y viene a cumplir una función similar que los “dp” pero se emplea para las fuentes o letras. En este caso, toma en cuenta las configuraciones que tenga el usuario a nivel del equipo.
Resource Qualifiers
Se refiere a ciertas variantes a nivel de nombres de carpetas que permiten organizar los elementos propios de una densidad de pantalla, versión de API o, incluso, para un idioma. Algunos ejemplos:
- layout-w600dp/main_activity.xml: este sería un layout que android tomaría en cuenta cuando el ancho de la pantalla sea igual o mayor a 600dp.
- values-v21/styles.xml: android tomará en cuenta estos estilos cuando la versión de android sea igual o superior a 21 (Lollipop).
- drawable-mdpi-ja/localicon.png: tomará en cuenta este ícono cuando sea una densidad mediana y en idioma japonés.
Diferencia entre Padding y Margin
Algunas veces, sobretodo cuando era nuevo, siempre confundía ambas cosas.
Layouts
Existen varios layouts tipo FrameLayout, LinearLayout y RelativeLayout, GridLayout.
Referencias
- Curso Material Design for Android Developers:
https://www.udacity.com/course/material-design-for-android-developers--ud862 - Material Design for Android:
https://developer.android.com/design/material/index.html - Material Design:
https://material.google.com/ - Foro de discusión:
https://discussions.udacity.com/c/standalone-courses/android-design - Providing Resources:
https://developer.android.com/guide/topics/resources/providing-resources.html - ISO 639.2 Code for the Representation of Names of Languages
http://www.loc.gov/standards/iso639-2/php/code_list.php - Layouts
https://developer.android.com/guide/topics/ui/declaring-layout.html