Añadiendo gestures a Asteroides

En el siguiente ejercicio trataremos de aplicar lo aprendido a la aplicación Asteroides. La idea es que de forma alternativa a usar el menú de cuatro botones que se muestra al arrancar la aplicación, se pueda utilizar gestures.

Práctica: Añadiendo gestures a Asteroides

1. Si el proyecto Asteroides ha sido con una versión del SDK anterior a la 1.6, tendrás que actualizarlo como mínimo a esta versión. Para ello pulsa sobre el proyecto con el botón derecho y selecciona “properties”, selecciona en la lista de la izquierda “Android” y marca la versión adecuada.

2. Crea la carpeta res/raw y copia el fichero gestures, que contiene la librería creada anteriormente.

3. Modifica el Layout main.xml para que disponga de un GestureOverlayView.

4. Cuando el usuario esté utilizando este Layout ha de poder introducir alguna de las cuatro gestures de la librería de forma que se ejecute la acción correspondiente.

 

Solución:

Los pasos a seguir para realizar el ejercicio anterior se describen a continuación:

1. Añade al principio de res/layout/main.xml el siguiente código. Cierra la etiqueta al final del fichero.


<android.gesture.GestureOverlayView

   xmlns:android="http://schemas.android.com/apk/res/android"

   android:id="@+id/gestures"

   android:layout_width="fill_parent"

   android:layout_height="fill_parent"

   android:gestureStrokeType="multiple"

   android:fadeOffset="800">

2. En el fichero Asteroides.java añade en la definición de la clase:

public class Asteroides extends Activity

implements OnGesturePerformedListener{

    private GestureLibrary libreria;

    


      

3. Añade al final del método onCreate:


libreria = GestureLibraries.fromRawResource(this, 
                                                                                      R.raw.
gestures);

if (!libreria.load()) {

   finish();

}

GestureOverlayView gesturesView =

   (GestureOverlayView) findViewById(R.id.gestures);

gesturesView.addOnGesturePerformedListener(this);

4.  Añade el siguiente método:

public void onGesturePerformed(GestureOverlayView ov, 
                                                                                          Gesture gesture) {

   ArrayList<Prediction> predictions=libreria.recognize(gesture);

   if (predictions.size()>0){

          String comando = predictions.get(0).name;

          if (comando.equals("play")){

                 lanzarJuego(null);

          } else if (comando.equals("configurar")){

                 lanzarPreferencias(null);

          } else if (comando.equals("acerca_de")){

                 lanzarAcercaDe(null);

          } else if (comando.equals("cancelar")){

                 finish();

          }

   }

}

{jcomments on}