Android: Add touchscreen controller toggle

This commit is contained in:
Connor McLaughlin 2019-12-09 22:34:08 +10:00
parent 9321fcb627
commit 6592b59597
2 changed files with 60 additions and 3 deletions

View File

@ -5,9 +5,11 @@ import android.annotation.SuppressLint;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.util.Log; import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.SurfaceHolder; import android.view.SurfaceHolder;
import android.view.SurfaceView; import android.view.SurfaceView;
@ -31,6 +33,7 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
* Touchscreen controller overlay * Touchscreen controller overlay
*/ */
TouchscreenControllerView mTouchscreenController; TouchscreenControllerView mTouchscreenController;
private boolean mTouchscreenControllerVisible = true;
/** /**
* Whether or not the system UI should be auto-hidden after * Whether or not the system UI should be auto-hidden after
@ -148,6 +151,7 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
mTouchscreenController = new TouchscreenControllerView(this); mTouchscreenController = new TouchscreenControllerView(this);
activityLayout.addView(mTouchscreenController); activityLayout.addView(mTouchscreenController);
mTouchscreenController.init(0, "DigitalController", mHostInterface); mTouchscreenController.init(0, "DigitalController", mHostInterface);
setTouchscreenControllerVisibility(true);
// Hook up controller input. // Hook up controller input.
mContentView.initControllerKeyMapping(mHostInterface, "DigitalController"); mContentView.initControllerKeyMapping(mHostInterface, "DigitalController");
@ -163,14 +167,35 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
delayedHide(100); delayedHide(100);
} }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_emulation, menu);
menu.findItem(R.id.show_controller).setChecked(mTouchscreenControllerVisible);
return true;
}
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId(); int id = item.getItemId();
if (id == android.R.id.home) {
// This ID represents the Home or Up button. //noinspection SimplifiableIfStatement
NavUtils.navigateUpFromSameTask(this); if (id == R.id.action_settings) {
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
} else if (id == R.id.show_controller) {
setTouchscreenControllerVisibility(!mTouchscreenControllerVisible);
item.setChecked(mTouchscreenControllerVisible);
return true;
} else if (id == R.id.quit) {
finish();
return true; return true;
} }
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
@ -217,4 +242,9 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde
mHideHandler.removeCallbacks(mHideRunnable); mHideHandler.removeCallbacks(mHideRunnable);
mHideHandler.postDelayed(mHideRunnable, delayMillis); mHideHandler.postDelayed(mHideRunnable, delayMillis);
} }
private void setTouchscreenControllerVisibility(boolean visible) {
mTouchscreenControllerVisible = visible;
mTouchscreenController.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
}
} }

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<group android:id="@+id/quick_load_save">
<item android:title="Quick Load" />
<item android:title="Quick Save" />
</group>
<group android:id="@+id/quick_settings">
<item
android:id="@+id/change_disc"
android:title="Change Disc" />
<item
android:id="@+id/show_controller"
android:checkable="true"
android:title="Show Controller" />
</group>
<group>
<item
android:id="@+id/action_settings"
android:title="Settings" />
<item
android:id="@+id/quit"
android:title="Quit" />
</group>
</menu>