diff options
5 files changed, 42 insertions, 15 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java index 4629e8b19ae5..1ca63fb88342 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java @@ -21,6 +21,7 @@ import com.android.systemui.animation.Interpolators; import com.android.systemui.log.LogBuffer; import com.android.systemui.log.LogLevel; import com.android.systemui.plugins.ClockController; +import com.android.systemui.shared.clocks.DefaultClockController; import java.io.PrintWriter; import java.lang.annotation.Retention; @@ -46,6 +47,9 @@ public class KeyguardClockSwitch extends RelativeLayout { public static final int LARGE = 0; public static final int SMALL = 1; + // compensate for translation of parents subject to device screen + // In this case, the translation comes from KeyguardStatusView + public int screenOffsetYPadding = 0; /** Returns a region for the large clock to position itself, based on the given parent. */ public static Rect getLargeClockRegion(ViewGroup parent) { @@ -161,8 +165,18 @@ public class KeyguardClockSwitch extends RelativeLayout { } if (mLargeClockFrame.isLaidOut()) { - mClock.getLargeClock().getEvents().onTargetRegionChanged( - getLargeClockRegion(mLargeClockFrame)); + Rect targetRegion = getLargeClockRegion(mLargeClockFrame); + if (mClock instanceof DefaultClockController) { + mClock.getLargeClock().getEvents().onTargetRegionChanged( + targetRegion); + } else { + mClock.getLargeClock().getEvents().onTargetRegionChanged( + new Rect( + targetRegion.left, + targetRegion.top - screenOffsetYPadding, + targetRegion.right, + targetRegion.bottom - screenOffsetYPadding)); + } } } } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java index 50dac32d67d7..d8bf570954df 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java @@ -169,6 +169,16 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS } /** + * Used for status view to pass the screen offset from parent view + */ + public void setLockscreenClockY(int clockY) { + if (mView.screenOffsetYPadding != clockY) { + mView.screenOffsetYPadding = clockY; + mView.updateClockTargetRegions(); + } + } + + /** * Attach the controller to the view it relates to. */ @Override @@ -394,13 +404,6 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS PropertyAnimator.setProperty(mStatusArea, AnimatableProperty.TRANSLATION_X, x, props, animate); } - - } - - void updateKeyguardStatusViewOffset() { - // updateClockTargetRegions will call onTargetRegionChanged - // which will require the correct translationY property of keyguardStatusView after updating - mView.updateClockTargetRegions(); } /** diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java index 0826f8a8b985..68d8143a4154 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java @@ -215,6 +215,15 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV } /** + * Pass top margin from ClockPositionAlgorithm in NotificationPanelViewController + * Use for clock view in LS to compensate for top margin to align to the screen + * Regardless of translation from AOD and unlock gestures + */ + public void setLockscreenClockY(int clockY) { + mKeyguardClockSwitchController.setLockscreenClockY(clockY); + } + + /** * Set whether the view accessibility importance mode. */ public void setStatusAccessibilityImportance(int mode) { @@ -230,7 +239,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV * Update position of the view with an optional animation */ public void updatePosition(int x, int y, float scale, boolean animate) { - float oldY = mView.getY(); setProperty(AnimatableProperty.Y, y, animate); ClockController clock = mKeyguardClockSwitchController.getClock(); @@ -246,10 +254,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV setProperty(AnimatableProperty.SCALE_X, 1f, animate); setProperty(AnimatableProperty.SCALE_Y, 1f, animate); } - - if (oldY != y) { - mKeyguardClockSwitchController.updateKeyguardStatusViewOffset(); - } } /** diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java index 137a99ef39b8..4b44ac01e60a 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java @@ -1513,6 +1513,8 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump mKeyguardStatusViewController.getClockBottom(mStatusBarHeaderHeightKeyguard), mKeyguardStatusViewController.isClockTopAligned()); mClockPositionAlgorithm.run(mClockPositionResult); + mKeyguardStatusViewController.setLockscreenClockY( + mClockPositionAlgorithm.getExpandedPreferredClockY()); mKeyguardBottomAreaInteractor.setClockPosition( mClockPositionResult.clockX, mClockPositionResult.clockY); boolean animate = mNotificationStackScrollLayoutController.isAddOrRemoveAnimationPending(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java index 90a6d0fac7ca..eba04f13ac4b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java @@ -239,7 +239,11 @@ public class KeyguardClockPositionAlgorithm { } } - private int getExpandedPreferredClockY() { + /** + * give the static topMargin, used for lockscreen clocks to get the initial translationY + * to do counter translation + */ + public int getExpandedPreferredClockY() { if (mIsSplitShade) { return mSplitShadeTargetTopMargin; } else { |