2010-02-02 9 views
19

co chcę mieć menu opcji, w którym użytkownik może wybrać, aby poruszać się po menu pomiędzy:Korzystanie android gest na górze przycisków menu

  1. Dotykając przycisku, a następnie naciskając trackball, aby go wybrać
  2. rysunkowe predefiniowanych gesty gesty Builder

w jej obecnym, stworzyłem moje przyciski z OnClickListener i gesty z GestureOverlayView. Następnie wybieram uruchamianie nowego Activity w zależności od tego, czy za pomocą naciśnięcia przycisku lub wykonano gest. Jednak gdy spróbuję narysować gest, nie zostanie on podniesiony. Tylko naciśnięcie przycisków jest rozpoznawane. Oto mój kod:

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

Wszelkie sugestie będą mile widziane!

+0

Czy ten gest działa? nazywa się "onGesturePerformed"? – Macarse

+0

Jaki jest twój układ? Możliwe, że nakładka na gesty nie jest tam, gdzie użytkownik rysuje gesty. –

+0

gesty nie wydają się działać bardzo dobrze na wiele kontroli ui. musiałem powrócić do korzystania z dedykowanej kontrolki "przesuń mnie", w której użytkownik ślizga się po niej i mówi "wykryto gest". zżera jednak nieruchomości. zobacz moją aplikację CueBrain, aby zobaczyć, jak to wygląda. – swinefeaster

Odpowiedz

2

Jeśli dobrze rozumiem, chcesz wykonać zarówno kliknięcie, jak i akcję gestu na tym samym widoku, nie jestem pewien, jak to osiągnąć, jednak możemy mieć niewidzialny widok za przyciskami do obsługi gestów i przycisków na górze będzie obsługiwać zdarzenia kliknięcia w zwykły sposób.

Aplikacja Default Calculator używa tego podejścia do przełączania między trybem normalnym a trybem zaawansowanym.

Calculator Source

Patrz, com.android.calculator2.PanelSwitcher - dla zdarzeń gest com.android.calculator2.EventListener - za kliknięcie wydarzeń

nadzieję, że to pomaga.

Powiązane problemy