Loading packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java +1 −1 Original line number Diff line number Diff line Loading @@ -166,7 +166,7 @@ public class ClipboardOverlayController { mRemoteCopyChip = requireNonNull(mView.findViewById(R.id.remote_copy_chip)); mDismissButton = requireNonNull(mView.findViewById(R.id.dismiss_button)); mView.setOnDismissCallback(this::hideImmediate); mView.setOnDismissEndCallback(this::hideImmediate); mView.setOnInteractionCallback(mTimeoutHandler::resetTimeout); mDismissButton.setOnClickListener(view -> animateOut()); Loading packages/SystemUI/src/com/android/systemui/clipboardoverlay/DraggableConstraintLayout.java +25 −6 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.clipboardoverlay; import android.animation.Animator; import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; Loading @@ -28,13 +29,16 @@ import androidx.constraintlayout.widget.ConstraintLayout; import com.android.systemui.R; import com.android.systemui.screenshot.SwipeDismissHandler; import java.util.function.Consumer; /** * ConstraintLayout that is draggable when touched in a specific region */ public class DraggableConstraintLayout extends ConstraintLayout { private final SwipeDismissHandler mSwipeDismissHandler; private final GestureDetector mSwipeDetector; private Runnable mOnDismiss; private Consumer<Animator> mOnDismissInitiated; private Runnable mOnDismissComplete; private Runnable mOnInteraction; public DraggableConstraintLayout(Context context) { Loading @@ -58,9 +62,16 @@ public class DraggableConstraintLayout extends ConstraintLayout { } @Override public void onDismiss() { if (mOnDismiss != null) { mOnDismiss.run(); public void onSwipeDismissInitiated(Animator animator) { if (mOnDismissInitiated != null) { mOnDismissInitiated.accept(animator); } } @Override public void onDismissComplete() { if (mOnDismissComplete != null) { mOnDismissComplete.run(); } } }); Loading Loading @@ -105,11 +116,19 @@ public class DraggableConstraintLayout extends ConstraintLayout { mSwipeDismissHandler.dismiss(); } /** * Set the callback to be run after view is dismissed (before animation; receives animator as * input) */ public void setOnDismissStartCallback(Consumer<Animator> callback) { mOnDismissInitiated = callback; } /** * Set the callback to be run after view is dismissed */ public void setOnDismissCallback(Runnable callback) { mOnDismiss = callback; public void setOnDismissEndCallback(Runnable callback) { mOnDismissComplete = callback; } /** Loading packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java +5 −1 Original line number Diff line number Diff line Loading @@ -403,12 +403,16 @@ public class ScreenshotView extends FrameLayout implements } @Override public void onDismiss() { public void onSwipeDismissInitiated(Animator animator) { if (DEBUG_DISMISS) { Log.d(ScreenshotView.TAG, "dismiss triggered via swipe gesture"); } mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SWIPE_DISMISSED, 0, mPackageName); } @Override public void onDismissComplete() { mCallbacks.onDismiss(); } }); Loading packages/SystemUI/src/com/android/systemui/screenshot/SwipeDismissHandler.java +17 −7 Original line number Diff line number Diff line Loading @@ -48,10 +48,15 @@ public class SwipeDismissHandler implements View.OnTouchListener { */ void onInteraction(); /** * Run when the view is dismissed (the distance threshold is met), pre-dismissal animation */ void onSwipeDismissInitiated(Animator animator); /** * Run when the view is dismissed (the distance threshold is met), post-dismissal animation */ void onDismiss(); void onDismissComplete(); } private final View mView; Loading Loading @@ -89,7 +94,9 @@ public class SwipeDismissHandler implements View.OnTouchListener { return true; } if (isPastDismissThreshold()) { dismiss(); ValueAnimator dismissAnimator = createSwipeDismissAnimation(1); mCallbacks.onSwipeDismissInitiated(dismissAnimator); dismiss(dismissAnimator); } else { // if we've moved, but not past the threshold, start the return animation if (DEBUG_DISMISS) { Loading Loading @@ -117,7 +124,10 @@ public class SwipeDismissHandler implements View.OnTouchListener { float velocityY) { if (mView.getTranslationX() * velocityX > 0 && (mDismissAnimation == null || !mDismissAnimation.isRunning())) { dismiss(velocityX / (float) 1000); ValueAnimator dismissAnimator = createSwipeDismissAnimation(velocityX / (float) 1000); mCallbacks.onSwipeDismissInitiated(dismissAnimator); dismiss(dismissAnimator); return true; } return false; Loading Loading @@ -160,11 +170,11 @@ public class SwipeDismissHandler implements View.OnTouchListener { * Start dismissal animation (will run onDismiss callback when animation complete) */ public void dismiss() { dismiss(1); dismiss(createSwipeDismissAnimation(1)); } private void dismiss(float velocity) { mDismissAnimation = createSwipeDismissAnimation(velocity); private void dismiss(ValueAnimator animator) { mDismissAnimation = animator; mDismissAnimation.addListener(new AnimatorListenerAdapter() { private boolean mCancelled; Loading @@ -178,7 +188,7 @@ public class SwipeDismissHandler implements View.OnTouchListener { public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); if (!mCancelled) { mCallbacks.onDismiss(); mCallbacks.onDismissComplete(); } } }); Loading Loading
packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java +1 −1 Original line number Diff line number Diff line Loading @@ -166,7 +166,7 @@ public class ClipboardOverlayController { mRemoteCopyChip = requireNonNull(mView.findViewById(R.id.remote_copy_chip)); mDismissButton = requireNonNull(mView.findViewById(R.id.dismiss_button)); mView.setOnDismissCallback(this::hideImmediate); mView.setOnDismissEndCallback(this::hideImmediate); mView.setOnInteractionCallback(mTimeoutHandler::resetTimeout); mDismissButton.setOnClickListener(view -> animateOut()); Loading
packages/SystemUI/src/com/android/systemui/clipboardoverlay/DraggableConstraintLayout.java +25 −6 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.clipboardoverlay; import android.animation.Animator; import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; Loading @@ -28,13 +29,16 @@ import androidx.constraintlayout.widget.ConstraintLayout; import com.android.systemui.R; import com.android.systemui.screenshot.SwipeDismissHandler; import java.util.function.Consumer; /** * ConstraintLayout that is draggable when touched in a specific region */ public class DraggableConstraintLayout extends ConstraintLayout { private final SwipeDismissHandler mSwipeDismissHandler; private final GestureDetector mSwipeDetector; private Runnable mOnDismiss; private Consumer<Animator> mOnDismissInitiated; private Runnable mOnDismissComplete; private Runnable mOnInteraction; public DraggableConstraintLayout(Context context) { Loading @@ -58,9 +62,16 @@ public class DraggableConstraintLayout extends ConstraintLayout { } @Override public void onDismiss() { if (mOnDismiss != null) { mOnDismiss.run(); public void onSwipeDismissInitiated(Animator animator) { if (mOnDismissInitiated != null) { mOnDismissInitiated.accept(animator); } } @Override public void onDismissComplete() { if (mOnDismissComplete != null) { mOnDismissComplete.run(); } } }); Loading Loading @@ -105,11 +116,19 @@ public class DraggableConstraintLayout extends ConstraintLayout { mSwipeDismissHandler.dismiss(); } /** * Set the callback to be run after view is dismissed (before animation; receives animator as * input) */ public void setOnDismissStartCallback(Consumer<Animator> callback) { mOnDismissInitiated = callback; } /** * Set the callback to be run after view is dismissed */ public void setOnDismissCallback(Runnable callback) { mOnDismiss = callback; public void setOnDismissEndCallback(Runnable callback) { mOnDismissComplete = callback; } /** Loading
packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java +5 −1 Original line number Diff line number Diff line Loading @@ -403,12 +403,16 @@ public class ScreenshotView extends FrameLayout implements } @Override public void onDismiss() { public void onSwipeDismissInitiated(Animator animator) { if (DEBUG_DISMISS) { Log.d(ScreenshotView.TAG, "dismiss triggered via swipe gesture"); } mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SWIPE_DISMISSED, 0, mPackageName); } @Override public void onDismissComplete() { mCallbacks.onDismiss(); } }); Loading
packages/SystemUI/src/com/android/systemui/screenshot/SwipeDismissHandler.java +17 −7 Original line number Diff line number Diff line Loading @@ -48,10 +48,15 @@ public class SwipeDismissHandler implements View.OnTouchListener { */ void onInteraction(); /** * Run when the view is dismissed (the distance threshold is met), pre-dismissal animation */ void onSwipeDismissInitiated(Animator animator); /** * Run when the view is dismissed (the distance threshold is met), post-dismissal animation */ void onDismiss(); void onDismissComplete(); } private final View mView; Loading Loading @@ -89,7 +94,9 @@ public class SwipeDismissHandler implements View.OnTouchListener { return true; } if (isPastDismissThreshold()) { dismiss(); ValueAnimator dismissAnimator = createSwipeDismissAnimation(1); mCallbacks.onSwipeDismissInitiated(dismissAnimator); dismiss(dismissAnimator); } else { // if we've moved, but not past the threshold, start the return animation if (DEBUG_DISMISS) { Loading Loading @@ -117,7 +124,10 @@ public class SwipeDismissHandler implements View.OnTouchListener { float velocityY) { if (mView.getTranslationX() * velocityX > 0 && (mDismissAnimation == null || !mDismissAnimation.isRunning())) { dismiss(velocityX / (float) 1000); ValueAnimator dismissAnimator = createSwipeDismissAnimation(velocityX / (float) 1000); mCallbacks.onSwipeDismissInitiated(dismissAnimator); dismiss(dismissAnimator); return true; } return false; Loading Loading @@ -160,11 +170,11 @@ public class SwipeDismissHandler implements View.OnTouchListener { * Start dismissal animation (will run onDismiss callback when animation complete) */ public void dismiss() { dismiss(1); dismiss(createSwipeDismissAnimation(1)); } private void dismiss(float velocity) { mDismissAnimation = createSwipeDismissAnimation(velocity); private void dismiss(ValueAnimator animator) { mDismissAnimation = animator; mDismissAnimation.addListener(new AnimatorListenerAdapter() { private boolean mCancelled; Loading @@ -178,7 +188,7 @@ public class SwipeDismissHandler implements View.OnTouchListener { public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); if (!mCancelled) { mCallbacks.onDismiss(); mCallbacks.onDismissComplete(); } } }); Loading