diff options
11 files changed, 81 insertions, 31 deletions
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java index fbc03c06c6f2..9499753b2bc8 100644 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java +++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java @@ -175,6 +175,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt private final Object mQueueLock = new Object(); private final CarNavigationBarController mCarNavigationBarController; + private final FlingAnimationUtils.Builder mFlingAnimationUtilsBuilder; private final Lazy<PowerManagerHelper> mPowerManagerHelperLazy; private final ShadeController mShadeController; private final CarServiceProvider mCarServiceProvider; @@ -318,7 +319,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt CarServiceProvider carServiceProvider, Lazy<PowerManagerHelper> powerManagerHelperLazy, Lazy<FullscreenUserSwitcher> fullscreenUserSwitcherLazy, - CarNavigationBarController carNavigationBarController) { + CarNavigationBarController carNavigationBarController, + FlingAnimationUtils.Builder flingAnimationUtilsBuilder) { super( context, featureFlags, @@ -401,6 +403,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt mPowerManagerHelperLazy = powerManagerHelperLazy; mFullscreenUserSwitcherLazy = fullscreenUserSwitcherLazy; mCarNavigationBarController = carNavigationBarController; + mFlingAnimationUtilsBuilder = flingAnimationUtilsBuilder; } @Override @@ -436,8 +439,10 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt R.integer.notification_settle_open_percentage); mSettleClosePercentage = mContext.getResources().getInteger( R.integer.notification_settle_close_percentage); - mFlingAnimationUtils = new FlingAnimationUtils(mContext, - FLING_ANIMATION_MAX_TIME, FLING_SPEED_UP_FACTOR); + mFlingAnimationUtils = mFlingAnimationUtilsBuilder + .setMaxLengthSeconds(FLING_ANIMATION_MAX_TIME) + .setSpeedUpFactor(FLING_SPEED_UP_FACTOR) + .build(); createBatteryController(); mCarBatteryController.startListening(); diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java index ff4dc9c7b830..7b21d9d8a2d7 100644 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java +++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java @@ -43,6 +43,7 @@ import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.stackdivider.Divider; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.FeatureFlags; +import com.android.systemui.statusbar.FlingAnimationUtils; import com.android.systemui.statusbar.NavigationBarController; import com.android.systemui.statusbar.NotificationListener; import com.android.systemui.statusbar.NotificationLockscreenUserManager; @@ -191,7 +192,8 @@ public class CarStatusBarModule { CarServiceProvider carServiceProvider, Lazy<PowerManagerHelper> powerManagerHelperLazy, Lazy<FullscreenUserSwitcher> fullscreenUserSwitcherLazy, - CarNavigationBarController carNavigationBarController) { + CarNavigationBarController carNavigationBarController, + FlingAnimationUtils.Builder flingAnimationUtilsBuilder) { return new CarStatusBar( context, featureFlags, @@ -268,6 +270,7 @@ public class CarStatusBarModule { carServiceProvider, powerManagerHelperLazy, fullscreenUserSwitcherLazy, - carNavigationBarController); + carNavigationBarController, + flingAnimationUtilsBuilder); } } diff --git a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java index ecf4c0a86bfc..e2b12daf441e 100644 --- a/packages/SystemUI/src/com/android/systemui/ExpandHelper.java +++ b/packages/SystemUI/src/com/android/systemui/ExpandHelper.java @@ -179,7 +179,8 @@ public class ExpandHelper implements Gefingerpoken { mTouchSlop = configuration.getScaledTouchSlop(); mSGD = new ScaleGestureDetector(context, mScaleGestureListener); - mFlingAnimationUtils = new FlingAnimationUtils(context, EXPAND_DURATION); + mFlingAnimationUtils = new FlingAnimationUtils(mContext.getResources().getDisplayMetrics(), + EXPAND_DURATION); } @VisibleForTesting diff --git a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java index 58c52a1fc50e..4728327d51b8 100644 --- a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java +++ b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java @@ -93,13 +93,11 @@ public class SwipeHelper implements Gefingerpoken { private boolean mTouchAboveFalsingThreshold; private boolean mDisableHwLayers; private final boolean mFadeDependingOnAmountSwiped; - private final Context mContext; private final ArrayMap<View, Animator> mDismissPendingMap = new ArrayMap<>(); public SwipeHelper( int swipeDirection, Callback callback, Context context, FalsingManager falsingManager) { - mContext = context; mCallback = callback; mHandler = new Handler(); mSwipeDirection = swipeDirection; @@ -114,7 +112,8 @@ public class SwipeHelper implements Gefingerpoken { mFalsingThreshold = res.getDimensionPixelSize(R.dimen.swipe_helper_falsing_threshold); mFadeDependingOnAmountSwiped = res.getBoolean(R.bool.config_fadeDependingOnAmountSwiped); mFalsingManager = falsingManager; - mFlingAnimationUtils = new FlingAnimationUtils(context, getMaxEscapeAnimDuration() / 1000f); + mFlingAnimationUtils = new FlingAnimationUtils(res.getDisplayMetrics(), + getMaxEscapeAnimDuration() / 1000f); } public void setDensityScale(float densityScale) { diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java index 2e90a3e28841..2347a476d145 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java @@ -194,7 +194,8 @@ public class PipTouchHandler { mMenuController.addListener(mMenuListener); mDismissViewController = new PipDismissViewController(context); mSnapAlgorithm = new PipSnapAlgorithm(mContext); - mFlingAnimationUtils = new FlingAnimationUtils(context, 2.5f); + mFlingAnimationUtils = new FlingAnimationUtils(context.getResources().getDisplayMetrics(), + 2.5f); mGestures = new PipTouchGesture[] { mDefaultMovementGesture }; diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java index f2b4ad85b0c3..325af2424b2f 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java @@ -295,7 +295,7 @@ public class DividerView extends FrameLayout implements OnTouchListener, R.integer.long_press_dock_anim_duration); mGrowRecents = getResources().getBoolean(R.bool.recents_grow_in_multiwindow); mTouchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop(); - mFlingAnimationUtils = new FlingAnimationUtils(getContext(), 0.3f); + mFlingAnimationUtils = new FlingAnimationUtils(getResources().getDisplayMetrics(), 0.3f); updateDisplayInfo(); boolean landscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/FlingAnimationUtils.java b/packages/SystemUI/src/com/android/systemui/statusbar/FlingAnimationUtils.java index d4272605924f..525b5b795a03 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/FlingAnimationUtils.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/FlingAnimationUtils.java @@ -17,7 +17,7 @@ package com.android.systemui.statusbar; import android.animation.Animator; -import android.content.Context; +import android.util.DisplayMetrics; import android.util.Log; import android.view.ViewPropertyAnimator; import android.view.animation.Interpolator; @@ -25,7 +25,8 @@ import android.view.animation.PathInterpolator; import com.android.systemui.Interpolators; import com.android.systemui.statusbar.notification.NotificationUtils; -import com.android.systemui.statusbar.phone.StatusBar; + +import javax.inject.Inject; /** * Utility class to calculate general fling animation when the finger is released. @@ -56,8 +57,8 @@ public class FlingAnimationUtils { private float mCachedStartGradient = -1; private float mCachedVelocityFactor = -1; - public FlingAnimationUtils(Context ctx, float maxLengthSeconds) { - this(ctx, maxLengthSeconds, 0.0f); + public FlingAnimationUtils(DisplayMetrics displayMetrics, float maxLengthSeconds) { + this(displayMetrics, maxLengthSeconds, 0.0f); } /** @@ -66,8 +67,9 @@ public class FlingAnimationUtils { * the end of the animation. 0 means it's at the beginning and no * acceleration will take place. */ - public FlingAnimationUtils(Context ctx, float maxLengthSeconds, float speedUpFactor) { - this(ctx, maxLengthSeconds, speedUpFactor, -1.0f, 1.0f); + public FlingAnimationUtils(DisplayMetrics displayMetrics, float maxLengthSeconds, + float speedUpFactor) { + this(displayMetrics, maxLengthSeconds, speedUpFactor, -1.0f, 1.0f); } /** @@ -79,8 +81,8 @@ public class FlingAnimationUtils { * is provided, the value is automatically calculated. * @param y2 the y value to take for the second point of the bezier spline */ - public FlingAnimationUtils(Context ctx, float maxLengthSeconds, float speedUpFactor, float x2, - float y2) { + public FlingAnimationUtils(DisplayMetrics displayMetrics, float maxLengthSeconds, + float speedUpFactor, float x2, float y2) { mMaxLengthSeconds = maxLengthSeconds; mSpeedUpFactor = speedUpFactor; if (x2 < 0) { @@ -92,10 +94,8 @@ public class FlingAnimationUtils { } mY2 = y2; - mMinVelocityPxPerSecond - = MIN_VELOCITY_DP_PER_SECOND * ctx.getResources().getDisplayMetrics().density; - mHighVelocityPxPerSecond - = HIGH_VELOCITY_DP_PER_SECOND * ctx.getResources().getDisplayMetrics().density; + mMinVelocityPxPerSecond = MIN_VELOCITY_DP_PER_SECOND * displayMetrics.density; + mHighVelocityPxPerSecond = HIGH_VELOCITY_DP_PER_SECOND * displayMetrics.density; } /** @@ -365,4 +365,41 @@ public class FlingAnimationUtils { long duration; } + public static class Builder { + private final DisplayMetrics mDisplayMetrics; + float mMaxLengthSeconds; + float mSpeedUpFactor = 0.0f; + float mX2 = -1.0f; + float mY2 = 1.0f; + + @Inject + public Builder(DisplayMetrics displayMetrics) { + mDisplayMetrics = displayMetrics; + } + + public Builder setMaxLengthSeconds(float maxLengthSeconds) { + mMaxLengthSeconds = maxLengthSeconds; + return this; + } + + public Builder setSpeedUpFactor(float speedUpFactor) { + mSpeedUpFactor = speedUpFactor; + return this; + } + + public Builder setX2(float x2) { + mX2 = x2; + return this; + } + + public Builder setY2(float y2) { + mY2 = y2; + return this; + } + + public FlingAnimationUtils build() { + return new FlingAnimationUtils(mDisplayMetrics, mMaxLengthSeconds, mSpeedUpFactor, + mX2, mY2); + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java index 6adaa0ddbfd2..2c296353bd14 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java @@ -138,7 +138,8 @@ public class KeyguardAffordanceView extends ImageView { mMinBackgroundRadius = mContext.getResources().getDimensionPixelSize( R.dimen.keyguard_affordance_min_background_radius); mColorInterpolator = new ArgbEvaluator(); - mFlingAnimationUtils = new FlingAnimationUtils(mContext, 0.3f); + mFlingAnimationUtils = new FlingAnimationUtils(mContext.getResources().getDisplayMetrics(), + 0.3f); a.recycle(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java index 66b1dd8db123..858023dc6c62 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java @@ -101,7 +101,8 @@ public class KeyguardAffordanceHelper { R.dimen.keyguard_affordance_touch_target_size); mHintGrowAmount = mContext.getResources().getDimensionPixelSize(R.dimen.hint_grow_amount_sideways); - mFlingAnimationUtils = new FlingAnimationUtils(mContext, 0.4f); + mFlingAnimationUtils = new FlingAnimationUtils(mContext.getResources().getDisplayMetrics(), + 0.4f); } private void initIcons() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index ed2fb0fdcb1a..199d52f76c93 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -609,7 +609,7 @@ public class NotificationPanelView extends PanelView implements @Override protected void loadDimens() { super.loadDimens(); - mFlingAnimationUtils = new FlingAnimationUtils(getContext(), 0.4f); + mFlingAnimationUtils = new FlingAnimationUtils(getResources().getDisplayMetrics(), 0.4f); mStatusBarMinHeight = getResources().getDimensionPixelSize( com.android.internal.R.dimen.status_bar_height); mQsPeekHeight = getResources().getDimensionPixelSize(R.dimen.qs_peek_height); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java index e8e5e1f60c51..78a5eb237297 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java @@ -26,6 +26,7 @@ import android.content.res.Resources; import android.os.SystemClock; import android.os.VibrationEffect; import android.util.AttributeSet; +import android.util.DisplayMetrics; import android.util.Log; import android.view.InputDevice; import android.view.MotionEvent; @@ -208,11 +209,12 @@ public abstract class PanelView extends FrameLayout { super(context, attrs); mKeyguardStateController = keyguardStateController; mStatusBarStateController = statusBarStateController; - mFlingAnimationUtils = new FlingAnimationUtils(context, 0.6f /* maxLengthSeconds */, - 0.6f /* speedUpFactor */); - mFlingAnimationUtilsClosing = new FlingAnimationUtils(context, 0.5f /* maxLengthSeconds */, - 0.6f /* speedUpFactor */); - mFlingAnimationUtilsDismissing = new FlingAnimationUtils(context, + DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); + mFlingAnimationUtils = new FlingAnimationUtils(displayMetrics, + 0.6f /* maxLengthSeconds */, 0.6f /* speedUpFactor */); + mFlingAnimationUtilsClosing = new FlingAnimationUtils(displayMetrics, + 0.5f /* maxLengthSeconds */, 0.6f /* speedUpFactor */); + mFlingAnimationUtilsDismissing = new FlingAnimationUtils(displayMetrics, 0.5f /* maxLengthSeconds */, 0.2f /* speedUpFactor */, 0.6f /* x2 */, 0.84f /* y2 */); mBounceInterpolator = new BounceInterpolator(); |