Android: Show the in-game menu when back button is pushed.

This commit is contained in:
sigmabeta 2015-06-07 23:11:34 -04:00
parent 5c7caf1f22
commit a97e9addf0
1 changed files with 27 additions and 2 deletions

View File

@ -25,6 +25,9 @@ public final class EmulationActivity extends Activity
{
private View mDecorView;
private boolean mDeviceHasTouchScreen;
private boolean mSystemUiVisible;
/**
* Handlers are a way to pass a message to an Activity telling it to do something
* on the UI thread. This Handler responds to any message, even blank ones, by
@ -44,6 +47,8 @@ public final class EmulationActivity extends Activity
{
super.onCreate(savedInstanceState);
mDeviceHasTouchScreen = getPackageManager().hasSystemFeature("android.hardware.touchscreen");
// Get a handle to the Window containing the UI.
mDecorView = getWindow().getDecorView();
@ -59,9 +64,9 @@ public final class EmulationActivity extends Activity
@Override
public void onSystemUiVisibilityChange(int flags)
{
boolean visible = (flags & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0;
mSystemUiVisible = (flags & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0;
if (visible)
if (mSystemUiVisible)
{
getActionBar().show();
hideSystemUiAfterDelay();
@ -117,6 +122,20 @@ public final class EmulationActivity extends Activity
}
}
@Override
public void onBackPressed()
{
if (!mDeviceHasTouchScreen && !mSystemUiVisible)
{
showSystemUI();
}
else
{
// Let the system handle it; i.e. quit the activity TODO or show "are you sure?" dialog.
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
@ -275,6 +294,8 @@ public final class EmulationActivity extends Activity
private void hideSystemUI()
{
mSystemUiVisible = false;
mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
@ -285,8 +306,12 @@ public final class EmulationActivity extends Activity
private void showSystemUI()
{
mSystemUiVisible = true;
mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
hideSystemUiAfterDelay();
}
}