2010-02-02 7 views
19

Lo que yo quiero es tener un menú de opciones que el usuario puede optar por navegar por el menú entre:Usando gesto androide en la parte superior de los botones de menú

  1. Al tocar un botón y luego presionando hacia abajo la rueda de desplazamiento para seleccionarlo
  2. dibujo gestos predefinidos de gestos Constructor

Tal como está ahora, he creado mis botones con OnClickListener y los gestos con GestureOverlayView. Luego selecciono el inicio de un nuevo Activity dependiendo de si el usuario presiona un botón o ejecuta un gesto. Sin embargo, cuando intento dibujar un gesto, no se levanta. Solo presionar los botones es reconocido. El siguiente es mi código:

public class Menu extends Activity implements OnClickListener, OnGesturePerformedListener { 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    //create TextToSpeech 
    myTTS = new TextToSpeech(this, this); 
    myTTS.setLanguage(Locale.US); 

    //create Gestures 
    mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures); 
    if (!mLibrary.load()) { 
    finish(); 
    } 

    // Set up click listeners for all the buttons. 
    View playButton = findViewById(R.id.play_button); 
    playButton.setOnClickListener(this); 
    View instructionsButton = findViewById(R.id.instructions_button); 
    instructionsButton.setOnClickListener(this); 
    View modeButton = findViewById(R.id.mode_button); 
    modeButton.setOnClickListener(this); 
    View statsButton = findViewById(R.id.stats_button); 
    statsButton.setOnClickListener(this); 
    View exitButton = findViewById(R.id.exit_button); 
    exitButton.setOnClickListener(this); 

    GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures); 
    gestures.addOnGesturePerformedListener(this); 
} 

public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) { 
    ArrayList<Prediction> predictions = mLibrary.recognize(gesture); 

// We want at least one prediction 
if (predictions.size() > 0) { 
Prediction prediction = predictions.get(0); 
// We want at least some confidence in the result 
if (prediction.score > 1.0) { 
    // Show the gesture 
    Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show(); 
    //User drew symbol for PLAY 
    if (prediction.name.equals("Play")) { 
     myTTS.shutdown(); 
     //connect to game 
     // User drew symbol for INSTRUCTIONS 
    } else if (prediction.name.equals("Instructions")) { 
      myTTS.shutdown(); 
      startActivity(new Intent(this, Instructions.class)); 
     // User drew symbol for MODE 
    } else if (prediction.name.equals("Mode")){ 
     myTTS.shutdown(); 
     startActivity(new Intent(this, Mode.class)); 
     // User drew symbol to QUIT 
    } else { 
     finish(); 
    } 
    } 
} 
} 

@Override 
    public void onClick(View v) { 
     switch (v.getId()){ 
     case R.id.instructions_button: 
     startActivity(new Intent(this, Instructions.class)); 
     break; 
     case R.id.mode_button: 
     startActivity(new Intent(this, Mode.class)); 
     break; 
     case R.id.exit_button: 
     finish(); 
     break; 
    } 
} 

¡Cualquier sugerencia sería muy apreciada!

+0

¿Funciona el gesto? se llama 'onGesturePerformed'? – Macarse

+0

¿Cómo es tu diseño? Lo más probable es que su superposición de gestos no esté donde el usuario está dibujando gestos. Los gestos –

+0

no parecen funcionar muy bien en muchos controles de la interfaz de usuario. Tuve que volver a utilizar un control dedicado "deslízame", donde el usuario se desliza sobre él y dice "gesto detectado". se come bienes raíces sin embargo. Veo mi aplicación CueBrain para ver cómo se ve. – swinefeaster

Respuesta

2

Si entendí correctamente, desea realizar tanto acción de clic como gesto en la misma vista, no estoy seguro de cómo lograr esto, sin embargo, podemos tener una vista invisible detrás de los botones para manejar el gesto y los botones en la parte superior manejará los eventos de clic como de costumbre.

La aplicación de calculadora predeterminada utiliza este enfoque para alternar entre el modo normal y el modo avanzado.

Calculator Source

Consulte, com.android.calculator2.PanelSwitcher - para eventos de gestos com.android.calculator2.EventListener - para eventos de clic

espero que ayude.

Cuestiones relacionadas