La interfaz de usuario se define en los archivos XML del directorio
res/layout. Cada pantalla tendrá un código XML diferente.
Diseñar una pantalla usando Java puede resultar complejo y poco
eficiente, sin embargo, Android soporta XML para diseñar pantallas y define
elementos personalizados, cada uno representando a un "subclase"
especifica de view. Se pueden crear pantallas de la misma manera que se diseñan
ficheros HTML.
Cada fichero describe un layout (una pantalla) y cada layout a su vez
puede contener otros elementos. Para gestionar la interfaz de usuario, Android
introduce las siguientes terminologías:
* View: Una view es un objeto cuya clase es android.view.View. Es una
estructura de datos cuyas propiedades contienen los datos de la capa, la
información específica del área rectangular de la pantalla y permite establecer
el layout. Una view tiene: layout, drawing, focus change, scrolling, etc...
La clase view es útil como clase base para los widgets, que son unas subclases
ya implementadas que dibujan los elementos en la pantalla. Los widgets
contienen sus propias medidas, pero puedes usarlas para construir tu interfaz
más rápidamente. La lista de widgets que puedes utilizar incluye Text, EditText,
InputMethod, MovementMethod, Button, RadioButton, CheckBox, y ScrollView.
* Viewgroups: Un viewgroup es un objeto de la clase android.view.Viewgroup,
como su propio nombre indica, un viewgroup es un objeto especial de view cuya
function es contener y controlar la lista de views y de otros viewgroups. Los
viewgroups te permiten añadir estructuras a la interfaz y acumular complejos
elementos en la pantalla que son diseccionados por una sola entidad.
La clase viewgroup es útil como base de la clase layouts, que son subclases
implementadas que proveen los tipos más comunes de los layouts de pantalla. Los
layouts proporcionan una manera de construir una estructura para una lista de
views.
* Árbol estructurado de la interfaz UI: En la plataforma Android tú defines
una Activity del UI usando un árbol de nodos view y viewgroups, como vemos en
la imagen de abajo. El árbol puede ser tan simple o complejo como necesites
hacerlo, y se puede desarrollar usando los widgets y layouts que Android
proporciona o creando tus propios views.
Los views y viewgroups deben estar contenidos en los layouts, los
cuales contienen otros elementos presentes en una vista. Dentro de cada layout
podemos poner todos los elementos necesarios, incluidos otros layouts. Así
conseguiremos estructurar la pantalla de la manera deseada. Existen una gran
variedad de layouts, en función de su posicionamiento en la pantalla y se
describen a continuación algunos de ellos:
* LinearLayout: Se les conoce como contenedores y sirven para reorganizar los
elementos de nuestra aplicación. Sus hijos son los views, viewgroup u otros
layouts. Nos permitirán alinear sus hijos en una única dirección, ya sea
horizontal o vertical como se muestra en las siguientes imágenes. La
orientación predeterminada es horizontal.
* RelativeLayout: En este caso todos los elementos van colocados en una posición
relativa a otro. Aquí podemos jugar con las distancias entre elementos en la
pantalla, la cual se expresa en pixeles. A continuación se muestra un ejemplo:
* Absolute layout: Coloca los elementos en posiciones absolutas en la pantalla,
teniendo en cuenta que la posición (0,0) es el extremo superior izquierdo de la
pantalla. A continuación se puede ver un ejemplo para entender mejor la
explicación anterior. El absolute layout especifica la ubicación exacta de sus
hijos.
* TableLayout: permite colocar los elementos en forma de tabla. Se utiliza el
elemento para designar a una fila de la tabla. Cada fila puede
tener uno o más puntos de vista. Cada vista se coloca dentro de una fila en
forma de celda.
* FrameLayout: Es un marcador de posición que puede
usarse para mostrar una única vista. Se pueden agregar múltiples puntos de
vista a un FrameLayout pero cada uno se acumulará en la parte superior
izquierda de la anterior. A continuación mostramos un ejemplo ilustrativo:
* ScrollView: Es un tipo especial de FrameLayout ya que
permite a los usuarios desplazarse por una serie de puntos de vista que ocupan
más espacio que el despliegue físico. El scrollView solo puede contener un
viewGroup y suele ser LinearLayout.