1 “Android – Manejo de Eventos”Rogelio Ferreira Escutia
2 Tipos de Eventos 2
3 Escuchando los eventosUn escuchador de Eventos (Event Listener) es una interfaz de la clase “View” que contiene un método “callback” que ha de ser registrado. Cada escuchador de eventos tiene sólo un método callback que será llamado por Android cuando se produzca la acción correspondiente. 3
4 Diferentes tipos de detectores de eventosonClick() Cuando el usuario selecciona una elemento. onLongClick() Cuando el usuario selecciona un elemento por mas de un segundo. onFocusChange() Cuando el usuario navega dento o fuera de un elemento. onKey() Cuando se presiona o suelta o una tecla del dispositivo. 4
5 Ejemplo de manejo de Eventos5
6 Ejemplo (1): Inicio Crear una pantalla que contenga los siguientes componentes: 1) Dos textos (una descripción) 2) Un botón (Historia del ITM) 6
7 Ejemplo (2): Interfaz GráficaDeclaramos nuestro archivo XML con 2 textos y un botón: ARCHIVO: res / layout / activity_main.xml
8 Ejemplo (3): Interfaz GráficaDeclaramos nuestro archivo XML con 2 textos y un botón: ARCHIVO: res / layout / activity_main.xml
9 Ejemplo (4): Manejo de CadenasAgregamos las cadenas que tienen la descripción en pantalla y la cadena del botón: ARCHIVO: res / values / strings.xml
10 Ejemplo (5): Manejo del eventoObtenemos una referencia a los controles de la interfaz (declaración del botón) ARCHIVO: src / MainActivity.java final Button BtnHistoria = (Button)findViewById(R.id.BtnHistoria); 10
11 Ejemplo (6): Manejo del eventoImplementamos el evento “click” ARCHIVO: src / MainActivity.java BtnHistoria.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //Creamos el Intent Intent intent = new Intent(MainActivity.this, HistoriaActivity.class); startActivity(intent); } }); 11
12 Ejemplo (7): Nueva PantallaCuando se haga “click” en el botón, se desencadena una evento, el cual es “escuchado” para poder tomar una decisión. Al desencadenar el evento, nos tiene que llevar a una segunda pantalla, por lo que debemos crear 2 nuevos componentes: 1) Una nueva vista (activity_historia.xml). 2) Un nuevo programa en Java para el control (HistoriaActivity). 12
13 Ejemplo (8): Nueva PantallaLa nueva pantalla tendra los siguientes componentes: 1) Un texto (titulo_historia). 2) Una imagen (itm). 3) Un texto (historia). 4) Un botón (boton_regresar). 13
14 Ejemplo (9): Nueva PantallaAsí se verá nuestra nueva pantalla: 14
15 Ejemplo (10): Interfaz Gráfica 2Declaramos nuestro archivo XML con los componentes anteriores. ARCHIVO: res / layout / activity_historia.xml
16 Ejemplo (11): Interfaz Gráfica 2Declaramos nuestro archivo XML con los componentes anteriores. ARCHIVO: res / layout / activity_historia.xml
17 Ejemplo (12): Manejo de CadenasAgregamos el contenido de las cadenas que aparecerán en nuestra segunda pantalla: ARCHIVO: res / values / strings.xml
18 Ejemplo (13): Imagen Debemos copiar la foto (itm.jpg) en el directorio adecuado (res/drawable) para que nuestra vista (activity_historia.xml) lo pueda cargar: ARCHIVO: res / drawable / itm.jpg 18
19 Ejemplo (14): Manejo del eventoPor último sólo falta agregar el manejo del evento del botón de nuestra segunda pantalla: ARCHIVO: src / HistoriaActivity.java final Button BtnRegresar = (Button)findViewById(R.id.BtnRegresar); BtnRegresar.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //Creamos el Intent Intent intent = new Intent(HistoriaActivity.this, MainActivity.class); startActivity(intent); } }); 19
20 Codigo completo 20
21 21 package com.example.android_informacion_itm;import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.Button; import android.view.View.OnClickListener; import android.content.Intent; import android.view.View; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Obtenemos una referencia a los controles de la interfaz final Button BtnHistoria = (Button)findViewById(R.id.BtnHistoria); //Implementamos el evento "click" BtnHistoria.setOnClickListener(new OnClickListener() { public void onClick(View v) { //Creamos el Intent Intent intent = new Intent(MainActivity.this, HistoriaActivity.class); startActivity(intent); } }); public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; 21
22
23 23 package com.example.android_informacion_itm;import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.Button; import android.view.View.OnClickListener; import android.content.Intent; import android.view.View; public class HistoriaActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_historia); final Button BtnRegresar = (Button)findViewById(R.id.BtnRegresar); BtnRegresar.setOnClickListener(new OnClickListener() { public void onClick(View v) { //Creamos el Intent Intent intent = new Intent(HistoriaActivity.this, MainActivity.class); startActivity(intent); } }); public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.historia, menu); return true; 23
24
25 25
26 Rogelio Ferreira EscutiaInstituto Tecnológico de Morelia Departamento de Sistemas y Computación Correo: Página Web: Twitter: Facebook: