Archivo de la etiqueta: java

Componentes y controles en Android (GUI Widgets)

En este post explicaremos algunos componentes de la interfaz llamados también GUI Widgets o controles. Componentes de este tipo serían por ejemplo: cajas de texto, botones, calendarios… Los widgests se pueden insertar en los diferentes layouts que explicamos en el post anterior.

Los componentes estarán disponibles en la barra de herramientas del diseñador de Eclipse. Cada componente estará asociado a una clase Java disponible en la documentación JavaDoc.

Entre los más usados se encuentran los siguientes controles:

  • Botón: android.widget.Button
  • Calendario: android.widget.CalendarView
  • CheckBox: android.widget.CheckBox
  • Selección de fechas: android.widget.DatePicker.
  • Caja de texto: android.widget.EditText
  • Botón con imagen: android.widget.ImageButton
  • Image: android.widget.ImageView
  • Información de progreso: android.widget.ProgressBar
  • RadioButton: android.widget.RadioButton
  • Menú desplegable: android.widget.Spinner
  • Etiqueta de texto: android.widget.TextView

Cada widget contiene sus propios atributos y eventos, por ejemplo, el widget botón tiene, entre otras, una propiedad para establecer el texto del botón así como un evento de pulsación mientras que el widget caja de texto puede establecer mediante la propiedad inputType el tipo de entrada que permite introducir (numérico, fecha, email…).

Un ejemplo común de un widget en marcación xml sería por ejemplo:


<Button
android:id="@+id/dummy_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Enviar" />

Layouts en android o cómo organizar los componentes en la pantalla

Existen multitud de tipos de layouts para ordenar los componentes en una pantalla. A continuación explicaremos algunos de los más comunes:

  • LinearLayout: consiste en agrupar los elementos uno detrás de otro de forma horizontal o vertical.
  • TableLayout: este layout permite agrupar los elementos en una tabla que contiene filas y columnas.
  • RelativeLayout: los elementos se ubican dada una posición relativa de otro elemento del mismo layout.
  • FrameLayout: ubica todos los elementos alineados sobre la esquina superior izquierda de manera que unos controles quedarán encima de otros.
  • ScrollView: se puede utilizar cuando el número de componentes de una pantalla se desborda y es necesario un scroll vertical.

Todas estas clases heredan de la clase View o ViewGroup. De esta manera heredarán a su vez una serie de propiedades comunes:

  • layout_width: anchura
  • layout_height: altura
  • layout_marginTop: margen superior
  • layout_marginBottom: margen inferior
  • layout_marginLeft: margen izquierdo
  • layout_marginRight: margen derecho
  • layout_gravity: orientaciones vertical y horizontal del elemento
  • layout_weight: peso
  • layout_x: coordenada x donde ubicar el elemento
  • layout_y: coordenada y donde ubicar el elemento

La manera de utilizar estos layouts será mediante marcación XML en el fichero layout correspondiente a cada actividad. Por ejemplo:


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0099cc"
tools:context=".FullscreenActivity" >

<!--
The primary full-screen view. This can be replaced with whatever view
is needed to present your content, e.g. VideoView, SurfaceView,
TextureView, etc.
-->

<TextView
android:id="@+id/fullscreen_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:keepScreenOn="true"
android:text="@string/dummy_content"
android:textColor="#33b5e5"
android:textSize="50sp"
android:textStyle="bold" />

<!--
This FrameLayout insets its children based on system windows using
android:fitsSystemWindows.
-->

<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" >

<LinearLayout
android:id="@+id/fullscreen_content_controls"
style="?buttonBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:background="@color/black_overlay"
android:orientation="horizontal"
tools:ignore="UselessParent" >

<Button
android:id="@+id/dummy_button"
style="?buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/dummy_button" />
</LinearLayout>
</FrameLayout>

</FrameLayout>

Ciclo de vida de una actividad en Android

Cuando se lanza una actividad en android implica que la actividad anterior sea parada temporalmente. Esto no significa que la anterior actividad sea destruida sino que simplemente pierde el foco y se puede recuperar al volver a ella (botón back). Las  actividades solo son destruidas cuando el sistema así lo decida para resolver problemas de memoria. La preocupación del programador debe de centrarse en que la aplicación esté disponible cuando el usuario pulse el botón volver. La práctica más habitual es guardar el estado de la aplicación cuando ésta pierda el foco y recuperar su estado cuando vuelva a recuperar el foco.

Una actividad puede pasar por 3 estados diferentes:

  • Activa: la pantalla o actividad se encuentra visible por el usuario.
  • Pausada: la actividad ha perdido el foco pero sigue visible total o parcialmente por el usuario. Un ejemplo sería una ventana de diálogo que contiene el foco pero que está ligada a la actividad principal.
  • Parada: la actividad no está visible.

