martes, 9 de diciembre de 2014

Android Studio IDE 1.0. Características.

Por fin nos llega la versión estable del que a partir de ahora será el IDE oficial para Android: Android Studio 1.0.

Un editor de código inteligente.

Android Studio cuenta con un editor de código inteligente capaz de realizar tareas de completado, refactorización y un análisis avanzado de nuestro código. El editor nos ayudará a ser más productivos como desarrolladores de aplicaciones Android.

Imagen 1. Editor de código en Android Studio 1.0.

martes, 14 de octubre de 2014

Procesos y hebras

Cuando una aplicación se ejecuta por primera vez, a través de alguno de sus componentes, el sistema creará para ella un proceso y un flujo de ejecución principal. Por defecto, todos los componentes de una aplicación se ejecutan en el mismo proceso y hebra principal. Sin embargo, si ello fuera necesario, podremos ejecutar los componentes de nuestra aplicación en procesos distintos y dentro de estos, crear las hebras secundarias que consideremos oportunas.

Procesos.

Por defecto, todos los componentes de una aplicación se ejecutan dentro del mismo proceso. Este comportamiento será suficiente para la mayoría de las aplicaciones. No obstante, si necesitamos cambiar este funcionamiento, podremos hacerlo desde el archivo manifest.

Todos los elementos asociados a componentes del archivo manifest: <activity>, <service>, <receiver> y <provider>, soportan el atributo android:process. A través de este atributo podremos especificar el proceso en el que queremos que sea ejecutado el componente. Incluso podríamos utilizar el mismo proceso para componentes de aplicaciones diferentes. Para este último caso, las aplicaciones deberán ejecutarse con el mismo usuario y estar firmadas con el mismo certificado.

El elemento <application> también cuenta con el atributo android:process que podríamos usar para definir el proceso por defecto para todos los componentes de una aplicación.

Hay momentos en los que el sistema se verá obligado a detener ciertos procesos para obtener los recursos requeridos por procesos con mayor prioridad. Cuando un proceso es eliminado por el sistema, todos sus componentes de aplicación serán destruidos.

A la hora de eliminar procesos, el sistema sopesa la importancia de éstos de cara al usuario. Por ejemplo, procesos con actividades que llevan un tiempo considerable siendo no visibles, tendrán un menor peso que aquellos procesos cuyas actividades sean visibles. La decisión de cuándo eliminar un proceso viene determinada por el estado de sus componentes.

lunes, 13 de octubre de 2014

Mensajes emergentes

Utilizaremos un mensaje emergente Toast para informar brevemente al usuario sobre el estado de una determinada operación. Por ejemplo, cuando creamos un nuevo correo electrónico y lo abandonamos sin haberlo enviado, el sistema nos mostrará un mensaje emergente en el que se nos comunica que será guardado como borrador y que podremos recuperarlo con posterioridad. Los mensajes de este tipo se muestran durante un breve espacio de tiempo.


Si por alguna razón necesitamos que el usuario sea capaz de realizar algún tipo de acción adicional como respuesta al mensaje, utilizaremos una notificación Notify en su lugar.

Listas desplegables

Una lista desplegable nos ofrece una manera rápida de seleccionar una opción dentro de un conjunto de opciones. Una lista desplegable muestra por defecto la opción actualmente seleccionada. Cada vez que pulsamos sobre una lista desplegable, se nos mostrará un menú con todas las opciones disponibles desde el que podremos realizar una nueva selección.
Para añadir una lista desplegable a nuestra plantilla XML, utilizaremos un elemento Spinner. Por ejemplo:
<Spinner
    android:id="@+id/planets_spinner"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />
Para añadir las opciones a la lista desplegable utilizaremos un un adaptador SpinnerAdapter desde una actividad o fragmento.

Botones de estado

Un botón de estado puede tomar dos valores posibles: activo o inactivo. Podemos añadir botón de estado estándar a nuestra plantilla con el elemento ToggleButton. A partir de la versión 4.0 de Android contamos con un nuevo tipo de botón de estado Switch con control deslizante.
Botón de estado estándar.

Botón de estado con control deslizante (Android 4.0+).

ToggleButton y Switch son subclases de la clase CompoundButton por lo que funcionan de manera similar.

miércoles, 8 de octubre de 2014

Botones radiales

Los botones radiales permiten al usuario seleccionar una opción de un conjunto de opciones mutuamente excluyentes.


Utilizaremos el elemento RadioButton para añadir un botón radial a nuestra plantilla. Además, tendremos que definir los botones dentro de un elemento RadioGroup si queremos que la selección sea excluyente.

Casillas de verificación

Las casillas de verificación permiten al usuario hacer una selección múltiple dentro de un conjunto de opciones. Lo normal es que las opciones se muestren distribuidas de manera vertical:


Para crear una casilla de verificación utilizaremos un elemento CheckBox en nuestra plantilla. Debido a que el usuario puede seleccionar varias opciones, cada casilla de verificación será tratada de manera independiente y cada una recibirá sus propios eventos.

Campos de texto

Los campos de texto permiten al usuario introducir texto en una o varias líneas. Cada vez que pulsamos sobre un campo de texto nos aparecerá un teclado virtual que nos permitirá escribir a partir de un cursor de escritura. También nos ofrece la posibilidad de seleccionar parte del texto (para copiar, pegar o cortar) y funciones de autocompletado.

Para añadir un campo de texto a nuestra plantilla usaremos un elemento EditText.

Campos de texto de un correo electrónico

Botones

Un botón es una zona rectangular que puede contener un texto, un icono o un texto más un icono y que cuando es pulsado realiza una acción.

Botones con texto, icono y texto más icono

Para crear los botones de la imagen anterior en nuestra plantilla, procederemos de la siguiente manera:
  • Si queremos mostrar texto, utilizaremos la clase Button:
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_text"
        ... />
    
  • Si queremos mostrar un icono, utilizaremos la clase ImageButton:
    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/button_icon"
        ... />
    
  • Si queremos mostrar un texto y un icono, utilizaremos la clase Button y el atributo android:drawableLeft:
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_text"
        android:drawableLeft="@drawable/button_icon"
        ... />
    

lunes, 6 de octubre de 2014

Controles de entrada de datos

Los controles para la entrada de datos son componentes de la interfaz de usuario con los que se puede interactuar. Android nos proporciona un juego de controles de este tipo que podremos utilizar de manera fácil en nuestros diseños: botones, campos de texto, barras de ajuste, casillas de verificación, botones de zoom, botones de estado y muchos más.