Você está na página 1de 4

UNIVERSIDAD PRIVADA TELESUP

EUGENIO PARI CASTRO

TOUCH SCREEN
Elabore una aplicacin para celulares tctiles, donde un objeto se mueva
en la direccin del desplazamiento del dedo . Enva tu archivo a travs de
este medio.
La pantalla tctil
Los telfonos Android suelen incorporar una pantalla tctil, que es utilizada como dispositivo principal de
entrada. El uso ms importante de la pantalla tctil es como sustituto del ratn de un ordenador de
sobremesa. De esta forma podemos seleccionar, arrastrar y soltar cualquier elemento de la pantalla de
forma sencilla. No obstante el uso de este dispositivo no acaba aqu. Suele utilizarse en sustitucin del
teclado en aquellos dispositivos que no disponen de teclado fsico. Tambin puede ser utilizada como
entrada de un videojuego, como se ver en este apartado. Otra alternativa para usar la pantalla tctil
consiste en el uso de gestures soportado a partir del SDK 1.6. Las gestures sern estudiadas en el
siguiente punto. Otro abanico de nuevas posibilidades se abre con elmulti-touch, soportado a partir del
SDK 2.0.

El manejo bsico de la pantalla tctil pasa por definir el mtodo OnTouchEventen una clase View (o
implementar la interfaz OnTouchListener en otras clases). Este mtodo nos devolver en un parmetro, un
objeto de la claseMotionEvent.
Los mtodos ms interesantes de la clase MotionEvent se indican a continuacin:
getAction() Tipo de accin realizada. En API level 1

puedeser: ACTION_DOWN, ACTION_MOVE, ACTION_UPo ACTION_CANCEL.


getX(), getY() posicin de la pulsacin.
getDownTime() Tiempo en ms en que el usuario presion por primera vez en una cadena de eventos de

posicin.
getEventTime() Tiempo en ms del evento actual.
getPressure() Estima la presin de la pulsacin. El valor 0 es el mnimo, el valor 1 representa una

pulsacin normal.
getSize() Valor escalado en 0 y 1 que estima el grosor de la pulsacin.

A partir del API level 5 estos mtodos pueden indicar como parmetro un ndice de puntero para decirle al
sistema sobre cul de los distintos punteros estamos consultando.

Uso de la pantalla tctil


En este ejercicio se mostrar cmo podemos capturar los eventos procedentes de la pantalla tctil. Tambin
se aprovechar para repasar otros conceptos, como: Creacin de Layouts y herramientas de revisin de
cdigo en Eclipse.

TECNOLOGIA DE MULTIMEDIA Y REALIDAD VIRTUAL

Pgina 1

UNIVERSIDAD PRIVADA TELESUP


EUGENIO PARI CASTRO
Crea un nuevo proyecto con nombre PantallaTactil. El nombre de la actividad principal
debe de ser, PantallaTactilActivity.
Modifica el Layout main.xml para que tenga una apariencia similar a la siguiente. De esta
forma practicars la creacin de Layouts. A la derecha se muestra la estructura de vistas que
contiene.

Una posible solucin se muestra a continuacin:


<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/TextViewEntrada"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:text="Pulsa sobre esta vista"
android:gravity="center"
android:background="#0000FF"
android:layout_margin="2mm"
android:textSize="10pt"/>
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<TextView
android:id="@+id/TextViewSalida"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Pulsaciones:"/>
</ScrollView>
</LinearLayout>

Introduce las siguientes dos lneas al final del mtodo onCreate():

TECNOLOGIA DE MULTIMEDIA Y REALIDAD VIRTUAL

Pgina 2

UNIVERSIDAD PRIVADA TELESUP


EUGENIO PARI CASTRO
TextViewentrada = (TextView)findViewById(R.id.TextViewEntrada);
entrada.setOnTouchListener(this);

Pulsa Shift-Ctrl-O para aadir los imports.


Observa como el mtodo setOnTouchListener est marcado como errneo. Si pones el
cursor encima, te indicar que el parmetro de este mtodo (this) es de la
clase PantallaTactilActivity, y es necesario que sea de tipo OnTouchListener.
Para evitar el error te mostrar una lista de posibles soluciones. Selecciona la ltima Lef
PantallaTactilActivity implement OnTouchListener de esta forma implementaremos

este interfaz y nuestra clase podr ser considerada de este tipo. La declaracin de la clase
cambiar a:
public class PantallaTactilActivity extends Activity
implementsOnTouchListener {

Se ha solucionado el problema anterior, pero ha aparecido otro. Ahora,


la PantallaTactilActivity est marcada como errnea. El problema consiste en que
estamos diciendo que implementamos el interfazOnTouchListener pero no hemos
implementado ninguno de los mtodos de este interfaz.
Para evitar el error selecciona en la lista de posibles
soluciones: Addunimplementedmethods de esta forma se aadirn todos los mtodos
necesarios de este interfaz. La declaracin de la clase cambiar a:
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
return false;
}

Reemplaza el nombre de los parmetros por otros ms expresivos. Por


ejemplo: arg0 por vista y arg1por evento.
Observa como este mtodo ha de devolver un parmetro. Actualmente es false, que
significa que no nos hemos hecho cargo de la pulsacin, el sistema seguir pasando este
evento a otras vistas. En este caso el LinearLayout que contiene la vista. Cmbialo a true,
para que el sistema no siga propagando este evento.
Reemplaza la lnea // TODO Auto-generatedmethodstub por:
TextViewsalida = (TextView) findViewById(R.id.TextViewSalida);
salida.append(evento.toString()+"\n" );

Ejecuta el proyecto y verifica el resultado.


acction=0 significa que se ha pulsado sobre la pantalla, acction=1 significa que se ha soltado

yacction=2 que se est desplazando el dedo. (estos tres valores corresponden con las
constantesMotionEvent.ACTION_DOWN, MotionEvent.ACTION_UP y MotionEvent.ACTION_MOVE)

Modifica el proyecto para que cuando el mvil se ponga en apaisado el Layout que se
visualice sea:

TECNOLOGIA DE MULTIMEDIA Y REALIDAD VIRTUAL

Pgina 3

UNIVERSIDAD PRIVADA TELESUP


EUGENIO PARI CASTRO

No todas las pantallas tctiles soportan los mtodos getPression() y getSize(). Prueba con
tu terminal si lo soporta y en tal caso observa el rango de valores que obtienes

TECNOLOGIA DE MULTIMEDIA Y REALIDAD VIRTUAL

Pgina 4