Использование жестов Android поверх кнопок меню

Что я хочу, так это иметь меню параметров, в котором пользователь может перемещаться по меню между:

  1. Прикосновение к кнопке, а затем нажатие на трекбол, чтобы выбрать ее
  2. Рисование предопределенных жестов из Gestures Builder

На данный момент я создал свои кнопки с помощью OnClickListener и жесты с помощью GestureOverlayView. Затем я выбираю запуск нового Activity в зависимости от того, нажал ли пользователь кнопку или выполнил жест. Однако, когда я пытаюсь нарисовать жест, он не подхватывается. Распознается только нажатие кнопок. Ниже приведен мой код:

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;
  }  
}

Любые предложения будут ценны!


person user264427    schedule 02.02.2010    source источник
comment
Жест работает? onGesturePerformed вызывается?   -  person Macarse    schedule 14.03.2011
comment
Как выглядит ваш макет? Скорее всего, ваше наложение жестов находится не там, где пользователь рисует жесты.   -  person Dave MacLean    schedule 20.03.2011
comment
жесты, похоже, не очень хорошо работают со многими элементами управления пользовательского интерфейса. мне пришлось вернуться к использованию специального элемента управления слайдом, где пользователь скользит по нему, и он говорит, что обнаружен жест. однако он съедает недвижимость. посмотрите мое приложение CueBrain, чтобы увидеть, как оно выглядит.   -  person swinefeaster    schedule 27.03.2011
comment
Половина информации отсутствует в этом вопросе: покажите макет xml.   -  person olivierg    schedule 07.04.2011
comment
Это может показаться вам полезным: developer.android.com/resources/articles/gestures .html   -  person Hassassin    schedule 10.04.2011


Ответы (1)


Если я правильно понял, вы хотите выполнять как действие щелчка, так и действие жеста в одном и том же представлении, я не уверен, как этого добиться, однако мы можем иметь невидимый вид за кнопками для обработки жестов, а кнопки сверху будут обрабатывать щелчок события как обычно.

Приложение «Калькулятор по умолчанию» использует этот подход для переключения между обычным и расширенным режимами.

Источник калькулятора

Обратитесь, com.android.calculator2.PanelSwitcher — для событий жестов com.android.calculator2.EventListener — для событий кликов

Надеюсь, поможет.

person Riyaz Mohammed Ibrahim    schedule 04.04.2011