diff options
| author | 2022-02-02 14:40:06 +0000 | |
|---|---|---|
| committer | 2022-02-02 14:40:06 +0000 | |
| commit | be25183067f41f4d4c5b6579ffd22f95f9290eaa (patch) | |
| tree | 7ee80bac4b2e650dab1ff591f96ccf8b81dacbb0 | |
| parent | 51e42e93068939ea15632cb1ce6aa4dc14c5bf0c (diff) | |
| parent | 2ba829dbebb7afcee5097dfc9063934cf5dfa336 (diff) | |
Merge changes I221089d1,Ie3c7a665
* changes:
Fix clipboard overlay in dark mode and RTL
Rename attrs/files shared between clipboard and screenshots
20 files changed, 149 insertions, 172 deletions
diff --git a/packages/SystemUI/res/drawable/action_chip_background.xml b/packages/SystemUI/res/drawable/action_chip_background.xml index eeff39b7a8fd..745470f4c61a 100644 --- a/packages/SystemUI/res/drawable/action_chip_background.xml +++ b/packages/SystemUI/res/drawable/action_chip_background.xml @@ -17,11 +17,11 @@ <ripple xmlns:android="http://schemas.android.com/apk/res/android" xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" - android:color="@color/screenshot_button_ripple"> + android:color="@color/overlay_button_ripple"> <item android:id="@android:id/background"> <shape android:shape="rectangle"> <solid android:color="?androidprv:attr/colorAccentSecondary"/> - <corners android:radius="@dimen/screenshot_button_corner_radius"/> + <corners android:radius="@dimen/overlay_button_corner_radius"/> </shape> </item> </ripple> diff --git a/packages/SystemUI/res/drawable/action_chip_container_background.xml b/packages/SystemUI/res/drawable/action_chip_container_background.xml index 72767a12bcf5..36083f1f0408 100644 --- a/packages/SystemUI/res/drawable/action_chip_container_background.xml +++ b/packages/SystemUI/res/drawable/action_chip_container_background.xml @@ -19,5 +19,5 @@ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" android:shape="rectangle"> <solid android:color="?androidprv:attr/colorSurface"/> - <corners android:radius="@dimen/screenshot_action_container_corner_radius"/> + <corners android:radius="@dimen/overlay_action_container_corner_radius"/> </shape> diff --git a/packages/SystemUI/res/drawable/screenshot_actions_background_protection.xml b/packages/SystemUI/res/drawable/overlay_actions_background_protection.xml index dd818a068d61..d8f56324566d 100644 --- a/packages/SystemUI/res/drawable/screenshot_actions_background_protection.xml +++ b/packages/SystemUI/res/drawable/overlay_actions_background_protection.xml @@ -17,6 +17,6 @@ <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="90" - android:startColor="@color/screenshot_background_protection_start" + android:startColor="@color/overlay_background_protection_start" android:endColor="#00000000"/> </shape>
\ No newline at end of file diff --git a/packages/SystemUI/res/drawable/screenshot_button_background.xml b/packages/SystemUI/res/drawable/overlay_button_background.xml index 3c39fe2ecb06..3c39fe2ecb06 100644 --- a/packages/SystemUI/res/drawable/screenshot_button_background.xml +++ b/packages/SystemUI/res/drawable/overlay_button_background.xml diff --git a/packages/SystemUI/res/layout/clipboard_overlay.xml b/packages/SystemUI/res/layout/clipboard_overlay.xml index 7e31909613ee..4817d453ba0b 100644 --- a/packages/SystemUI/res/layout/clipboard_overlay.xml +++ b/packages/SystemUI/res/layout/clipboard_overlay.xml @@ -17,7 +17,7 @@ <com.android.systemui.clipboardoverlay.DraggableConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" - android:theme="@style/Screenshot" + android:theme="@style/FloatingOverlay" android:alpha="0" android:layout_width="match_parent" android:layout_height="match_parent"> @@ -28,7 +28,7 @@ android:layout_width="0dp" android:elevation="1dp" android:background="@drawable/action_chip_container_background" - android:layout_marginStart="@dimen/screenshot_action_container_margin_horizontal" + android:layout_marginStart="@dimen/overlay_action_container_margin_horizontal" app:layout_constraintBottom_toBottomOf="@+id/actions_container" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/actions_container" @@ -37,9 +37,9 @@ android:id="@+id/actions_container" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginEnd="@dimen/screenshot_action_container_margin_horizontal" - android:paddingEnd="@dimen/screenshot_action_container_padding_right" - android:paddingVertical="@dimen/screenshot_action_container_padding_vertical" + android:layout_marginEnd="@dimen/overlay_action_container_margin_horizontal" + android:paddingEnd="@dimen/overlay_action_container_padding_right" + android:paddingVertical="@dimen/overlay_action_container_padding_vertical" android:elevation="1dp" android:scrollbars="none" app:layout_constraintHorizontal_bias="0" @@ -53,9 +53,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:animateLayoutChanges="true"> - <include layout="@layout/screenshot_action_chip" + <include layout="@layout/overlay_action_chip" android:id="@+id/remote_copy_chip"/> - <include layout="@layout/screenshot_action_chip" + <include layout="@layout/overlay_action_chip" android:id="@+id/edit_chip"/> </LinearLayout> </HorizontalScrollView> diff --git a/packages/SystemUI/res/layout/long_screenshot.xml b/packages/SystemUI/res/layout/long_screenshot.xml index 856697c5673d..cdf61036e2b7 100644 --- a/packages/SystemUI/res/layout/long_screenshot.xml +++ b/packages/SystemUI/res/layout/long_screenshot.xml @@ -18,7 +18,6 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" - xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" android:background="?android:colorBackgroundFloating" android:id="@+id/root" android:layout_width="match_parent" @@ -32,7 +31,7 @@ android:text="@string/save" android:layout_marginStart="8dp" android:layout_marginTop="@dimen/long_screenshot_action_bar_top_margin" - android:background="@drawable/screenshot_button_background" + android:background="@drawable/overlay_button_background" android:textColor="?android:textColorSecondary" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -46,7 +45,7 @@ android:text="@android:string/cancel" android:layout_marginStart="6dp" android:layout_marginTop="@dimen/long_screenshot_action_bar_top_margin" - android:background="@drawable/screenshot_button_background" + android:background="@drawable/overlay_button_background" android:textColor="?android:textColorSecondary" app:layout_constraintStart_toEndOf="@id/save" app:layout_constraintTop_toTopOf="parent" diff --git a/packages/SystemUI/res/layout/screenshot_action_chip.xml b/packages/SystemUI/res/layout/overlay_action_chip.xml index b80469febf3c..6d2d93124234 100644 --- a/packages/SystemUI/res/layout/screenshot_action_chip.xml +++ b/packages/SystemUI/res/layout/overlay_action_chip.xml @@ -14,33 +14,33 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> -<com.android.systemui.screenshot.ScreenshotActionChip +<com.android.systemui.screenshot.OverlayActionChip xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/screenshot_action_chip" + android:id="@+id/overlay_action_chip" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginStart="@dimen/screenshot_action_chip_margin_start" - android:paddingVertical="@dimen/screenshot_action_chip_margin_vertical" + android:layout_marginStart="@dimen/overlay_action_chip_margin_start" + android:paddingVertical="@dimen/overlay_action_chip_margin_vertical" android:layout_gravity="center" android:gravity="center" android:alpha="0.0"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" - android:paddingVertical="@dimen/screenshot_action_chip_padding_vertical" + android:paddingVertical="@dimen/overlay_action_chip_padding_vertical" android:background="@drawable/action_chip_background" android:gravity="center"> <ImageView - android:id="@+id/screenshot_action_chip_icon" - android:tint="?android:attr/textColorPrimary" - android:layout_width="@dimen/screenshot_action_chip_icon_size" - android:layout_height="@dimen/screenshot_action_chip_icon_size"/> + android:id="@+id/overlay_action_chip_icon" + android:tint="?attr/overlayButtonTextColor" + android:layout_width="@dimen/overlay_action_chip_icon_size" + android:layout_height="@dimen/overlay_action_chip_icon_size"/> <TextView - android:id="@+id/screenshot_action_chip_text" + android:id="@+id/overlay_action_chip_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@*android:string/config_headlineFontFamilyMedium" - android:textSize="@dimen/screenshot_action_chip_text_size" - android:textColor="?android:attr/textColorPrimary"/> + android:textSize="@dimen/overlay_action_chip_text_size" + android:textColor="?attr/overlayButtonTextColor"/> </LinearLayout> -</com.android.systemui.screenshot.ScreenshotActionChip> +</com.android.systemui.screenshot.OverlayActionChip> diff --git a/packages/SystemUI/res/layout/screenshot.xml b/packages/SystemUI/res/layout/screenshot.xml index 227212bd4634..890dbe592fc7 100644 --- a/packages/SystemUI/res/layout/screenshot.xml +++ b/packages/SystemUI/res/layout/screenshot.xml @@ -17,7 +17,7 @@ <com.android.systemui.screenshot.ScreenshotView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/screenshot_frame" - android:theme="@style/Screenshot" + android:theme="@style/FloatingOverlay" android:layout_width="match_parent" android:layout_height="match_parent" android:importantForAccessibility="no"> @@ -30,11 +30,11 @@ android:importantForAccessibility="no"/> <ImageView android:id="@+id/screenshot_actions_background" - android:layout_height="@dimen/screenshot_bg_protection_height" + android:layout_height="@dimen/overlay_bg_protection_height" android:layout_width="match_parent" android:layout_gravity="bottom" android:alpha="0.0" - android:src="@drawable/screenshot_actions_background_protection"/> + android:src="@drawable/overlay_actions_background_protection"/> <ImageView android:id="@+id/screenshot_flash" android:layout_width="match_parent" diff --git a/packages/SystemUI/res/layout/screenshot_static.xml b/packages/SystemUI/res/layout/screenshot_static.xml index 8f791c34419d..813bb6018801 100644 --- a/packages/SystemUI/res/layout/screenshot_static.xml +++ b/packages/SystemUI/res/layout/screenshot_static.xml @@ -26,7 +26,7 @@ android:layout_width="0dp" android:elevation="1dp" android:background="@drawable/action_chip_container_background" - android:layout_marginStart="@dimen/screenshot_action_container_margin_horizontal" + android:layout_marginStart="@dimen/overlay_action_container_margin_horizontal" app:layout_constraintBottom_toBottomOf="@+id/screenshot_actions_container" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/screenshot_actions_container" @@ -35,9 +35,9 @@ android:id="@+id/screenshot_actions_container" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginEnd="@dimen/screenshot_action_container_margin_horizontal" - android:paddingEnd="@dimen/screenshot_action_container_padding_right" - android:paddingVertical="@dimen/screenshot_action_container_padding_vertical" + android:layout_marginEnd="@dimen/overlay_action_container_margin_horizontal" + android:paddingEnd="@dimen/overlay_action_container_padding_right" + android:paddingVertical="@dimen/overlay_action_container_padding_vertical" android:elevation="1dp" android:scrollbars="none" app:layout_constraintHorizontal_bias="0" @@ -50,11 +50,11 @@ android:id="@+id/screenshot_actions" android:layout_width="wrap_content" android:layout_height="wrap_content"> - <include layout="@layout/screenshot_action_chip" + <include layout="@layout/overlay_action_chip" android:id="@+id/screenshot_share_chip"/> - <include layout="@layout/screenshot_action_chip" + <include layout="@layout/overlay_action_chip" android:id="@+id/screenshot_edit_chip"/> - <include layout="@layout/screenshot_action_chip" + <include layout="@layout/overlay_action_chip" android:id="@+id/screenshot_scroll_chip" android:visibility="gone" /> </LinearLayout> @@ -89,7 +89,7 @@ <ImageView android:id="@+id/screenshot_preview" android:visibility="invisible" - android:layout_width="@dimen/screenshot_x_scale" + android:layout_width="@dimen/overlay_x_scale" android:layout_margin="@dimen/overlay_border_width" android:layout_height="wrap_content" android:layout_gravity="center" diff --git a/packages/SystemUI/res/values-night/colors.xml b/packages/SystemUI/res/values-night/colors.xml index 3412722776c2..b318bbc157ca 100644 --- a/packages/SystemUI/res/values-night/colors.xml +++ b/packages/SystemUI/res/values-night/colors.xml @@ -58,9 +58,9 @@ <!-- The color of the text in the Global Actions menu --> <color name="global_actions_alert_text">@color/GM2_red_300</color> - <!-- Global screenshot actions --> - <color name="screenshot_button_ripple">#42FFFFFF</color> - <color name="screenshot_background_protection_start">#80000000</color> <!-- 50% black --> + <!-- Floating overlay actions --> + <color name="overlay_button_ripple">#42FFFFFF</color> + <color name="overlay_background_protection_start">#80000000</color> <!-- 50% black --> <!-- Media --> <color name="media_divider">#85ffffff</color> diff --git a/packages/SystemUI/res/values-night/styles.xml b/packages/SystemUI/res/values-night/styles.xml index 1f815b79ec30..f7261e70a610 100644 --- a/packages/SystemUI/res/values-night/styles.xml +++ b/packages/SystemUI/res/values-night/styles.xml @@ -47,8 +47,8 @@ <item name="android:textColorSecondary">?android:attr/textColorPrimaryInverse</item> </style> - <style name="Screenshot" parent="@android:style/Theme.DeviceDefault.DayNight"> - <item name="android:textColorPrimary">?android:attr/textColorPrimaryInverse</item> + <style name="FloatingOverlay" parent="@android:style/Theme.DeviceDefault.DayNight"> + <item name="overlayButtonTextColor">?android:attr/textColorPrimaryInverse</item> </style> <style name="Theme.PeopleTileConfigActivity" parent="@style/Theme.SystemUI"> diff --git a/packages/SystemUI/res/values/attrs.xml b/packages/SystemUI/res/values/attrs.xml index de136de9dd5f..e6ab0ff9bd73 100644 --- a/packages/SystemUI/res/values/attrs.xml +++ b/packages/SystemUI/res/values/attrs.xml @@ -204,5 +204,7 @@ <attr name="singleLineVerticalPadding" format="dimension" /> <attr name="textViewId" format="reference" /> </declare-styleable> + + <attr name="overlayButtonTextColor" format="color" /> </resources> diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml index 81e3e04b279e..3ab569a19c0c 100644 --- a/packages/SystemUI/res/values/colors.xml +++ b/packages/SystemUI/res/values/colors.xml @@ -138,9 +138,9 @@ <color name="udfps_enroll_progress">#7DA7F1</color> <color name="udfps_enroll_progress_help">#ffEE675C</color> - <!-- Global screenshot actions --> - <color name="screenshot_button_ripple">#1f000000</color> - <color name="screenshot_background_protection_start">#40000000</color> <!-- 25% black --> + <!-- Floating overlay actions --> + <color name="overlay_button_ripple">#1f000000</color> + <color name="overlay_background_protection_start">#40000000</color> <!-- 25% black --> <!-- GM2 colors --> <color name="GM2_grey_100">#F1F3F4</color> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index bba616fe24a2..74bb9e45a6f2 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -258,36 +258,36 @@ <!-- Dimensions related to screenshots --> - <!-- The padding on the global screenshot background image --> - <dimen name="screenshot_x_scale">80dp</dimen> - <dimen name="screenshot_bg_protection_height">242dp</dimen> - <dimen name="screenshot_action_container_corner_radius">18dp</dimen> - <dimen name="screenshot_action_container_padding_vertical">4dp</dimen> - <dimen name="screenshot_action_container_margin_horizontal">8dp</dimen> - <dimen name="screenshot_action_container_padding_right">8dp</dimen> - <!-- Radius of the chip background on global screenshot actions --> - <dimen name="screenshot_button_corner_radius">8dp</dimen> + + <dimen name="screenshot_crop_handle_thickness">3dp</dimen> + <dimen name="long_screenshot_action_bar_top_margin">8dp</dimen> + + <!-- Dimensions shared between "overlays" (clipboard and screenshot preview UIs) --> + <!-- Constrained size of the floating overlay preview --> + <dimen name="overlay_x_scale">80dp</dimen> + <!-- Radius of the chip background on floating overlay actions --> + <dimen name="overlay_button_corner_radius">8dp</dimen> <!-- Margin between successive chips --> - <dimen name="screenshot_action_chip_margin_start">8dp</dimen> + <dimen name="overlay_action_chip_margin_start">8dp</dimen> <!-- Padding to make tappable chip height 48dp (18+11+11+4+4) --> - <dimen name="screenshot_action_chip_margin_vertical">4dp</dimen> - <dimen name="screenshot_action_chip_padding_vertical">11dp</dimen> - <dimen name="screenshot_action_chip_icon_size">18sp</dimen> + <dimen name="overlay_action_chip_margin_vertical">4dp</dimen> + <dimen name="overlay_action_chip_padding_vertical">11dp</dimen> + <dimen name="overlay_action_chip_icon_size">18sp</dimen> <!-- Padding on each side of the icon for icon-only chips --> - <dimen name="screenshot_action_chip_icon_only_padding_horizontal">14dp</dimen> + <dimen name="overlay_action_chip_icon_only_padding_horizontal">14dp</dimen> <!-- Padding at the edges of the chip for icon-and-text chips --> - <dimen name="screenshot_action_chip_padding_horizontal">12dp</dimen> + <dimen name="overlay_action_chip_padding_horizontal">12dp</dimen> <!-- Spacing between chip icon and chip text --> - <dimen name="screenshot_action_chip_spacing">8dp</dimen> - <dimen name="screenshot_action_chip_text_size">14sp</dimen> - <dimen name="screenshot_dismissal_height_delta">80dp</dimen> - <dimen name="screenshot_crop_handle_thickness">3dp</dimen> - <dimen name="long_screenshot_action_bar_top_margin">8dp</dimen> - - <!-- Dimensions shared between "overlays" (clipboard and screenshot preview UIs) --> + <dimen name="overlay_action_chip_spacing">8dp</dimen> + <dimen name="overlay_action_chip_text_size">14sp</dimen> <dimen name="overlay_offset_y">8dp</dimen> <dimen name="overlay_offset_x">16dp</dimen> <dimen name="overlay_preview_elevation">4dp</dimen> + <dimen name="overlay_action_container_margin_horizontal">8dp</dimen> + <dimen name="overlay_bg_protection_height">242dp</dimen> + <dimen name="overlay_action_container_corner_radius">18dp</dimen> + <dimen name="overlay_action_container_padding_vertical">4dp</dimen> + <dimen name="overlay_action_container_padding_right">8dp</dimen> <dimen name="overlay_dismiss_button_elevation">7dp</dimen> <dimen name="overlay_dismiss_button_tappable_size">48dp</dimen> <dimen name="overlay_dismiss_button_margin">8dp</dimen> @@ -295,7 +295,7 @@ <!-- need a negative margin for some of the constraints. should be overlay_border_width * -1 --> <dimen name="overlay_border_width_neg">-4dp</dimen> - <dimen name="clipboard_preview_size">@dimen/screenshot_x_scale</dimen> + <dimen name="clipboard_preview_size">@dimen/overlay_x_scale</dimen> <!-- The width of the view containing navigation buttons --> diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index 34f5848d3105..590cc9b4eb0a 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -707,7 +707,9 @@ <item name="android:windowActivityTransitions">true</item> </style> - <style name="Screenshot" parent="@android:style/Theme.DeviceDefault.DayNight"/> + <style name="FloatingOverlay" parent="@android:style/Theme.DeviceDefault.DayNight"> + <item name="overlayButtonTextColor">?android:attr/textColorPrimary</item> + </style> <!-- Clipboard overlay's edit text activity. --> <style name="EditTextActivity" parent="@android:style/Theme.DeviceDefault.DayNight"> diff --git a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java index 12759f489a26..8b549b43019f 100644 --- a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java +++ b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java @@ -74,7 +74,7 @@ import android.widget.TextView; import com.android.internal.policy.PhoneWindow; import com.android.systemui.R; import com.android.systemui.screenshot.FloatingWindowUtil; -import com.android.systemui.screenshot.ScreenshotActionChip; +import com.android.systemui.screenshot.OverlayActionChip; import com.android.systemui.screenshot.TimeoutHandler; import java.io.IOException; @@ -106,12 +106,12 @@ public class ClipboardOverlayController { private final DraggableConstraintLayout mView; private final ImageView mImagePreview; private final TextView mTextPreview; - private final ScreenshotActionChip mEditChip; - private final ScreenshotActionChip mRemoteCopyChip; + private final OverlayActionChip mEditChip; + private final OverlayActionChip mRemoteCopyChip; private final View mActionContainerBackground; private final View mDismissButton; private final LinearLayout mActionContainer; - private final ArrayList<ScreenshotActionChip> mActionChips = new ArrayList<>(); + private final ArrayList<OverlayActionChip> mActionChips = new ArrayList<>(); private Runnable mOnSessionCompleteListener; @@ -251,7 +251,7 @@ public class ClipboardOverlayController { for (RemoteAction action : actions) { Intent targetIntent = action.getActionIntent().getIntent(); if (!TextUtils.equals(source, targetIntent.getComponent().getPackageName())) { - ScreenshotActionChip chip = constructActionChip(action); + OverlayActionChip chip = constructActionChip(action); mActionContainer.addView(chip); mActionChips.add(chip); } @@ -259,9 +259,9 @@ public class ClipboardOverlayController { }); } - private ScreenshotActionChip constructActionChip(RemoteAction action) { - ScreenshotActionChip chip = (ScreenshotActionChip) LayoutInflater.from(mContext).inflate( - R.layout.screenshot_action_chip, mActionContainer, false); + private OverlayActionChip constructActionChip(RemoteAction action) { + OverlayActionChip chip = (OverlayActionChip) LayoutInflater.from(mContext).inflate( + R.layout.overlay_action_chip, mActionContainer, false); chip.setText(action.getTitle()); chip.setIcon(action.getIcon(), false); chip.setPendingIntent(action.getActionIntent(), this::animateOut); @@ -341,7 +341,7 @@ public class ClipboardOverlayController { mEditChip.setAlpha(1f); ContentResolver resolver = mContext.getContentResolver(); try { - int size = mContext.getResources().getDimensionPixelSize(R.dimen.screenshot_x_scale); + int size = mContext.getResources().getDimensionPixelSize(R.dimen.overlay_x_scale); // The width of the view is capped, height maintains aspect ratio, so allow it to be // taller if needed. Bitmap thumbnail = resolver.loadThumbnail(uri, new Size(size, size * 4), null); @@ -365,7 +365,7 @@ public class ClipboardOverlayController { } private void animateOut() { - getExitAnimation().start(); + mView.dismiss(); } private ValueAnimator getEnterAnimation() { @@ -401,28 +401,6 @@ public class ClipboardOverlayController { return anim; } - private ValueAnimator getExitAnimation() { - ValueAnimator anim = ValueAnimator.ofFloat(0, 1); - - anim.addUpdateListener(animation -> { - mView.setAlpha(1 - animation.getAnimatedFraction()); - final View actionBackground = requireNonNull( - mView.findViewById(R.id.actions_container_background)); - mView.setTranslationX( - -animation.getAnimatedFraction() * actionBackground.getWidth() / 2); - }); - - anim.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - super.onAnimationEnd(animation); - hideImmediate(); - } - }); - - return anim; - } - private void hideImmediate() { // Note this may be called multiple times if multiple dismissal events happen at the same // time. @@ -453,7 +431,7 @@ public class ClipboardOverlayController { } private void resetActionChips() { - for (ScreenshotActionChip chip : mActionChips) { + for (OverlayActionChip chip : mActionChips) { mActionContainer.removeView(chip); } mActionChips.clear(); diff --git a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/DraggableConstraintLayout.java b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/DraggableConstraintLayout.java index 6a4be6ee5eae..8843462413b5 100644 --- a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/DraggableConstraintLayout.java +++ b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/DraggableConstraintLayout.java @@ -98,10 +98,23 @@ public class DraggableConstraintLayout extends ConstraintLayout { return mSwipeDetector.onTouchEvent(ev); } + /** + * Dismiss the view, with animation controlled by SwipeDismissHandler + */ + public void dismiss() { + mSwipeDismissHandler.dismiss(); + } + + /** + * Set the callback to be run after view is dismissed + */ public void setOnDismissCallback(Runnable callback) { mOnDismiss = callback; } + /** + * Set the callback to be run when the view is interacted with (e.g. tapped) + */ public void setOnInteractionCallback(Runnable callback) { mOnInteraction = callback; } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotActionChip.java b/packages/SystemUI/src/com/android/systemui/screenshot/OverlayActionChip.java index dec5afdaccfe..c4ea67e0f79e 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotActionChip.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/OverlayActionChip.java @@ -16,6 +16,8 @@ package com.android.systemui.screenshot; +import static java.util.Objects.requireNonNull; + import android.app.PendingIntent; import android.content.Context; import android.graphics.drawable.Icon; @@ -28,10 +30,11 @@ import android.widget.TextView; import com.android.systemui.R; + /** * View for a chip with an icon and text. */ -public class ScreenshotActionChip extends FrameLayout { +public class OverlayActionChip extends FrameLayout { private static final String TAG = "ScreenshotActionChip"; @@ -39,27 +42,27 @@ public class ScreenshotActionChip extends FrameLayout { private TextView mTextView; private boolean mIsPending = false; - public ScreenshotActionChip(Context context) { + public OverlayActionChip(Context context) { this(context, null); } - public ScreenshotActionChip(Context context, AttributeSet attrs) { + public OverlayActionChip(Context context, AttributeSet attrs) { this(context, attrs, 0); } - public ScreenshotActionChip(Context context, AttributeSet attrs, int defStyleAttr) { + public OverlayActionChip(Context context, AttributeSet attrs, int defStyleAttr) { this(context, attrs, defStyleAttr, 0); } - public ScreenshotActionChip( + public OverlayActionChip( Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onFinishInflate() { - mIconView = findViewById(R.id.screenshot_action_chip_icon); - mTextView = findViewById(R.id.screenshot_action_chip_text); + mIconView = requireNonNull(findViewById(R.id.overlay_action_chip_icon)); + mTextView = requireNonNull(findViewById(R.id.overlay_action_chip_text)); updatePadding(mTextView.getText().length() > 0); } @@ -116,15 +119,15 @@ public class ScreenshotActionChip extends FrameLayout { (LinearLayout.LayoutParams) mTextView.getLayoutParams(); if (hasText) { int paddingHorizontal = mContext.getResources().getDimensionPixelSize( - R.dimen.screenshot_action_chip_padding_horizontal); + R.dimen.overlay_action_chip_padding_horizontal); int spacing = mContext.getResources().getDimensionPixelSize( - R.dimen.screenshot_action_chip_spacing); + R.dimen.overlay_action_chip_spacing); iconParams.setMarginStart(paddingHorizontal); iconParams.setMarginEnd(spacing); textParams.setMarginEnd(paddingHorizontal); } else { int paddingHorizontal = mContext.getResources().getDimensionPixelSize( - R.dimen.screenshot_action_chip_icon_only_padding_horizontal); + R.dimen.overlay_action_chip_icon_only_padding_horizontal); iconParams.setMarginStart(paddingHorizontal); iconParams.setMarginEnd(paddingHorizontal); } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java index e5649a126807..f9827905b69a 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java @@ -131,9 +131,9 @@ public class ScreenshotView extends FrameLayout implements private final Resources mResources; private final Interpolator mFastOutSlowIn; private final DisplayMetrics mDisplayMetrics; - private final float mCornerSizeX; - private final float mDismissDeltaY; + private final float mFixedSize; private final AccessibilityManager mAccessibilityManager; + private final GestureDetector mSwipeDetector; private int mNavMode; private boolean mOrientationPortrait; @@ -151,23 +151,21 @@ public class ScreenshotView extends FrameLayout implements private LinearLayout mActionsView; private ImageView mBackgroundProtection; private FrameLayout mDismissButton; - private ScreenshotActionChip mShareChip; - private ScreenshotActionChip mEditChip; - private ScreenshotActionChip mScrollChip; - private ScreenshotActionChip mQuickShareChip; + private OverlayActionChip mShareChip; + private OverlayActionChip mEditChip; + private OverlayActionChip mScrollChip; + private OverlayActionChip mQuickShareChip; private UiEventLogger mUiEventLogger; private ScreenshotViewCallback mCallbacks; - private Animator mDismissAnimation; private boolean mPendingSharedTransition; - private GestureDetector mSwipeDetector; private SwipeDismissHandler mSwipeDismissHandler; private InputMonitorCompat mInputMonitor; private InputChannelCompat.InputEventReceiver mInputEventReceiver; private boolean mShowScrollablePreview; private String mPackageName = ""; - private final ArrayList<ScreenshotActionChip> mSmartChips = new ArrayList<>(); + private final ArrayList<OverlayActionChip> mSmartChips = new ArrayList<>(); private PendingInteraction mPendingInteraction; private enum PendingInteraction { @@ -194,9 +192,7 @@ public class ScreenshotView extends FrameLayout implements super(context, attrs, defStyleAttr, defStyleRes); mResources = mContext.getResources(); - mCornerSizeX = mResources.getDimensionPixelSize(R.dimen.screenshot_x_scale); - mDismissDeltaY = mResources.getDimensionPixelSize( - R.dimen.screenshot_dismissal_height_delta); + mFixedSize = mResources.getDimensionPixelSize(R.dimen.overlay_x_scale); // standard material ease mFastOutSlowIn = @@ -474,16 +470,14 @@ public class ScreenshotView extends FrameLayout implements int orientation = mContext.getResources().getConfiguration().orientation; mOrientationPortrait = (orientation == ORIENTATION_PORTRAIT); updateInsets(insets); - int screenshotFixedSize = - mContext.getResources().getDimensionPixelSize(R.dimen.screenshot_x_scale); ViewGroup.LayoutParams params = mScreenshotPreview.getLayoutParams(); if (mOrientationPortrait) { - params.width = screenshotFixedSize; + params.width = (int) mFixedSize; params.height = LayoutParams.WRAP_CONTENT; mScreenshotPreview.setScaleType(ImageView.ScaleType.FIT_START); } else { params.width = LayoutParams.WRAP_CONTENT; - params.height = screenshotFixedSize; + params.height = (int) mFixedSize; mScreenshotPreview.setScaleType(ImageView.ScaleType.FIT_END); } @@ -500,7 +494,7 @@ public class ScreenshotView extends FrameLayout implements // ratio of preview width, end vs. start size float cornerScale = - mCornerSizeX / (mOrientationPortrait ? bounds.width() : bounds.height()); + mFixedSize / (mOrientationPortrait ? bounds.width() : bounds.height()); final float currentScale = 1 / cornerScale; AnimatorSet dropInAnimation = new AnimatorSet(); @@ -651,7 +645,7 @@ public class ScreenshotView extends FrameLayout implements } catch (RemoteException e) { } - ArrayList<ScreenshotActionChip> chips = new ArrayList<>(); + ArrayList<OverlayActionChip> chips = new ArrayList<>(); mShareChip.setContentDescription(mContext.getString(R.string.screenshot_share_description)); mShareChip.setIcon(Icon.createWithResource(mContext, R.drawable.ic_screenshot_share), true); @@ -716,7 +710,7 @@ public class ScreenshotView extends FrameLayout implements + (t * (1 - SCREENSHOT_ACTIONS_START_SCALE_X)); mActionsContainer.setScaleX(containerScale); mActionsContainerBackground.setScaleX(containerScale); - for (ScreenshotActionChip chip : chips) { + for (OverlayActionChip chip : chips) { chip.setAlpha(t); chip.setScaleX(1 / containerScale); // invert to keep size of children constant } @@ -772,8 +766,8 @@ public class ScreenshotView extends FrameLayout implements LayoutInflater inflater = LayoutInflater.from(mContext); for (Notification.Action smartAction : imageData.smartActions) { - ScreenshotActionChip actionChip = (ScreenshotActionChip) inflater.inflate( - R.layout.screenshot_action_chip, mActionsView, false); + OverlayActionChip actionChip = (OverlayActionChip) inflater.inflate( + R.layout.overlay_action_chip, mActionsView, false); actionChip.setText(smartAction.title); actionChip.setIcon(smartAction.getIcon(), false); actionChip.setPendingIntent(smartAction.actionIntent, @@ -792,8 +786,8 @@ public class ScreenshotView extends FrameLayout implements void addQuickShareChip(Notification.Action quickShareAction) { if (mPendingInteraction == null) { LayoutInflater inflater = LayoutInflater.from(mContext); - mQuickShareChip = (ScreenshotActionChip) inflater.inflate( - R.layout.screenshot_action_chip, mActionsView, false); + mQuickShareChip = (OverlayActionChip) inflater.inflate( + R.layout.overlay_action_chip, mActionsView, false); mQuickShareChip.setText(quickShareAction.title); mQuickShareChip.setIcon(quickShareAction.getIcon(), false); mQuickShareChip.setOnClickListener(v -> { @@ -894,7 +888,7 @@ public class ScreenshotView extends FrameLayout implements if (mShowScrollablePreview) { Rect scrollableArea = scrollableAreaOnScreen(response); - float scale = mCornerSizeX + float scale = mFixedSize / (mOrientationPortrait ? screenBitmap.getWidth() : screenBitmap.getHeight()); ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) mScrollablePreview.getLayoutParams(); @@ -945,7 +939,7 @@ public class ScreenshotView extends FrameLayout implements } boolean isDismissing() { - return (mDismissAnimation != null && mDismissAnimation.isRunning()); + return mSwipeDismissHandler.isDismissing(); } boolean isPendingSharedTransition() { @@ -961,12 +955,6 @@ public class ScreenshotView extends FrameLayout implements Log.d(TAG, "reset screenshot view"); } - if (mDismissAnimation != null && mDismissAnimation.isRunning()) { - if (DEBUG_ANIM) { - Log.d(TAG, "cancelling dismiss animation"); - } - mDismissAnimation.cancel(); - } mSwipeDismissHandler.cancel(); if (DEBUG_WINDOW) { Log.d(TAG, "removing OnComputeInternalInsetsListener"); @@ -994,7 +982,7 @@ public class ScreenshotView extends FrameLayout implements mShareChip.setIsPending(false); mEditChip.setIsPending(false); mPendingInteraction = null; - for (ScreenshotActionChip chip : mSmartChips) { + for (OverlayActionChip chip : mSmartChips) { mActionsView.removeView(chip); } mSmartChips.clear(); @@ -1019,31 +1007,6 @@ public class ScreenshotView extends FrameLayout implements } } - private AnimatorSet createScreenshotTranslateDismissAnimation() { - ValueAnimator alphaAnim = ValueAnimator.ofFloat(0, 1); - alphaAnim.setStartDelay(SCREENSHOT_DISMISS_ALPHA_OFFSET_MS); - alphaAnim.setDuration(SCREENSHOT_DISMISS_ALPHA_DURATION_MS); - alphaAnim.addUpdateListener(animation -> { - setAlpha(1 - animation.getAnimatedFraction()); - }); - - ValueAnimator xAnim = ValueAnimator.ofFloat(0, 1); - xAnim.setInterpolator(mAccelerateInterpolator); - xAnim.setDuration(SCREENSHOT_DISMISS_X_DURATION_MS); - float deltaX = mDirectionLTR - ? -1 * (mScreenshotPreviewBorder.getX() + mScreenshotPreviewBorder.getWidth()) - : (mDisplayMetrics.widthPixels - mScreenshotPreviewBorder.getX()); - xAnim.addUpdateListener(animation -> { - float currXDelta = MathUtils.lerp(0, deltaX, animation.getAnimatedFraction()); - mScreenshotStatic.setTranslationX(currXDelta); - }); - - AnimatorSet animSet = new AnimatorSet(); - animSet.play(xAnim).with(alphaAnim); - - return animSet; - } - ValueAnimator createScreenshotFadeDismissAnimation() { ValueAnimator alphaAnim = ValueAnimator.ofFloat(0, 1); alphaAnim.addUpdateListener(animation -> { diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/SwipeDismissHandler.java b/packages/SystemUI/src/com/android/systemui/screenshot/SwipeDismissHandler.java index 4e960037bb7b..451fb1311ebb 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/SwipeDismissHandler.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/SwipeDismissHandler.java @@ -16,6 +16,7 @@ package com.android.systemui.screenshot; +import static com.android.systemui.screenshot.LogConfig.DEBUG_ANIM; import static com.android.systemui.screenshot.LogConfig.DEBUG_DISMISS; import android.animation.Animator; @@ -137,10 +138,20 @@ public class SwipeDismissHandler implements View.OnTouchListener { } /** + * Return whether the view is currently being dismissed + */ + public boolean isDismissing() { + return (mDismissAnimation != null && mDismissAnimation.isRunning()); + } + + /** * Cancel the currently-running dismissal animation, if any. */ public void cancel() { - if (mDismissAnimation != null && mDismissAnimation.isRunning()) { + if (isDismissing()) { + if (DEBUG_ANIM) { + Log.d(TAG, "cancelling dismiss animation"); + } mDismissAnimation.cancel(); } } @@ -182,7 +193,13 @@ public class SwipeDismissHandler implements View.OnTouchListener { // make sure the UI gets all the way off the screen in the direction of movement // (the actions container background is guaranteed to be both the leftmost and // rightmost UI element in LTR and RTL) - float finalX = startX <= 0 ? -1 * mView.getRight() : mDisplayMetrics.widthPixels; + float finalX; + int layoutDir = mView.getContext().getResources().getConfiguration().getLayoutDirection(); + if (startX > 0 || (startX == 0 && layoutDir == View.LAYOUT_DIRECTION_RTL)) { + finalX = mDisplayMetrics.widthPixels; + } else { + finalX = -1 * mView.getRight(); + } float distance = Math.abs(finalX - startX); anim.addUpdateListener(animation -> { |