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:
@@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user