Set Visibility on ClockSwitch Animation
This sets the visibility of the clock frames to invisible when they are removed from view by KeyguardClockSwitch. This does not cause a visual change with the clock animation directly, but allows code to use visibility checks of the frames to determine which size clock is shown. There is an impact on the AOD positioning for the small clock which was already checking parameters this way, and always using the large clock positioning parameters as a result. This is now corrected and KeyguardClockPositionAlgorithm will recieve the correct parameters depending on whether the large or small clock is shown. Fixes: 261755021 Test: Manually checked a few devices Change-Id: I2bdca38cc70df03dfd952c94559ae8f36e2dc80a
This commit is contained in:
@@ -183,6 +183,7 @@ public class KeyguardClockSwitch extends RelativeLayout {
|
||||
|
||||
if (!animate) {
|
||||
out.setAlpha(0f);
|
||||
out.setVisibility(INVISIBLE);
|
||||
in.setAlpha(1f);
|
||||
in.setVisibility(VISIBLE);
|
||||
mStatusArea.setTranslationY(statusAreaYTranslation);
|
||||
@@ -198,7 +199,10 @@ public class KeyguardClockSwitch extends RelativeLayout {
|
||||
direction * -mClockSwitchYAmount));
|
||||
mClockOutAnim.addListener(new AnimatorListenerAdapter() {
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mClockOutAnim = null;
|
||||
if (mClockOutAnim == animation) {
|
||||
out.setVisibility(INVISIBLE);
|
||||
mClockOutAnim = null;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -212,7 +216,9 @@ public class KeyguardClockSwitch extends RelativeLayout {
|
||||
mClockInAnim.setStartDelay(CLOCK_OUT_MILLIS / 2);
|
||||
mClockInAnim.addListener(new AnimatorListenerAdapter() {
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mClockInAnim = null;
|
||||
if (mClockInAnim == animation) {
|
||||
mClockInAnim = null;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -225,7 +231,9 @@ public class KeyguardClockSwitch extends RelativeLayout {
|
||||
mStatusAreaAnim.setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
|
||||
mStatusAreaAnim.addListener(new AnimatorListenerAdapter() {
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mStatusAreaAnim = null;
|
||||
if (mStatusAreaAnim == animation) {
|
||||
mStatusAreaAnim = null;
|
||||
}
|
||||
}
|
||||
});
|
||||
mStatusAreaAnim.start();
|
||||
|
||||
@@ -337,10 +337,6 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
|
||||
int clockHeight = clock.getLargeClock().getView().getHeight();
|
||||
return frameHeight / 2 + clockHeight / 2 + mKeyguardLargeClockTopMargin / -2;
|
||||
} else {
|
||||
// This is only called if we've never shown the large clock as the frame is inflated
|
||||
// with 'gone', but then the visibility is never set when it is animated away by
|
||||
// KeyguardClockSwitch, instead it is removed from the view hierarchy.
|
||||
// TODO(b/261755021): Cleanup Large Frame Visibility
|
||||
int clockHeight = clock.getSmallClock().getView().getHeight();
|
||||
return clockHeight + statusBarHeaderHeight + mKeyguardSmallClockTopMargin;
|
||||
}
|
||||
@@ -358,15 +354,11 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
|
||||
if (mLargeClockFrame.getVisibility() == View.VISIBLE) {
|
||||
return clock.getLargeClock().getView().getHeight();
|
||||
} else {
|
||||
// Is not called except in certain edge cases, see comment in getClockBottom
|
||||
// TODO(b/261755021): Cleanup Large Frame Visibility
|
||||
return clock.getSmallClock().getView().getHeight();
|
||||
}
|
||||
}
|
||||
|
||||
boolean isClockTopAligned() {
|
||||
// Returns false except certain edge cases, see comment in getClockBottom
|
||||
// TODO(b/261755021): Cleanup Large Frame Visibility
|
||||
return mLargeClockFrame.getVisibility() != View.VISIBLE;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.keyguard;
|
||||
|
||||
import static android.view.View.INVISIBLE;
|
||||
import static android.view.View.VISIBLE;
|
||||
|
||||
import static com.android.keyguard.KeyguardClockSwitch.LARGE;
|
||||
@@ -189,6 +190,7 @@ public class KeyguardClockSwitchTest extends SysuiTestCase {
|
||||
assertThat(mLargeClockFrame.getAlpha()).isEqualTo(1);
|
||||
assertThat(mLargeClockFrame.getVisibility()).isEqualTo(VISIBLE);
|
||||
assertThat(mSmallClockFrame.getAlpha()).isEqualTo(0);
|
||||
assertThat(mSmallClockFrame.getVisibility()).isEqualTo(INVISIBLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -198,6 +200,7 @@ public class KeyguardClockSwitchTest extends SysuiTestCase {
|
||||
assertThat(mLargeClockFrame.getAlpha()).isEqualTo(1);
|
||||
assertThat(mLargeClockFrame.getVisibility()).isEqualTo(VISIBLE);
|
||||
assertThat(mSmallClockFrame.getAlpha()).isEqualTo(0);
|
||||
assertThat(mSmallClockFrame.getVisibility()).isEqualTo(INVISIBLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -212,6 +215,7 @@ public class KeyguardClockSwitchTest extends SysuiTestCase {
|
||||
// only big clock is removed at switch
|
||||
assertThat(mLargeClockFrame.getParent()).isNull();
|
||||
assertThat(mLargeClockFrame.getAlpha()).isEqualTo(0);
|
||||
assertThat(mLargeClockFrame.getVisibility()).isEqualTo(INVISIBLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -223,6 +227,7 @@ public class KeyguardClockSwitchTest extends SysuiTestCase {
|
||||
// only big clock is removed at switch
|
||||
assertThat(mLargeClockFrame.getParent()).isNull();
|
||||
assertThat(mLargeClockFrame.getAlpha()).isEqualTo(0);
|
||||
assertThat(mLargeClockFrame.getVisibility()).isEqualTo(INVISIBLE);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user