Montando la Interfaz Gráfica en Android, Parte II

Eventos

Android proporciona varias formas de capturar los eventos ejecutados por el usuario en su interacción con la aplicación.

Event Listeners

Un event listener es una interface de la clase View que contiene un método que se será llamado por el framework de Android cuando el listener que ha sido registrado es lanzado por la interacción del usuario con el elemento del UI.

onClick(). Es llamado cuando el usuario pulsa el elemento (touch mode) o se sitiúa sobre éste con las teclas de navegación o el trackball y presióna la tecla “enter”.

onLongClick(). Es llamado cuando el usuario pulsa sobre el elemento de manera prolongada.

onFocusChange(). Es llamado cuando el usuario navega dentro o fuera de un elemento, usando las teclas de navegación o el trackball.

onKey(). Se llama cuando el usuario sitúa el foco en un elemento y presiona una tecla en el dispositivo.

onTouch(). Se llama cuando el usuario realiza una acción calificada como touch event, incluyendo presionar, soltar o cualquier movimiento dentro de los límites del elemento.

onCreateContextMenu(). Se llama cuando un Context Menu se muestra en pantalla.

El botón se conecta a su comportamiento a través del método setOnClickListener, que viene heredado de la interface OnClickListener que implementa la clase Activity.

class GuiEvent extends Activity {
	@Override public void onCreate (Bundle state){
		super.onCreate(state);
		setContentView (R.layout.main);

		final EditText et1= (EditText) findViewById (R.id.text1);
		final EditText et2= (EditText) findViewById (R.id.text2);

		((Button)) findViewById(R.id.button2)).setOnClickListene{
			new Button.OnclickListener{
				Random rand =new Random();
				@Override public void onClick (View arg0){
					et1.setText(String.valueOf(rand.nextINT(200)));
					et2.setText(String.valueOf(rand.nextINT(200)));

				}
			}
		}
	}
}

A su vez OnClickListener define un único método onClick que cuando un botón recibe un evento del framework lo examina observando si está cualificado como “click” y en ese caso ejecuta dicho método.

Un click se puede realizar de distintas maneras dependiendo del dispositivo, pero el framework se encarga de gestionarlo y solamente nos tenemos que preocupar de controlar el evento a su nivel más alto.

Event Handlers Cuando se crea un componente personalizado extendiendo de una View, se pueden definir una serie de métodos que gestionan los eventos por defecto.

onKeyDown(int, KeyEvent). Llamado cuando un evento pulsar teclado ocurre.

onKeyUp(int, KeyEvent). Llamado cuando un evento soltar teclado ocurre.

onTrackballEvent(MotionEvent). Llamado cuando un evento trackball ocurre.

onTouchEvent(MotionEvent). Llamado cuando un evento tocar pantalla ocurre.

onFocusChanged(boolean, int, Rect). Llamado cuando un elemento gana o pierde el foco.

Touch Mode

Para terminales táctiles, una vez que el usuario pulsa sobre la pantalla el dispositvo entra en touch mode. Sólo las Views que tengan isFocusableInTouchMode() a verdadero se pueden pulsar.

Touch Mode

El framework maneja las rutinas referidas al movimiento del foco entre Views en respuesta de las entradas del usuario. Las Views indican su posibilidad de adquirir el foco mediante el método isFocusable(). Para forzar que un elemento pueda capturar el foco se llame a setFocusable().

Notificaciones

Se utilizan en situaciones en las que se requiere notificar al usuario que ha ocurrido un evento en la aplicación.

Existen varias formas de mostrar estas notificaciones:

Toast Notification: para mostrar mensajes breves.

Toast

Status Bar Notification: para recordatorios que necesitan una respuesta del usuario.

Status_Bar

Dialog Notification: relacionadas con información mostrada por las Activity.

Dialgo

Asociando datos a vistas AdpaterView

El AdapterView es un clase que hereda de ViewGroup, cuyos clases hijas se inicializan a través de un objeto Adapter que asocia a la vista cualquier tipo de información. Ejemplos de AdapterViews son Gallery (muestra una colección de imágenes), ListView (listado de datos), and Spinner (similar a un desplegable) que disponen un tipo específico de datos de un modo determinado.

Las dos principales utilizaciones de estos objetos son:

Rellenar el layout con datos:

Hecho a través de la asociación de la clase con un Adapter que toma los datos de alguna fuente: una lista que el código suministra o el resultado de una consulta a una base de datos del dispositivo

	private String [ ] frutas ={"manzanas","naranjas","limones"};
	Spinner s1 =(Spinner) findViewById (R.id.listafrutas);

	s1.setAdapter (new ArrayAdapter<String>(this, R.layout.spinner_1, mStrings));

Manipular las selecciones del usuario

Esto es hecho al asignar al miembro «AdapterView.OnItemClickListener» de la clase un objeto escuchador de eventos y capturar los cambios que el usuario hace en su selección.

private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
		public void onItemClick(AdapterView parent, View v, int position, long id) {
			// Display a messagebox. showAlert("You've got an event", "Clicked me!", "ok", false);
		}
	};

Objetos comunes de un Layout

FrameLayout Es el layout más sencillo. Está diseñado como un espacio en blanco reservado en la pantalla que posteriormente se puede rellenar con un único objeto. Todos los elementos hijos son posicionados en la parte superior izquierda de la pantalla.

LinearLayout

Alinea todos sus elementos hijos en una única dirección: vertical u horizontal, de acuerdo a la propiedad que se ha definido. Todos los hijos son ubicados uno al lado del otro, por lo tanto una lista vertical sólo tendrá un hijo por fila sin importar lo ancha sea la fila.

TableLayout

Posiciona sus hijos dentro de filas y columnas. Un TableLayout está compuesto por un número de objetos TableRow, cada uno de ellos definiendo una fila.

AbsoluteLayout

Permite que los elementos hijos especifiquen con precisión las coordenadas «x» e «y» en la cual deben ser desplegados. La posición (0,0) corresponde a la esquina superior izquierda.

RelativeLayout

Permite que sus elementos hijos especifiquen su posición relativa entre ellos(indicando un ID) o con su padre.

layout

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *