From c9e905826bd735438dcd457eed22e2e406c42e57 Mon Sep 17 00:00:00 2001 From: Julian Diggle Date: Tue, 27 Oct 2020 11:59:15 +0000 Subject: [PATCH 1/2] Adde scroll buttons and made the overlay view larger and offset 100px from the top of the screen --- .../debugoverlay/DebugOverlayView.java | 38 ++++++++++++++++-- .../src/main/res/drawable-mdpi/ic_down.png | Bin 0 -> 877 bytes overlay/src/main/res/drawable-mdpi/ic_up.png | Bin 0 -> 897 bytes .../src/main/res/drawable/ic_down_circle.xml | 14 +++++++ .../src/main/res/drawable/ic_up_circle.xml | 14 +++++++ 5 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 overlay/src/main/res/drawable-mdpi/ic_down.png create mode 100644 overlay/src/main/res/drawable-mdpi/ic_up.png create mode 100644 overlay/src/main/res/drawable/ic_down_circle.xml create mode 100644 overlay/src/main/res/drawable/ic_up_circle.xml diff --git a/overlay/src/main/java/com/hannesdorfmann/debugoverlay/DebugOverlayView.java b/overlay/src/main/java/com/hannesdorfmann/debugoverlay/DebugOverlayView.java index df0ba14..3bd2465 100644 --- a/overlay/src/main/java/com/hannesdorfmann/debugoverlay/DebugOverlayView.java +++ b/overlay/src/main/java/com/hannesdorfmann/debugoverlay/DebugOverlayView.java @@ -23,6 +23,8 @@ class DebugOverlayView extends FrameLayout { private ImageView closeButton; + private ImageView upButton; + private ImageView downButton; private WindowManager windowManager; private LoggingAdapter adapter; private ListView listView; @@ -34,16 +36,23 @@ public DebugOverlayView(Context context) { Point windowDimen = new Point(); windowManager.getDefaultDisplay().getSize(windowDimen); - int desiredLayoutHeight = dpToPx(context, 100); - int layoutHeight = desiredLayoutHeight < windowDimen.y ? desiredLayoutHeight : windowDimen.y; + // Use 2/3s of screen height for overlay + int desiredLayoutHeight = windowDimen.y * 2 / 3; + int layoutHeight = Math.min(desiredLayoutHeight, windowDimen.y); // Setup the GUI - // Close Button + // Buttons int buttonHeight = dpToPx(context, 40); closeButton = new ImageView(context); closeButton.setImageResource(R.drawable.ic_close_circle); closeButton.setLayoutParams(new FrameLayout.LayoutParams(buttonHeight, buttonHeight, Gravity.TOP | Gravity.END)); + upButton = new ImageView(context); + upButton.setImageResource(R.drawable.ic_up_circle); + upButton.setLayoutParams(new FrameLayout.LayoutParams(buttonHeight, buttonHeight, Gravity.CENTER | Gravity.END)); + downButton = new ImageView(context); + downButton.setImageResource(R.drawable.ic_down_circle); + downButton.setLayoutParams(new FrameLayout.LayoutParams(buttonHeight, buttonHeight, Gravity.BOTTOM | Gravity.END)); // Logging Console adapter = new LoggingAdapter(context); @@ -60,6 +69,27 @@ public DebugOverlayView(Context context) { // Add views addView(listView); addView(closeButton); + addView(upButton); + addView(downButton); + + upButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + int firstVisiblePosition = listView.getFirstVisiblePosition(); + int lastVisiblePosition = listView.getLastVisiblePosition(); + listView.smoothScrollToPosition(firstVisiblePosition - (lastVisiblePosition - firstVisiblePosition)); + } + } + ); + + downButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + int lastVisiblePosition = listView.getLastVisiblePosition(); + listView.smoothScrollToPosition(lastVisiblePosition+1); + } + } + ); // Set View parameters WindowManager.LayoutParams windowParams; @@ -74,7 +104,7 @@ public DebugOverlayView(Context context) { windowParams.gravity = Gravity.TOP | Gravity.START; windowParams.x = 0; - windowParams.y = windowDimen.y - layoutHeight; + windowParams.y = 100; // Attach and display View windowManager.addView(this, windowParams); diff --git a/overlay/src/main/res/drawable-mdpi/ic_down.png b/overlay/src/main/res/drawable-mdpi/ic_down.png new file mode 100644 index 0000000000000000000000000000000000000000..62266efe9a1197bf43931793edb9edc0876b1179 GIT binary patch literal 877 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|0#YM9(|mmy zw18|51|~)!24;{FAY^FIWMBca85q=nGy?BF#CubedkjTuC zh>{3jAFJg2T)o7U{G?R9irfN_0tTB3D*7iAWdWaj57fXq!y$}cUk zRZ;?31P2gzmSmwpc~!18N&s?Gu|n>^vnt*C%R;m+ryuN;{wbm~-s?-M^>vj<+)MBrq^b9AIEG zXaF;R@{~k7%v<*I=JOZ3@@7`QomZ&Mq~`2(!1?@_C*tY794DeGi!U>pO*Fm47^$6~ zXLUerlbe-7_S3Vz>^EGld9bIf-Lvy0!|W4MFB{fOH8+<{5RO!qov`)Ovt`UVO4&=8 zH-+81!~c?@_K(b;L(z->E#Ck2rhVh_UB$E>h8a3D!Z${ zVAlTZKNAGLUoki(dGGeGs`Ja1leC&49PPBF#CubedkjTuC zh>{3jAFJg2T)o7U{G?R9irfN_0tTB3D*7iAWdWaj57fXq!y$}cUk zRZ;?31P2gzmSm!&Szaepxv^o6qKMnUHx3vIVCg!02D7aI{*Lx literal 0 HcmV?d00001 diff --git a/overlay/src/main/res/drawable/ic_down_circle.xml b/overlay/src/main/res/drawable/ic_down_circle.xml new file mode 100644 index 0000000..6f185e6 --- /dev/null +++ b/overlay/src/main/res/drawable/ic_down_circle.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/overlay/src/main/res/drawable/ic_up_circle.xml b/overlay/src/main/res/drawable/ic_up_circle.xml new file mode 100644 index 0000000..700669c --- /dev/null +++ b/overlay/src/main/res/drawable/ic_up_circle.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file From 4fb1b82a101ec222c60c3c84e1c080d7aa32a174 Mon Sep 17 00:00:00 2001 From: Julian Diggle Date: Tue, 17 Nov 2020 15:31:47 +0000 Subject: [PATCH 2/2] Make overlay window a half the height of the screen, otherwise on some devices you cant use app switcher the kill app --- .../com/hannesdorfmann/debugoverlay/DebugOverlayView.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/overlay/src/main/java/com/hannesdorfmann/debugoverlay/DebugOverlayView.java b/overlay/src/main/java/com/hannesdorfmann/debugoverlay/DebugOverlayView.java index 3bd2465..add049b 100644 --- a/overlay/src/main/java/com/hannesdorfmann/debugoverlay/DebugOverlayView.java +++ b/overlay/src/main/java/com/hannesdorfmann/debugoverlay/DebugOverlayView.java @@ -36,8 +36,8 @@ public DebugOverlayView(Context context) { Point windowDimen = new Point(); windowManager.getDefaultDisplay().getSize(windowDimen); - // Use 2/3s of screen height for overlay - int desiredLayoutHeight = windowDimen.y * 2 / 3; + // Use 1/2 of screen height for overlay + int desiredLayoutHeight = windowDimen.y / 2; int layoutHeight = Math.min(desiredLayoutHeight, windowDimen.y); // Setup the GUI