Merge "Fix clock translation on lockscreen" into udc-dev
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.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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,6 +168,16 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
|
||||
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.
|
||||
*/
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -214,6 +214,15 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
|
||||
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.
|
||||
*/
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user