From 35bbde6d7196e7350386e823999615698541ba2d Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Mon, 9 Dec 2019 21:42:07 +1000 Subject: [PATCH] Android: Finish basic overlay controller implementation --- .../duckstation/EmulationActivity.java | 33 +--- .../TouchscreenControllerView.java | 6 + .../res/drawable/ic_controller_l1_button.xml | 28 +++ .../ic_controller_l1_button_pressed.xml | 28 +++ .../res/drawable/ic_controller_l2_button.xml | 28 +++ .../ic_controller_l2_button_pressed.xml | 28 +++ .../res/drawable/ic_controller_r1_button.xml | 28 +++ .../ic_controller_r1_button_pressed.xml | 28 +++ .../res/drawable/ic_controller_r2_button.xml | 28 +++ .../ic_controller_r2_button_pressed.xml | 28 +++ .../drawable/ic_controller_select_button.xml | 14 ++ .../ic_controller_select_button_pressed.xml | 14 ++ .../drawable/ic_controller_start_button.xml | 14 ++ .../ic_controller_start_button_pressed.xml | 14 ++ .../layout/layout_touchscreen_controller.xml | 167 ++++++++++++++++++ ...trs_touchscreen_controller_button_view.xml | 6 + 16 files changed, 468 insertions(+), 24 deletions(-) create mode 100644 android/app/src/main/res/drawable/ic_controller_l1_button.xml create mode 100644 android/app/src/main/res/drawable/ic_controller_l1_button_pressed.xml create mode 100644 android/app/src/main/res/drawable/ic_controller_l2_button.xml create mode 100644 android/app/src/main/res/drawable/ic_controller_l2_button_pressed.xml create mode 100644 android/app/src/main/res/drawable/ic_controller_r1_button.xml create mode 100644 android/app/src/main/res/drawable/ic_controller_r1_button_pressed.xml create mode 100644 android/app/src/main/res/drawable/ic_controller_r2_button.xml create mode 100644 android/app/src/main/res/drawable/ic_controller_r2_button_pressed.xml create mode 100644 android/app/src/main/res/drawable/ic_controller_select_button.xml create mode 100644 android/app/src/main/res/drawable/ic_controller_select_button_pressed.xml create mode 100644 android/app/src/main/res/drawable/ic_controller_start_button.xml create mode 100644 android/app/src/main/res/drawable/ic_controller_start_button_pressed.xml create mode 100644 android/app/src/main/res/layout/layout_touchscreen_controller.xml create mode 100644 android/app/src/main/res/values/attrs_touchscreen_controller_button_view.xml diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java b/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java index 2bdd6697f..c5249bc9c 100644 --- a/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java +++ b/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java @@ -85,20 +85,6 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde hide(); } }; - /** - * Touch listener to use for in-layout UI controls to delay hiding the - * system UI. This is to prevent the jarring behavior of controls going away - * while interacting with activity UI. - */ - private final View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() { - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - if (AUTO_HIDE) { - delayedHide(AUTO_HIDE_DELAY_MILLIS); - } - return false; - } - }; @Override public void surfaceCreated(SurfaceHolder holder) { @@ -143,16 +129,13 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde } mVisible = true; - mContentView = (SurfaceView) findViewById(R.id.fullscreen_content); - Log.e("EmulationActivity", "adding callback"); + mContentView = findViewById(R.id.fullscreen_content); mContentView.getHolder().addCallback(this); - - - // Set up the user interaction to manually show or hide the system UI. mContentView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - toggle(); + if (mVisible) + hide(); } }); @@ -188,12 +171,14 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde return super.onOptionsItemSelected(item); } - private void toggle() { + @Override + public void onBackPressed() { if (mVisible) { - hide(); - } else { - show(); + finish(); + return; } + + show(); } private void hide() { diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerView.java b/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerView.java index 03a937de6..fb7abbe0f 100644 --- a/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerView.java +++ b/android/app/src/main/java/com/github/stenzek/duckstation/TouchscreenControllerView.java @@ -44,10 +44,16 @@ public class TouchscreenControllerView extends FrameLayout implements Touchscree linkButton(view, R.id.controller_button_right, "Right"); linkButton(view, R.id.controller_button_down, "Down"); linkButton(view, R.id.controller_button_left, "Left"); + linkButton(view, R.id.controller_button_l1, "L1"); + linkButton(view, R.id.controller_button_l2, "L2"); + linkButton(view, R.id.controller_button_select, "Select"); + linkButton(view, R.id.controller_button_start, "Start"); linkButton(view, R.id.controller_button_triangle, "Triangle"); linkButton(view, R.id.controller_button_circle, "Circle"); linkButton(view, R.id.controller_button_cross, "Cross"); linkButton(view, R.id.controller_button_square, "Square"); + linkButton(view, R.id.controller_button_r1, "R1"); + linkButton(view, R.id.controller_button_r2, "R2"); } private void linkButton(View view, int id, String buttonName) diff --git a/android/app/src/main/res/drawable/ic_controller_l1_button.xml b/android/app/src/main/res/drawable/ic_controller_l1_button.xml new file mode 100644 index 000000000..0bc81724b --- /dev/null +++ b/android/app/src/main/res/drawable/ic_controller_l1_button.xml @@ -0,0 +1,28 @@ + + + + + diff --git a/android/app/src/main/res/drawable/ic_controller_l1_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_l1_button_pressed.xml new file mode 100644 index 000000000..8c06f6467 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_controller_l1_button_pressed.xml @@ -0,0 +1,28 @@ + + + + + diff --git a/android/app/src/main/res/drawable/ic_controller_l2_button.xml b/android/app/src/main/res/drawable/ic_controller_l2_button.xml new file mode 100644 index 000000000..3ca495405 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_controller_l2_button.xml @@ -0,0 +1,28 @@ + + + + + diff --git a/android/app/src/main/res/drawable/ic_controller_l2_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_l2_button_pressed.xml new file mode 100644 index 000000000..05fd394f7 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_controller_l2_button_pressed.xml @@ -0,0 +1,28 @@ + + + + + diff --git a/android/app/src/main/res/drawable/ic_controller_r1_button.xml b/android/app/src/main/res/drawable/ic_controller_r1_button.xml new file mode 100644 index 000000000..a95517436 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_controller_r1_button.xml @@ -0,0 +1,28 @@ + + + + + diff --git a/android/app/src/main/res/drawable/ic_controller_r1_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_r1_button_pressed.xml new file mode 100644 index 000000000..05fe52148 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_controller_r1_button_pressed.xml @@ -0,0 +1,28 @@ + + + + + diff --git a/android/app/src/main/res/drawable/ic_controller_r2_button.xml b/android/app/src/main/res/drawable/ic_controller_r2_button.xml new file mode 100644 index 000000000..251b747f9 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_controller_r2_button.xml @@ -0,0 +1,28 @@ + + + + + diff --git a/android/app/src/main/res/drawable/ic_controller_r2_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_r2_button_pressed.xml new file mode 100644 index 000000000..c5fe48ef6 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_controller_r2_button_pressed.xml @@ -0,0 +1,28 @@ + + + + + diff --git a/android/app/src/main/res/drawable/ic_controller_select_button.xml b/android/app/src/main/res/drawable/ic_controller_select_button.xml new file mode 100644 index 000000000..ec850fc8a --- /dev/null +++ b/android/app/src/main/res/drawable/ic_controller_select_button.xml @@ -0,0 +1,14 @@ + + + diff --git a/android/app/src/main/res/drawable/ic_controller_select_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_select_button_pressed.xml new file mode 100644 index 000000000..1f5bd9ca2 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_controller_select_button_pressed.xml @@ -0,0 +1,14 @@ + + + diff --git a/android/app/src/main/res/drawable/ic_controller_start_button.xml b/android/app/src/main/res/drawable/ic_controller_start_button.xml new file mode 100644 index 000000000..e7e5d8ba7 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_controller_start_button.xml @@ -0,0 +1,14 @@ + + + diff --git a/android/app/src/main/res/drawable/ic_controller_start_button_pressed.xml b/android/app/src/main/res/drawable/ic_controller_start_button_pressed.xml new file mode 100644 index 000000000..85f176935 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_controller_start_button_pressed.xml @@ -0,0 +1,14 @@ + + + diff --git a/android/app/src/main/res/layout/layout_touchscreen_controller.xml b/android/app/src/main/res/layout/layout_touchscreen_controller.xml new file mode 100644 index 000000000..e78a82979 --- /dev/null +++ b/android/app/src/main/res/layout/layout_touchscreen_controller.xml @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/values/attrs_touchscreen_controller_button_view.xml b/android/app/src/main/res/values/attrs_touchscreen_controller_button_view.xml new file mode 100644 index 000000000..e9dacf26a --- /dev/null +++ b/android/app/src/main/res/values/attrs_touchscreen_controller_button_view.xml @@ -0,0 +1,6 @@ + + + + + +