summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Komsiyski <vladokom@google.com>2023-12-12 10:56:10 +0100
committerVladimir Komsiyski <vladokom@google.com>2023-12-12 11:04:57 +0100
commitfc3d6c6bee940b7d7c37108ee2536a9b62d06810 (patch)
treeacc16f85a68272dc1ba89cb2675159d46e0e8cd3
parent5e832488ac1e3cc8808a3415e2b2de6308bdfafa (diff)
downloaddevelopment-fc3d6c6bee940b7d7c37108ee2536a9b62d06810.tar.gz
VDM Client: Limit the resizing of virtual displays.
Also fix the NPE in SensorDemoActivity. Fix: 314729191 Test: manual Change-Id: I72e28b03d29cab2e86b5c6a14e37675997c8cf78
-rw-r--r--samples/VirtualDeviceManager/client/src/com/example/android/vdmdemo/client/ClientView.java20
-rw-r--r--samples/VirtualDeviceManager/client/src/com/example/android/vdmdemo/client/DisplayAdapter.java19
-rw-r--r--samples/VirtualDeviceManager/demos/src/com/example/android/vdmdemo/demos/SensorDemoActivity.java2
3 files changed, 30 insertions, 11 deletions
diff --git a/samples/VirtualDeviceManager/client/src/com/example/android/vdmdemo/client/ClientView.java b/samples/VirtualDeviceManager/client/src/com/example/android/vdmdemo/client/ClientView.java
index 4844dd30a..0df2587f1 100644
--- a/samples/VirtualDeviceManager/client/src/com/example/android/vdmdemo/client/ClientView.java
+++ b/samples/VirtualDeviceManager/client/src/com/example/android/vdmdemo/client/ClientView.java
@@ -30,6 +30,10 @@ import java.util.function.Consumer;
/** Recycler view that can resize a child dynamically. */
public final class ClientView extends RecyclerView {
+
+ private static final int MIN_SIZE = 100;
+ private int mMaxSize = 0;
+
private boolean mIsResizing = false;
private Consumer<Rect> mResizeDoneCallback = null;
private Drawable mResizingRect = null;
@@ -56,8 +60,10 @@ public final class ClientView extends RecyclerView {
mResizingRect = getContext().getResources().getDrawable(R.drawable.resize_rect, null);
}
- void startResizing(View viewToResize, MotionEvent origin, Consumer<Rect> callback) {
+ void startResizing(View viewToResize, MotionEvent origin, int maxSize,
+ Consumer<Rect> callback) {
mIsResizing = true;
+ mMaxSize = maxSize;
mResizeDoneCallback = callback;
viewToResize.getGlobalVisibleRect(mResizingBounds);
mResizingRect.setBounds(mResizingBounds);
@@ -88,7 +94,19 @@ public final class ClientView extends RecyclerView {
case MotionEvent.ACTION_UP -> stopResizing();
case MotionEvent.ACTION_MOVE -> {
mResizingBounds.right = (int) (ev.getRawX() - mResizeOffsetX);
+ if (mResizingBounds.width() > mMaxSize) {
+ mResizingBounds.right = mResizingBounds.left + mMaxSize;
+ }
+ if (mResizingBounds.width() < MIN_SIZE) {
+ mResizingBounds.right = mResizingBounds.left + MIN_SIZE;
+ }
mResizingBounds.top = (int) (ev.getRawY() - mResizeOffsetY);
+ if (mResizingBounds.height() > mMaxSize) {
+ mResizingBounds.top = mResizingBounds.bottom - mMaxSize;
+ }
+ if (mResizingBounds.height() < MIN_SIZE) {
+ mResizingBounds.top = mResizingBounds.bottom - MIN_SIZE;
+ }
mResizingRect.setBounds(mResizingBounds);
}
}
diff --git a/samples/VirtualDeviceManager/client/src/com/example/android/vdmdemo/client/DisplayAdapter.java b/samples/VirtualDeviceManager/client/src/com/example/android/vdmdemo/client/DisplayAdapter.java
index 00fdac386..e3376cdcf 100644
--- a/samples/VirtualDeviceManager/client/src/com/example/android/vdmdemo/client/DisplayAdapter.java
+++ b/samples/VirtualDeviceManager/client/src/com/example/android/vdmdemo/client/DisplayAdapter.java
@@ -269,15 +269,16 @@ final class DisplayAdapter extends RecyclerView.Adapter<DisplayHolder> {
});
View resizeButton = itemView.findViewById(R.id.display_resize);
- resizeButton.setOnTouchListener(
- (v, event) -> {
- if (event.getAction() == MotionEvent.ACTION_DOWN) {
- mRecyclerView.startResizing(
- mTextureView, event, DisplayHolder.this::resizeDisplay);
- return true;
- }
- return false;
- });
+ resizeButton.setOnTouchListener((v, event) -> {
+ if (event.getAction() != MotionEvent.ACTION_DOWN) {
+ return false;
+ }
+ int maxSize = itemView.getHeight()
+ - itemView.findViewById(R.id.display_header).getHeight();
+ mRecyclerView.startResizing(
+ mTextureView, event, maxSize, DisplayHolder.this::resizeDisplay);
+ return true;
+ });
mTextureView.setOnTouchListener(
(v, event) -> {
diff --git a/samples/VirtualDeviceManager/demos/src/com/example/android/vdmdemo/demos/SensorDemoActivity.java b/samples/VirtualDeviceManager/demos/src/com/example/android/vdmdemo/demos/SensorDemoActivity.java
index a7e52569c..80cde97aa 100644
--- a/samples/VirtualDeviceManager/demos/src/com/example/android/vdmdemo/demos/SensorDemoActivity.java
+++ b/samples/VirtualDeviceManager/demos/src/com/example/android/vdmdemo/demos/SensorDemoActivity.java
@@ -57,7 +57,7 @@ public final class SensorDemoActivity extends AppCompatActivity implements Senso
mVirtualDeviceManager = getSystemService(VirtualDeviceManager.class);
mSensorManager = getSystemService(SensorManager.class);
- mDeviceContext.registerDeviceIdChangeListener(getMainExecutor(), this::changeSensorDevice);
+ registerDeviceIdChangeListener(getMainExecutor(), this::changeSensorDevice);
mDeviceContext = this;
changeSensorDevice(mDeviceContext.getDeviceId());