tipos studio programacion móviles desplegable desarrollo curso contextual aplicaciones android gesture-recognition

studio - Usando el gesto de Android en la parte superior de los botones del menú



programacion android pdf 2018 (1)

Lo que quiero es tener un menú de opciones donde el usuario pueda elegir navegar por el menú entre:

  1. Tocar un botón y luego presionar la rueda de desplazamiento hacia abajo para seleccionarlo
  2. Dibujar gestos predefinidos desde Gestures Builder.

Tal como está ahora, he creado mis botones con OnClickListener y los gestos con GestureOverlayView . Luego selecciono comenzar una nueva Activity dependiendo de si presioné un botón o ejecuté un gesto. Sin embargo, cuando intento dibujar un gesto, no se recoge. Sólo se reconoce pulsando los botones. 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!


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

La aplicación Calculadora predeterminada utiliza este enfoque para cambiar entre el modo normal y el modo avanzado.

Fuente de la calculadora

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

Espero eso ayude.