El ciclo de vida de una actividad contiene los siguientes métodos:

  • onCreate: se invoca cuando la actividad se crea por primera vez. Es aquí donde deberemos inicializar los datos que contendrá así como sus vistas. De esta manera es importante sobreescribir este método cada vez que definamos una actividad. El método recibe un parámetro de tipo Bundle. El valor de este parámetro será nulo si se ejecuta por primera vez pero en cambio contendrá la información suficiente para restaurar la actividad en caso de recuperación.
  • onRestart: se llama a este método cuando la actividad había sido detenida previamente pero se va a volver a visualizar.
  • onStart: este método se ejecuta cuando la actividad va a ser visualizada.
  • onResume: este método se ejecutará siempre que la aplicación este preparada para interactuar con el usuario. Este es el lugar idóneo para inicializar datos.
  • onPause: se invoca cuando la actividad va a perder el foco. Podemos ver este método como un aviso de que la pantalla va a dejar de ser visible y por tanto es un lugar idóneo para guardar el estado de la actividad.
  • onStop: se llama a este método cuando la actividad ha sido ocultada por completo.
  • onDestroy: método por el que pasa cuando la actividad va a ser destruida por completo.

Qué son las actividades en Android

En este post intentaremos explicar qué son las actividades en Android.

Una actividad es una pantalla que en algún momento podrá ser visualizada por el usuario. Una aplicación en android tendrá entre 1 a N actividades.

Es en una actividad (pantalla) donde se colocarán los diferentes componentes como son los controles: caja de texto, botón, cuadros de selección (checkbox), listas desplegables…

Cuando creamos un nuevo proyecto android desde eclipse entre otras cosas tendremos la opción de indicarle cual será el nombre de la actividad principal (pantalla de inicio) desde la cual se arrancará nuestra aplicación.

Cada una de las pantallas que creemos deberán extender a la clase Activity. Si nos fijamos al extender esta clase también podremos sobreescribir algunos de sus métodos entre ellos está el siguiente:

  • OnCreate, se ejecutará al iniciar la aplicación. En este método se suele iniciar el layout o clase que contiene el diseño de la pantalla.

setContentView(R.layout.mi_actividad);

 En posteriores posts hablaremos del ciclo de vida de las actividades.

Instalación y configuración entorno de desarrollo Android

Lo primero que debemos hacer antes de realizar nuestra primera aplicación Android es preparar el entorno de desarrollo. Una gran ventaja del desarrollo con Android es que se trabaja con tecnologías libres.

Yo he escogido la integración de la SDK de Google con el IDE de Eclipse ya que es la más ampliamente utilizada hoy en día. Existen otros IDEs como NetBeans que también pueden utilizarse ya que está así mismo integrado con la SDK de Google.

Antes de empezar es necesario disponer del siguiente software en su estación de trabajo:

  • Java Runtime Environment (JRE) y Java Development Kit de Oracle (JDK), tanto el JRE como el JDK son necesarios para arrancar el IDE Eclipse. Se pueden obtener en http://www.oracle.com/technetwork/java/javase/downloads/index.html
  • Eclipse: puede descargarse en su página www.eclipse.org. Existen muchas versiones de eclipse, ya que cada una está orientada para los lenguajes y entornos de programación que deseemos. En nuestro caso elegiremos Eclipse IDE for JAVA Developers. Nota: Eclipse no se instala simplemente se descomprime en el directorio que nosotros deseemos.

En este momento podremos probar a arrancar Eclipse, si no existe ningún problema es que hemos instalado correctamente los puntos anteriores.

Es en este punto donde necesitamos descargar el software de android disponible en la página: http://developer.android.com/sdk. Descomprimimos la última versión disponible en cualquier directorio de nuestro equipo.

Ahora deberemos ejecutar SDK Manager e instalar las APIs de Android que necesitemos para nuestros desarrollos. Particularmente yo he instalado todas las APIs superiores a 10 ya que conforman la mayor cuota del mercado. Aquí hay que tener paciencia ya que la instalación se hace online y depende de la velocidad de conexión a internet que disfrutemos.

El último paso será integrar en Eclipse un plugin que permite utilizar el SDK de Android. Para ello arrancaremos Eclipse y en el menú Help > Install New Software. Sobre la ventana de diálogo pulsaremos el botón Add e introducimos las siguiente URL: https://dl-ssl.google.com/android/eclipse/.

Cuando se carguen la lista de opciones a instalar seleccionamos el paquete Developer Tools al completo y pulsamos el botón siguiente para iniciar la descarga.

Una vez instalado hay que indicar a Eclipse donde se encuentran las API del SDK Manager. Para ello abrimos la pantalla de configuración de Android desde el menú Window > Preferences > Android de Eclipse. Ahí seleccionamos la carpeta de instalación del SDK de Android.