Merge "Fix clock translation on lockscreen" into udc-dev am: cf3cbe8a0b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22939135

Change-Id: Ifa89f588bc5434c34a3f31a7dd659cb0704991cc
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Sherry Zhou
2023-05-02 19:33:56 +00:00
committed by Automerger Merge Worker
5 changed files with 42 additions and 15 deletions

View File

@@ -21,6 +21,7 @@ import com.android.systemui.animation.Interpolators;
import com.android.systemui.log.LogBuffer; import com.android.systemui.log.LogBuffer;
import com.android.systemui.log.LogLevel; import com.android.systemui.log.LogLevel;
import com.android.systemui.plugins.ClockController; import com.android.systemui.plugins.ClockController;
import com.android.systemui.shared.clocks.DefaultClockController;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
@@ -46,6 +47,9 @@ public class KeyguardClockSwitch extends RelativeLayout {
public static final int LARGE = 0; public static final int LARGE = 0;
public static final int SMALL = 1; 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. */ /** Returns a region for the large clock to position itself, based on the given parent. */
public static Rect getLargeClockRegion(ViewGroup parent) { public static Rect getLargeClockRegion(ViewGroup parent) {
@@ -161,8 +165,18 @@ public class KeyguardClockSwitch extends RelativeLayout {
} }
if (mLargeClockFrame.isLaidOut()) { if (mLargeClockFrame.isLaidOut()) {
Rect targetRegion = getLargeClockRegion(mLargeClockFrame);
if (mClock instanceof DefaultClockController) {
mClock.getLargeClock().getEvents().onTargetRegionChanged( mClock.getLargeClock().getEvents().onTargetRegionChanged(
getLargeClockRegion(mLargeClockFrame)); targetRegion);
} else {
mClock.getLargeClock().getEvents().onTargetRegionChanged(
new Rect(
targetRegion.left,
targetRegion.top - screenOffsetYPadding,
targetRegion.right,
targetRegion.bottom - screenOffsetYPadding));
}
} }
} }
} }

View File

@@ -168,6 +168,16 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
mOnlyClock = onlyClock; mOnlyClock = onlyClock;
} }
/**
* 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. * Attach the controller to the view it relates to.
*/ */
@@ -394,13 +404,6 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
PropertyAnimator.setProperty(mStatusArea, AnimatableProperty.TRANSLATION_X, PropertyAnimator.setProperty(mStatusArea, AnimatableProperty.TRANSLATION_X,
x, props, animate); x, props, animate);
} }
}
void updateKeyguardStatusViewOffset() {
// updateClockTargetRegions will call onTargetRegionChanged
// which will require the correct translationY property of keyguardStatusView after updating
mView.updateClockTargetRegions();
} }
/** /**

View File

@@ -214,6 +214,15 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
return mKeyguardClockSwitchController.isClockTopAligned(); return mKeyguardClockSwitchController.isClockTopAligned();
} }
/**
* 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. * Set whether the view accessibility importance mode.
*/ */
@@ -230,7 +239,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
* Update position of the view with an optional animation * Update position of the view with an optional animation
*/ */
public void updatePosition(int x, int y, float scale, boolean animate) { public void updatePosition(int x, int y, float scale, boolean animate) {
float oldY = mView.getY();
setProperty(AnimatableProperty.Y, y, animate); setProperty(AnimatableProperty.Y, y, animate);
ClockController clock = mKeyguardClockSwitchController.getClock(); ClockController clock = mKeyguardClockSwitchController.getClock();
@@ -246,10 +254,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
setProperty(AnimatableProperty.SCALE_X, 1f, animate); setProperty(AnimatableProperty.SCALE_X, 1f, animate);
setProperty(AnimatableProperty.SCALE_Y, 1f, animate); setProperty(AnimatableProperty.SCALE_Y, 1f, animate);
} }
if (oldY != y) {
mKeyguardClockSwitchController.updateKeyguardStatusViewOffset();
}
} }
/** /**

View File

@@ -1513,6 +1513,8 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
mKeyguardStatusViewController.getClockBottom(mStatusBarHeaderHeightKeyguard), mKeyguardStatusViewController.getClockBottom(mStatusBarHeaderHeightKeyguard),
mKeyguardStatusViewController.isClockTopAligned()); mKeyguardStatusViewController.isClockTopAligned());
mClockPositionAlgorithm.run(mClockPositionResult); mClockPositionAlgorithm.run(mClockPositionResult);
mKeyguardStatusViewController.setLockscreenClockY(
mClockPositionAlgorithm.getExpandedPreferredClockY());
mKeyguardBottomAreaInteractor.setClockPosition( mKeyguardBottomAreaInteractor.setClockPosition(
mClockPositionResult.clockX, mClockPositionResult.clockY); mClockPositionResult.clockX, mClockPositionResult.clockY);
boolean animate = mNotificationStackScrollLayoutController.isAddOrRemoveAnimationPending(); boolean animate = mNotificationStackScrollLayoutController.isAddOrRemoveAnimationPending();

View File

@@ -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) { if (mIsSplitShade) {
return mSplitShadeTargetTopMargin; return mSplitShadeTargetTopMargin;
} else { } else {