diff options
author | 2023-08-22 18:59:29 +0000 | |
---|---|---|
committer | 2023-08-28 23:07:22 +0000 | |
commit | 54a92682d754392899a0141bd5718231c2535e8c (patch) | |
tree | 501c043f0c786a1fc87cf32c5451d1fd98d6cf56 | |
parent | 84bdf4805605c046975207b887f5383b6c4d079d (diff) |
Fix overlap with smartspace and weather clock when changing display
Now translationY of smartspace when weather clock is selected is decided
by counter translate for invisible dateWeatherView and slight translate
introduced from felix overlay to adapt to different direction.
Test: manually test on different configuration on Felix and Cheetah
Bug: 286888430
Change-Id: I6c6f1eb7b8791e3cfb508f3575e62f8645b1a427
-rw-r--r-- | packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java | 30 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java | 1 |
2 files changed, 27 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java index 5d0e8f70f744..450010c1bcd4 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java @@ -48,6 +48,7 @@ public class KeyguardClockSwitch extends RelativeLayout { private static final long STATUS_AREA_MOVE_UP_MILLIS = 967; private static final long STATUS_AREA_MOVE_DOWN_MILLIS = 467; private static final float SMARTSPACE_TRANSLATION_CENTER_MULTIPLIER = 1.4f; + private static final float SMARTSPACE_TOP_PADDING_MULTIPLIER = 2.625f; @IntDef({LARGE, SMALL}) @Retention(RetentionPolicy.SOURCE) @@ -92,6 +93,14 @@ public class KeyguardClockSwitch extends RelativeLayout { private KeyguardClockFrame mLargeClockFrame; private ClockController mClock; + // It's bc_smartspace_view, assigned by KeyguardClockSwitchController + // to get the top padding for translating smartspace for weather clock + private View mSmartspace; + + // Smartspace in weather clock is translated by this value + // to compensate for the position invisible dateWeatherView + private int mSmartspaceTop = -1; + private KeyguardStatusAreaView mStatusArea; private int mSmartspaceTopOffset; private float mWeatherClockSmartspaceScaling = 1f; @@ -130,8 +139,11 @@ public class KeyguardClockSwitch extends RelativeLayout { public void onConfigChanged() { mClockSwitchYAmount = mContext.getResources().getDimensionPixelSize( R.dimen.keyguard_clock_switch_y_shift); - mSmartspaceTopOffset = mContext.getResources().getDimensionPixelSize( - R.dimen.keyguard_smartspace_top_offset); + mSmartspaceTopOffset = (int) (mContext.getResources().getDimensionPixelSize( + R.dimen.keyguard_smartspace_top_offset) + * mContext.getResources().getConfiguration().fontScale + / mContext.getResources().getDisplayMetrics().density + * SMARTSPACE_TOP_PADDING_MULTIPLIER); mWeatherClockSmartspaceScaling = ResourcesCompat.getFloat( mContext.getResources(), R.dimen.weather_clock_smartspace_scale); mWeatherClockSmartspaceTranslateX = mContext.getResources().getDimensionPixelSize( @@ -141,6 +153,12 @@ public class KeyguardClockSwitch extends RelativeLayout { updateStatusArea(/* animate= */false); } + /** Get bc_smartspace_view from KeyguardClockSwitchController + * Use its top to decide the translation value */ + public void setSmartspace(View smartspace) { + mSmartspace = smartspace; + } + /** Sets whether the large clock is being shown on a connected display. */ public void setLargeClockOnSecondaryDisplay(boolean onSecondaryDisplay) { if (mClock != null) { @@ -291,7 +309,7 @@ public class KeyguardClockSwitch extends RelativeLayout { && mClock.getLargeClock().getConfig().getHasCustomWeatherDataDisplay()) { statusAreaClockScale = mWeatherClockSmartspaceScaling; statusAreaClockTranslateX = mWeatherClockSmartspaceTranslateX; - statusAreaClockTranslateY = mWeatherClockSmartspaceTranslateY; + statusAreaClockTranslateY = mWeatherClockSmartspaceTranslateY - mSmartspaceTop; if (mSplitShadeCentered) { statusAreaClockTranslateX *= SMARTSPACE_TRANSLATION_CENTER_MULTIPLIER; } @@ -414,10 +432,14 @@ public class KeyguardClockSwitch extends RelativeLayout { post(() -> updateClockTargetRegions()); } - if (mDisplayedClockSize != null && !mChildrenAreLaidOut) { + if (mSmartspace != null && mSmartspaceTop != mSmartspace.getTop()) { + mSmartspaceTop = mSmartspace.getTop(); post(() -> updateClockViews(mDisplayedClockSize == LARGE, mAnimateOnLayout)); } + if (mDisplayedClockSize != null && !mChildrenAreLaidOut) { + post(() -> updateClockViews(mDisplayedClockSize == LARGE, mAnimateOnLayout)); + } mChildrenAreLaidOut = true; } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java index 692b636f95d3..94f6dba792e8 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java @@ -371,6 +371,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS mSmartspaceView.setPaddingRelative(startPadding, 0, endPadding, 0); mKeyguardUnlockAnimationController.setLockscreenSmartspace(mSmartspaceView); + mView.setSmartspace(mSmartspaceView); } /** |