From 639fc8a684c91b54d7bba12d14c8f6eed444fdde Mon Sep 17 00:00:00 2001 From: Miranda Kephart Date: Thu, 20 Jan 2022 13:05:57 -0500 Subject: [PATCH] Add dismiss button to clipboard overlay Bug: 195554988 Test: manual Change-Id: I3224461049f070d0fbe4c2fe4f4e50289dc2aa89 --- ...reenshot_border.xml => overlay_border.xml} | 0 ...reenshot_cancel.xml => overlay_cancel.xml} | 0 ...und.xml => overlay_preview_background.xml} | 0 .../res/layout/clipboard_content_preview.xml | 60 -------------- .../SystemUI/res/layout/clipboard_overlay.xml | 81 ++++++++++++++++++- packages/SystemUI/res/layout/screenshot.xml | 2 +- .../SystemUI/res/layout/screenshot_static.xml | 42 +++++----- packages/SystemUI/res/values/dimens.xml | 18 +++-- packages/SystemUI/res/values/strings.xml | 2 + .../ClipboardOverlayController.java | 22 +++-- 10 files changed, 132 insertions(+), 95 deletions(-) rename packages/SystemUI/res/drawable/{screenshot_border.xml => overlay_border.xml} (100%) rename packages/SystemUI/res/drawable/{screenshot_cancel.xml => overlay_cancel.xml} (100%) rename packages/SystemUI/res/drawable/{screenshot_preview_background.xml => overlay_preview_background.xml} (100%) delete mode 100644 packages/SystemUI/res/layout/clipboard_content_preview.xml diff --git a/packages/SystemUI/res/drawable/screenshot_border.xml b/packages/SystemUI/res/drawable/overlay_border.xml similarity index 100% rename from packages/SystemUI/res/drawable/screenshot_border.xml rename to packages/SystemUI/res/drawable/overlay_border.xml diff --git a/packages/SystemUI/res/drawable/screenshot_cancel.xml b/packages/SystemUI/res/drawable/overlay_cancel.xml similarity index 100% rename from packages/SystemUI/res/drawable/screenshot_cancel.xml rename to packages/SystemUI/res/drawable/overlay_cancel.xml diff --git a/packages/SystemUI/res/drawable/screenshot_preview_background.xml b/packages/SystemUI/res/drawable/overlay_preview_background.xml similarity index 100% rename from packages/SystemUI/res/drawable/screenshot_preview_background.xml rename to packages/SystemUI/res/drawable/overlay_preview_background.xml diff --git a/packages/SystemUI/res/layout/clipboard_content_preview.xml b/packages/SystemUI/res/layout/clipboard_content_preview.xml deleted file mode 100644 index 7317a9480001b..0000000000000 --- a/packages/SystemUI/res/layout/clipboard_content_preview.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - diff --git a/packages/SystemUI/res/layout/clipboard_overlay.xml b/packages/SystemUI/res/layout/clipboard_overlay.xml index 76280d816cd90..7ffb3b2358122 100644 --- a/packages/SystemUI/res/layout/clipboard_overlay.xml +++ b/packages/SystemUI/res/layout/clipboard_overlay.xml @@ -17,9 +17,8 @@ + android:layout_height="match_parent"> - + + + + + + + + + + diff --git a/packages/SystemUI/res/layout/screenshot.xml b/packages/SystemUI/res/layout/screenshot.xml index 7c0ee665755ae..227212bd46345 100644 --- a/packages/SystemUI/res/layout/screenshot.xml +++ b/packages/SystemUI/res/layout/screenshot.xml @@ -40,7 +40,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" - android:elevation="@dimen/screenshot_preview_elevation" + android:elevation="@dimen/overlay_preview_elevation" android:src="@android:color/white"/> + app:layout_constraintEnd_toEndOf="@id/screenshot_preview_end" + app:layout_constraintTop_toTopOf="@id/screenshot_preview_top"/> + app:layout_constraintBottom_toBottomOf="@id/screenshot_preview_border" + app:layout_constraintStart_toStartOf="@id/screenshot_preview_border" + app:layout_constraintEnd_toEndOf="@id/screenshot_preview_border" + app:layout_constraintTop_toTopOf="@id/screenshot_preview_border"> + android:layout_margin="@dimen/overlay_dismiss_button_margin" + android:src="@drawable/overlay_cancel"/> + android:elevation="@dimen/overlay_preview_elevation"/> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index b12db5d5f7c27..81c08086561e9 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -261,11 +261,6 @@ 80dp 242dp - 4dp - 8dp - 16dp - 48dp - 8dp 18dp 4dp 8dp @@ -289,6 +284,19 @@ 3dp 8dp + + 8dp + 16dp + 4dp + 7dp + 48dp + 8dp + 4dp + + -4dp + + @dimen/screenshot_x_scale + 70dp diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 08fb2c66e0437..b8e92f1a3336b 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -2354,4 +2354,6 @@ Copy Copied + + Dismiss copy UI diff --git a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java index ae0702c68201a..caf0307d44360 100644 --- a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java +++ b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java @@ -59,6 +59,7 @@ import android.view.View; import android.view.ViewTreeObserver; import android.view.WindowInsets; import android.view.WindowManager; +import android.view.accessibility.AccessibilityManager; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; @@ -91,6 +92,7 @@ public class ClipboardOverlayController { private final WindowManager.LayoutParams mWindowLayoutParams; private final PhoneWindow mWindow; private final TimeoutHandler mTimeoutHandler; + private final AccessibilityManager mAccessibilityManager; private final DraggableConstraintLayout mView; private final ImageView mImagePreview; @@ -98,6 +100,7 @@ public class ClipboardOverlayController { private final ScreenshotActionChip mEditChip; private final ScreenshotActionChip mRemoteCopyChip; private final View mActionContainerBackground; + private final View mDismissButton; private Runnable mOnSessionCompleteListener; @@ -113,6 +116,8 @@ public class ClipboardOverlayController { final Context displayContext = context.createDisplayContext(getDefaultDisplay()); mContext = displayContext.createWindowContext(TYPE_SCREENSHOT, null); + mAccessibilityManager = AccessibilityManager.getInstance(mContext); + mWindowManager = mContext.getSystemService(WindowManager.class); mTimeoutHandler = timeoutHandler; @@ -135,10 +140,13 @@ public class ClipboardOverlayController { mTextPreview = requireNonNull(mView.findViewById(R.id.text_preview)); mEditChip = requireNonNull(mView.findViewById(R.id.edit_chip)); mRemoteCopyChip = requireNonNull(mView.findViewById(R.id.remote_copy_chip)); + mDismissButton = requireNonNull(mView.findViewById(R.id.dismiss_button)); mView.setOnDismissCallback(this::hideImmediate); mView.setOnInteractionCallback(() -> mTimeoutHandler.resetTimeout()); + mDismissButton.setOnClickListener(view -> animateOut()); + mEditChip.setIcon(Icon.createWithResource(mContext, R.drawable.ic_screenshot_edit), true); mRemoteCopyChip.setIcon( Icon.createWithResource(mContext, R.drawable.ic_baseline_devices_24), true); @@ -158,10 +166,10 @@ public class ClipboardOverlayController { withWindowAttached(() -> { mWindow.setContentView(mView); updateInsets(mWindowManager.getCurrentWindowMetrics().getWindowInsets()); - getEnterAnimation().start(); + mView.post(() -> getEnterAnimation().start()); }); - mTimeoutHandler.setOnTimeoutRunnable(() -> animateOut()); + mTimeoutHandler.setOnTimeoutRunnable(this::animateOut); mCloseDialogsReceiver = new BroadcastReceiver() { @Override @@ -226,8 +234,8 @@ public class ClipboardOverlayController { mView.getLocationOnScreen(pt); Rect rect = new Rect(pt[0], pt[1], pt[0] + mView.getWidth(), pt[1] + mView.getHeight()); - if (!rect.contains((int) motionEvent.getRawX(), - (int) motionEvent.getRawY())) { + if (!rect.contains( + (int) motionEvent.getRawX(), (int) motionEvent.getRawY())) { animateOut(); } } @@ -311,11 +319,15 @@ public class ClipboardOverlayController { ValueAnimator anim = ValueAnimator.ofFloat(0, 1); mView.setAlpha(0); + mDismissButton.setVisibility(View.GONE); final View previewBorder = requireNonNull(mView.findViewById(R.id.preview_border)); final View actionBackground = requireNonNull( mView.findViewById(R.id.actions_container_background)); mImagePreview.setVisibility(View.VISIBLE); mActionContainerBackground.setVisibility(View.VISIBLE); + if (mAccessibilityManager.isEnabled()) { + mDismissButton.setVisibility(View.VISIBLE); + } anim.addUpdateListener(animation -> { mView.setAlpha(animation.getAnimatedFraction()); @@ -385,7 +397,7 @@ public class ClipboardOverlayController { private void reset() { mView.setTranslationX(0); - mView.setAlpha(1); + mView.setAlpha(0); mTimeoutHandler.cancelTimeout(); }