Използване на 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
жестовете изглежда не работят много добре при много контроли на потребителския интерфейс. Трябваше да се върна към използването на специална контрола slide me, където потребителят се плъзга върху нея и се казва, че е открит жест. той обаче изяжда недвижими имоти. вижте моето приложение 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