Was ich will, ist ein Optionsmenü haben, wo der Benutzer das Menü zwischen navigieren wählen:mit Android Geste auf der Menütasten
- Berühren einer Schaltfläche und dann auf den Trackball nach unten drücken, um es auszuwählen
- Zeichnung vordefinierten Gesten von Gestures Builder
Wie es jetzt aussieht, ich habe meine Tasten mit OnClickListener
und die Gesten mit GestureOverlayView
erstellt. Dann wähle ich das Starten einer neuen Activity
abhängig davon, ob die Benutzung eine Taste gedrückt oder eine Geste ausgeführt hat. Wenn ich jedoch versuche, eine Geste zu zeichnen, wird sie nicht aufgenommen. Nur das Drücken der Tasten wird erkannt. Das Folgende ist mein Code:
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;
}
}
Alle Vorschläge würden sehr geschätzt werden!
Funktioniert die Geste? wird 'onGesturePerformed' aufgerufen? – Macarse
Wie sieht dein Layout aus? Es ist gut möglich, dass das Gesten-Overlay nicht dort ist, wo der Benutzer Gesten zeichnet. –
Gesten scheinen über viele ui Kontrollen nicht sehr gut zu funktionieren. Ich musste auf ein dediziertes "slide me" -Steuerelement zurückgreifen, wo der Benutzer darüber gleitet und es sagt "Gesten erkannt". es verschlingt jedoch Immobilien. Sehen Sie meine App CueBrain, um zu sehen, wie es aussieht. – swinefeaster