What I want is to have an options menu where the user can choose to navigate the menu between:
As it stands now, I have created my buttons with OnClickListener
and the gestures with GestureOverlayView
. Then I select starting a new Activity
depending on whether the using pressed a button or executed a gesture. However, when I attempt to draw a gesture, it is not picked up. Only pressing the buttons is recognized. The following is my 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;
}
}
Any suggestions would be greatly appreciated!
From Settings, tap Display, and then tap Navigation bar. Make sure Buttons is selected, and then you can choose your desired button setup at the bottom of the screen. Note: This option will also affect the location you swipe when using Swipe gestures.
Open the Settings app. Scroll through the options and tap on Display settings. Look for and open the Navigation bar option. Tap on Swipe gestures.
The classic 3-button navigationFrom Settings, go to System, Gestures, and then tap System Navigation. Gesture navigation will be selected by default, but you can tap 3-button navigation to make buttons appear at the bottom of your screen.
If I understood correctly, you want to perform both click action and gesture action on the same view, I am not sure how to achieve this, however, we can have invisible view behind the buttons to handle gesture and buttons on top will handle the click events as usual.
Default Calculator application uses this approach to swap between normal mode and advanced mode.
Calculator Source
Refer, com.android.calculator2.PanelSwitcher - for gesture events com.android.calculator2.EventListener - for click events
hope it helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With