diff options
-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 06b66922466c..1703b3034775 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) @@ -96,6 +97,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; @@ -134,8 +143,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( @@ -145,6 +157,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) { @@ -295,7 +313,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; } @@ -418,10 +436,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 6d2880e00203..d89796005e25 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java @@ -372,6 +372,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS mSmartspaceView.setPaddingRelative(startPadding, 0, endPadding, 0); mKeyguardUnlockAnimationController.setLockscreenSmartspace(mSmartspaceView); + mView.setSmartspace(mSmartspaceView); } /** |