Skip to content
Snippets Groups Projects
Commit 269feda5 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Remove transition from lock icon

A transition can only be applied to a container, and using the lock
parent is not an option, we were applying animations to views that
required a hard visibility transition (and messing up with notification
animations.)

Test: visual
Fixes: 131437765
Bug: 131179078
Change-Id: I2da67d17804a502c1a57d29a537e98fe4babe09f
parent 5a9e4ba9
No related branches found
No related tags found
No related merge requests found
......@@ -25,8 +25,6 @@ import android.content.Context;
import android.content.res.ColorStateList;
import android.os.Bundle;
import android.os.SystemClock;
import android.transition.Fade;
import android.transition.TransitionManager;
import android.util.StatsLog;
import android.view.KeyEvent;
import android.view.View;
......@@ -40,10 +38,8 @@ import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.keyguard.ViewMediatorCallback;
import com.android.settingslib.animation.AppearAnimationUtils;
import com.android.settingslib.animation.DisappearAnimationUtils;
import com.android.systemui.DejankUtils;
import com.android.systemui.Dependency;
import com.android.systemui.Interpolators;
import com.android.systemui.SysUiServiceProvider;
import com.android.systemui.SystemUIFactory;
import com.android.systemui.dock.DockManager;
......@@ -51,6 +47,7 @@ import com.android.systemui.keyguard.DismissCallbackRegistry;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.CrossFadeHelper;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.RemoteInputController;
import com.android.systemui.statusbar.StatusBarState;
......@@ -158,7 +155,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
private boolean mLastPulsing;
private int mLastBiometricMode;
private boolean mGoingToSleepVisibleNotOccluded;
private int mLastLockVisibility = -1;
private boolean mLastLockVisible;
private OnDismissAction mAfterKeyguardGoneAction;
private final ArrayList<Runnable> mAfterKeyguardGoneRunnables = new ArrayList<>();
......@@ -213,6 +210,9 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
mStatusBar = statusBar;
mContainer = container;
mLockIconContainer = lockIconContainer;
if (mLockIconContainer != null) {
mLastLockVisible = mLockIconContainer.getVisibility() == View.VISIBLE;
}
mBiometricUnlockController = biometricUnlockController;
mBouncer = SystemUIFactory.getInstance().createKeyguardBouncer(mContext,
mViewMediatorCallback, mLockPatternUtils, container, dismissCallbackRegistry,
......@@ -261,21 +261,20 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
}
boolean keyguardWithoutQs = mStatusBarStateController.getState() == StatusBarState.KEYGUARD
&& !mNotificationPanelView.isQsExpanded();
int lockVisibility = (mBouncer.isShowing() || keyguardWithoutQs)
&& !mBouncer.isAnimatingAway() ? View.VISIBLE : View.INVISIBLE;
if (mLastLockVisibility != lockVisibility) {
mLastLockVisibility = lockVisibility;
Fade transition = new Fade();
boolean appearing = lockVisibility == View.VISIBLE;
transition.setDuration(appearing ? AppearAnimationUtils.DEFAULT_APPEAR_DURATION
: DisappearAnimationUtils.DEFAULT_APPEAR_DURATION / 2);
transition.setInterpolator(appearing ? Interpolators.ALPHA_IN
: Interpolators.ALPHA_OUT);
TransitionManager.beginDelayedTransition((ViewGroup) mLockIconContainer.getParent(),
transition);
mLockIconContainer.setVisibility(lockVisibility);
boolean lockVisible = (mBouncer.isShowing() || keyguardWithoutQs)
&& !mBouncer.isAnimatingAway();
if (mLastLockVisible != lockVisible) {
mLastLockVisible = lockVisible;
if (lockVisible) {
CrossFadeHelper.fadeIn(mLockIconContainer,
AppearAnimationUtils.DEFAULT_APPEAR_DURATION /* duration */,
0 /* delay */);
} else {
CrossFadeHelper.fadeOut(mLockIconContainer,
AppearAnimationUtils.DEFAULT_APPEAR_DURATION / 2 /* duration */,
0 /* delay */, null /* runnable */);
}
}
}
......
......@@ -28,7 +28,6 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.view.View;
import android.view.ViewGroup;
import androidx.test.filters.SmallTest;
......@@ -39,7 +38,6 @@ import com.android.systemui.SysuiTestCase;
import com.android.systemui.keyguard.DismissCallbackRegistry;
import com.android.systemui.plugins.ActivityStarter.OnDismissAction;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.StatusBarState;
import org.junit.Before;
import org.junit.Test;
......@@ -198,29 +196,6 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
verify(mBouncer, never()).setExpansion(anyFloat());
}
@Test
public void onQsExpansionChanged_lockVisibleOnlyWhenCollapsed() {
when(mStatusBarStateController.getState()).thenReturn(StatusBarState.KEYGUARD);
mStatusBarKeyguardViewManager.onQsExpansionChanged(0);
verify(mLockIconContainer).setVisibility(eq(View.VISIBLE));
reset(mNotificationPanelView);
when(mNotificationPanelView.isQsExpanded()).thenReturn(true);
mStatusBarKeyguardViewManager.onQsExpansionChanged(1f);
verify(mLockIconContainer).setVisibility(eq(View.INVISIBLE));
}
@Test
public void onQsExpansionChanged_lockInvisibleWhenAnimatingAway() {
when(mBouncer.isShowing()).thenReturn(true);
mStatusBarKeyguardViewManager.onQsExpansionChanged(0);
verify(mLockIconContainer).setVisibility(eq(View.VISIBLE));
when(mBouncer.isAnimatingAway()).thenReturn(true);
mStatusBarKeyguardViewManager.onQsExpansionChanged(0f);
verify(mLockIconContainer).setVisibility(eq(View.INVISIBLE));
}
private class TestableStatusBarKeyguardViewManager extends StatusBarKeyguardViewManager {
public TestableStatusBarKeyguardViewManager(Context context,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment