Programación Android, menú contextual (registerForContextMenu)

En la publicación de la semana pasada hablamos sobre cómo crear y manejar menús en Android, pero existen también otro tipo de menús, el menú contextual. A diferencia del menú normal, el menú contextual se mostrará en función del elemento seleccionado de la pantalla, cuando, sobre éste elemento, se realice una pulsación larga.

Este tipo de menú nos ofrece, como veremos más adelante, la posibilidad de mostrar un menú específico para cada elemento al que hayamos registrado un menú.

Como siempre, vamos a realizar un sencillo ejemplo para que resulte más fácil entender cómo manejar este elemento. Esta vez vamos a crear una interfaz con 1 TextView y 2 botones, y cambiaremos el texto a mostrar en el TextView en función de si hacemos una pulsación normal sobre el botón, o si seleccionamos alguna de las opciones del menú contextual asignado a cada botón:

Activity RegisterForContextMenu
Activity

Leer más…

Programación android, Cómo usar un Menú

Menú en Android
En esta ocasión vamos a explicar cómo usar el menú en las aplicaciones Android. En algún ejemplo que hemos hecho en Proyecto Simio, la lógica de la interfaz era “poco útil”, por ejemplo en el último que hicimos sobre Preferencias de Usuario, para llamar a las preferencias lo hacíamos a través de un botón, sin embargo, si pensamos en la optimización de la experiencia del usuario que vaya a utilizar nuestra aplicación, éste esperará encontrar las preferencias a partir de un menú.
Como siempre, vamos a utilizar un pequeño ejemplo para configurar y utilizar nuestro menú, esta vez utilizaremos un Layout con un simple TextView que va a mostrar la opción del menú que se ha seleccionado.
Leer más…

Programación Android, Preferencias de usuario (SharedPreferences, PreferencesActivity y PreferenceFragment)

SharedPreferences

Después de unas semanas de vacaciones volvemos a la carga con una nueva publicación sobre programación Android. En esta ocasión vamos a hablar de la posibilidad de almacenar preferencias de usuario (SharedPreferences) en nuestra aplicación, utilizando la herramienta que nos facilita Android para ello.

Para explicar el uso de esta herramienta vamos a crear una aplicación con una pantalla que contenga un TextView. El texto a mostrar, el tamaño de la fuente y el fondo del TextView los podremos configurar a partir de las preferencias del usuario, o dejar unos valores por defecto.

En primer lugar vamos a crear una Activity en nuestro proyecto que contenga un TextView, que será el que muestre los valores de las preferencias, y un Button que lanzará la pantalla de preferencias:

Main Activity
Main Activity

Leer más…

Programación Android, Restringir aplicación para dispositivos smartphone o tablet

smpartphone_tablet

Aunque es una práctica no recomendada por Google, en ciertas ocasiones podemos necesitar que una aplicación esté destinada al uso exclusivo en determinados tipos de dispositivos, ya sea para un Smartphone o una Tablet. Para estos casos tenemos  la opción de restringir para qué dispositivos está destinada la aplicación a través del manifiest.xml de nuestro proyecto, utilizando la etiqueta <compatible-screens> y en su interior definir tantas pantallas como necesitemos, teniendo en cuenta que para cada tamaño de pantalla también tenemos que indicar a qué densidades queremos dar soporte.

Esto quiere decir que, si por ejemplo queremos dar soporte a pantallas de tamaño large (que hacen referencia a las tablets de 7′) en realidad deberemos indicar 4 pantallas distintas en el manifiest.xml, una por cada densidad: ldpi, mdpi, hdpi y xhdpi. Si quisieramos además dar soporte a pantallas de 10′ haríamos lo mismo con las de tamaño xlarge, con lo que el manifiest.xml contendría las siguientes etiquetas:
Leer más…

Programación Android, AsyncTask – Conectar a Internet y leer documentos JSON

json

Esta semana vamos a escribir un ejemplo parecido al de la semana pasada, en el que conectábamos a una URL para recoger un documento XML y analizarlo, utilizando para eso un AsyncTask. En esta ocasión vamos a hacer lo mismo, pero con un documento JSON.
En primer lugar debemos conocer la estructura del documento previamente, para poder analizarlo después desde el código. La URL que vamos a utilizar en esta ocasión es la api de flickr, que nos permite ver las fotos publicadas en un documento JSON: http://api.flickr.com/services/feeds/photos_public.gne?format=json.

Como se puede ver en el documento, hay una etiqueta “items”, que es un array que contiene una serie de documentos JSON a su vez. Cada uno de estos documentos del array son los que contienen los datos de las fotos publicadas.
Leer más…

Programación Android, AsyncTask – Conectar a Internet y leer XML

android_xml
En esta ocasión vamos a desarrollar una aplicación va a conectar a Internet y va a recoger un documento XML a través de un AsynkTask, para mostrar en un ListView las últimas publicaciones del blog. En primer lugar es necesario conocer la estructura del XML que vamos a utilizar, en este caso podemos ver la estructura completa en el siguiente enlace http://www.proyectosimio.com/es/feed/

Como vemos, tenemos una primera etiqueta , y en su interior se encuentra el título del blog, el link, la descripción, la última modificación de algún dato, idioma, etc. En nuestro ejemplo vamos a utilizar las etiquetas , que contienen los artículos que se han publicado en el blog. Dentro de esta etiqueta vemos que existen las etiquetas y , que contienen el título del artículo y el link en el que se encuentra.

En nuestro ListView vamos a mostrar el título de la entrada, y cuando se pulse sobre una lanzaremos un Intent para que se abra el navegador y muestre el artículo deseado.
Leer más…

Programación Android, Ejemplo de Bases de datos & ListView IV

Android SQLite

En la última entrada nos quedamos a falta de lanzar una segunda Activity con los datos del ítem seleccionado del ListView, para poder modificarlos posteriormente. Con esta entrada terminaremos este ejemplo de como usar bases de datos en Android, con POO y MVC.

Implementar OnItemClickListener

En primer lugar vamos a implementar el Listener OnItemClickListener en la primera Activity, para que cuando suceda este evento recojamos la información del ítem seleccionado y lo enviemos a la segunda Activity. Añadiremos el Listener a la firma de nuestra Activity, y posteriormente escribiremos el método que nos pide:

public class MainActivity extends Activity implements OnClickListener, OnItemClickListener {
/* ... */

	@Override
	public void onItemClick(AdapterView<?> adapter, View view, int position,
			long id) {
		// TODO Añadir el código para recuperar la información y mandarla a la
		// segunda Activity.

	}
}

Leer más…

Programación Android, Ejemplo de Bases de datos & ListView III

Android SQLite

En la entrada anterior sobre el manejo de bases de datos nos quedamos en el punto en que habíamos copiado los datos de una tabla a otra, pero nos faltaba mostrarlos en el segundo ListView, que iba a contener un Adapter personalizado para poder mostrar los 3 campos que guardamos en la tabla.

Crear el Adapter personalizado

El Adapter lo vamos a crear siguiendo los pasos que ya dijimos en las entradas:

En primer lugar crearemos la vista del ítem del ListView, con 3 TextView en los que mostrar los datos:

<!--?xml version="1.0" encoding="utf-8"?-->








Leer más…

Programación Android, Ejemplo de Bases de datos & ListView II

Android SQLite

En la anterior publicación sobre el manejo de bases de datos nos quedamos en el punto en el que teníamos que recoger los datos de la BD para mostrarlos en el primer ListView.

Creando la clase Modelo

Para hacer esto en primer lugar vamos a crear una nueva clase, que actuará de Modelo de datos, es decir, será una clase que va a representar la estructura de la tabla a la que queremos acceder, de manera que los datos de cada tupla de la tabla se almacenarán en un objeto de la clase Modelo creada:

/**
 * Clase Modelo de las tablas de la BD.
 *
 * @author ProyectoSimio
 *
 */
public class DatosTabla {
	private int _id;
	private String nombre, apellido, telefono;

	/**
	 * Constructor de la clase Modelo para las tablas de la BD
	 *
	 * @param _id
	 * @param nombre
	 * @param apellido
	 * @param telefono
	 */
	public DatosTabla(int _id, String nombre, String apellido, String telefono) {
		this._id = _id;
		this.nombre = nombre;
		this.apellido = apellido;
		this.telefono = telefono;
	}

	// Getters & setters:
	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	// El campo _id es la clave primaria que no tiene sentido modificar, por lo
	// tanto no le creamos un set a este campo.
	public int get_id() {
		return _id;
	}

}

Leer más…

Programación Android, Ejemplo de Bases de datos & ListView I

Android SQLite

Después de explicar cómo gestionar bases de datos en las entradas Bases de Datos I (Modelo-Vista-Controlador), Base de datos II y Bases de Datos III, vamos a mostrar un ejemplo práctico en el que utilizaremos también un ListView para mostrar los datos que recojamos de la Base de Datos, y además incorporaremos la orientación a objetos en nuestro código, para que quede más ordenado el código de nuestra aplicación y posteriormente sea más fácil de mantener.

En primer lugar vamos a explicar un poco en qué consistirá el proyecto: Vamos a crear dos tablas distintas. En la primera, en caso de que no contenga datos, insertaremos una colección de datos al ejecutar la aplicación. Una vez que tengamos datos en la primera de las tablas, pulsando un botón en la interfaz gráfica copiaremos el contenido de la primera tabla a una segunda tabla. También habilitaremos un botón que borrará todo el contenido de la segunda tabla. Por último, pulsando uno de los registros del ListView en que se muestran los datos de la segunda tabla se abrirá una nueva Activity en la que mostraremos en detalle los datos que corresponden a ese registro, y además podremos modificarlos.

Creando el interfaz principal

Para la interfaz hemos optado por un LinearLayout que contiene 2 botones y 2 ListViews, además de 2 TextViews para ayudar a diferenciar entre los ListViews:

Main Layout
Main Layout

Leer más…