Usuario:ManuelRomero/Android/Interfaz/elementos

Introducción

 * Si hablamos de aplicaciones android para móviles y tablets, casi inevitablemente estamos hablando de aplicaciones de interfaz gráfica.
 * Es una parte muy importante y muy trabajada para enfocar el desarrollo.

android.view.View

 * La clase base para construir elementos gráficos es android.view.View
 * Representa un área rectangular en la pantalla
 * Es la clase base para la mayoría de los controles y diseños de interfaz de usuario dentro de Android SDK

android.widget
http://developer.android.com/reference/android/widget/package-summary.html 'Button, CheckBox,RadioButton. Spinner, ImageButton, TextView, EditText, AnalogClock, DigitalClock, CalendarView,  DatePiker, Filter, Gallery,VideoView' AbsoluteLayout, FrameLayout, GridLayout, TableLayout, RelativeLayout ProgressBar, TabHost, Toast
 * Referencia
 * Es un paquete que contiene la mayoría de los los controles gráficos para usar en nuestro interfaz gráfico
 * Todos estos controles normalmente derivan de la clase android.view.View
 * Algunas clases de este paquete que deberíamos conocer

acceder a un componente en código

 * 1) identificaarlo en el diseño android:id 
 * 2) podremos acceder a él por el método findViewById
 * Ejemplo quiere acceder a un texto
 * 1) En el fichero xml
 * 1) En el código

TextView
http://developer.android.com/reference/android/widget/TextView.html
 * Referenica
 * Representa un texto escrito en pantalla; sería un típico label o etiqueta
 * Deriva de la clase View
 * Definido en el paquete android.widget

Atributos especiales de TextView
android:text={cadena raw o referencia a un recurso cadena}
 * text
 * Texto que se muestra en la pantalla
 * typeFace
 * Es el tipo de letra y tiene definidos los siguientes valores

android:typeface={normal|sans|serif|monospace}
 * textStyle
 * Es el tipo de letra y los valores definidos son los siguientes

android:textStyle={normal|bold|italic} android:textStyle ="normal" android:textStyle ="0" android:typeFace="monospace" android:typeFace="3" los atributos ems son una buena forma de especificar el ancho de un texto independientemenete del tamaño del tipo de letra. la propiedad android:layout_width="wrap_content", en otro caso no tiene efecto. ellipsize ={"none","start","middle","end","marquee"} android:autoLink={"none"|"web"|"email"|"phone"|"map"|"all"} linkClickable={"true"|"false"}
 * Siempre que especificamos una lista de valores representan enumeraciones por lo que el primer elemento corresponde al valor cero.
 * es decir las siguientes definiciones serías homólogas
 * ems, maxEms, minEms lines, maxLines, minLines, ellipsize
 * Son atributos para especificar la anchura y número de líneas que puede ocupar el texto
 * Si no se especifica nada el texto se alargará en una línea al máximo del dispositivo para visualizarse
 * ems especifica el ancho de la letra M
 * Si el texto no cabe en el ancho especificado se corta, para que el usuario perciba que falta texto, debemos especificar la propiedad ellipsize para que sustituya los dos últimos caracteres por
 * AutoLink, linkClickable
 * autoLink permite especificar que el texto que tiene un significado especial (número de teléfono, dirección de correo, url, dirección según map), se visualice como texto sensible, es decir con otro color y con posibilidad de interactuar con él.
 * Los valores posibles son
 * linkClickable permite o no que  el usuario interactue con el texto.
 * Sus valores por lo tanto son booleanos:
 * Con esta propiedad a true (valor por defecto) el usuario puede interactuar con el texto, lo que provocará que se ejecute la aplicación correspondiente (Dial del teléfono, navegador web para url, cliente de correo para email y map para la dirección de una ubiación).

Unidades de medida de los atributos

 * Son muchas las unidades de medida para especificar tamaños, anchuras, etc.
 * Iremos analizando las diferentes unidades que podemos usar
 * 1) dp densidad de píxeles independientes, es una unidad abstracta (no corresponde a tamaño físico) y se basa en la densidad física de la pantalla. Es una medida proporcional y usarla proporciona compatibilidad con las diferentes pantallas sean de móvil o tablet. Es recomendado su uso.
 * 2) px Píxeles,son los píxeles reales de la pantalla. Su valor real variará según la resolución de la pantalla que tengamos.
 * 3) en centímetros o Cm es un tamaño físico de la pantalla.
 * 4) mm milímetros, igual que el caso de en son tamaños físico de la pantalla.
 * 5) pt puntos la medida es representada por 1/72 de una pulgada en función del tamaño físico de la pantalla.
 * 6) sp escala de píxeles independientes es como la unidad dp, pero también es escalado por la preferencia del usuario tamaño de la fuente. Se recomienda utilizar esta unidad al especificar tamaños de fuente, por lo que se ajusta tanto para la densidad de pantalla y preferencias del usuario.
 * Los

EditText
http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputType text textUri textEmailAddress textPassword number phone date, ... http://developer.android.com/reference/android/text/InputFilter.html
 * Deriva de la clase TextView
 * en la caja de texto se puede usar el menú contextual para copiar y pegar texto. no hay que hacer nada para poder usarlo
 * Propiedades principales
 * hint
 * texto que aparece en el EditText por defecto, y cuando escribes desaparece
 * Se utiliza como ayuda al usuario pasa saber que se espera que escriba
 * lines
 * Número de líneas que se deja que escriba. Si no se especifica alargará el EditText según lo necesite.
 * Establecer filtros de entrada
 * InputType y InputFilter
 * Algunos de los valores más utilizados
 * InputFilter, no es una propiedad es una interfaz
 * La manera de usarlo es en tres pasos
 * 1) Identifico el TextField al que se lo quiero asignar
 * 2) Defino el filtro como un array de filtros
 * 3) Establezco cada filtro que me interese
 * 4) Lo vinculo al EditText con el método setFilteres
 * Ejemplo ''limitar una caja de texto a 5 caracteres y en mayúsculas

Para realizar filtros mas especializados hay que sobreescribir el método filter de la interfaz InputFilter

Spinner
android:entries = @array/lista_valores android:prompt="Selecciona una ciudad" Spinner ciduad = (Spinner) findViewById(R.id.mi_ciudad) TextView miCiudd = (TextView)ciudad.getSelectedView
 * Es un tipo de TextEdit donde le valor que vamos a tomar sale de una lista de valores
 * Existen diferentes maneras de asignar la lista de valores al Spinner
 * Una manera de hacerlo es con la propiedad entries
 * Para recuperar el valor seleccionado y pasarlo a un TextView