Loading packages/SystemUI/res/layout/super_notification_shade.xml +2 −1 Original line number Diff line number Diff line Loading @@ -78,7 +78,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/status_bar_height" android:layout_gravity="top|center_horizontal"> android:layout_gravity="top|center_horizontal" android:gravity="center_horizontal"> <com.android.systemui.statusbar.phone.LockIcon android:id="@+id/lock_icon" android:layout_width="@dimen/keyguard_lock_width" Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +41 −6 Original line number Diff line number Diff line Loading @@ -26,13 +26,17 @@ import static com.android.systemui.statusbar.phone.BiometricUnlockController.MOD import android.content.ComponentCallbacks2; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.os.Bundle; import android.os.SystemClock; import android.util.TypedValue; import android.view.Gravity; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; import android.view.ViewRootImpl; import android.view.WindowManagerGlobal; import android.widget.FrameLayout; import androidx.annotation.VisibleForTesting; Loading Loading @@ -160,6 +164,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb private boolean mPulsing; private boolean mGesturalNav; private boolean mIsDocked; private boolean mIsPortraitMode; private int mScreenWidthDp; protected boolean mFirstUpdate = true; protected boolean mLastShowing; Loading @@ -174,6 +180,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb private boolean mLastPulsing; private int mLastBiometricMode; private boolean mLastLockVisible; private boolean mLastLockOrientationIsPortrait; private OnDismissAction mAfterKeyguardGoneAction; private Runnable mKeyguardGoneCancelAction; Loading Loading @@ -263,6 +270,9 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mKeyguardUpdateManager.registerCallback(mUpdateMonitorCallback); mStatusBarStateController.addCallback(this); mConfigurationController.addCallback(this); mIsPortraitMode = mContext.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT; mScreenWidthDp = mContext.getResources().getConfiguration().screenWidthDp; mGesturalNav = QuickStepContract.isGesturalMode( mNavigationModeController.addListener(this)); if (mDockManager != null) { Loading @@ -271,6 +281,18 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb } } @Override public void onDensityOrFontScaleChanged() { hideBouncer(true /* destroyView */); } @Override public void onConfigChanged(Configuration newConfig) { mIsPortraitMode = newConfig.orientation == Configuration.ORIENTATION_PORTRAIT; mScreenWidthDp = newConfig.screenWidthDp; updateLockIcon(); } @Override public void onPanelExpansionChanged(float expansion, boolean tracking) { // We don't want to translate the bounce when: Loading Loading @@ -317,14 +339,32 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb if (mLockIconContainer == null) { return; } boolean keyguardWithoutQs = mStatusBarStateController.getState() == StatusBarState.KEYGUARD && !mNotificationPanelViewController.isQsExpanded(); boolean lockVisible = (mBouncer.isShowing() || keyguardWithoutQs) && !mBouncer.isAnimatingAway() && !mKeyguardStateController.isKeyguardFadingAway(); boolean orientationChange = lockVisible && (mLastLockOrientationIsPortrait != mIsPortraitMode); if (mLastLockVisible != lockVisible) { if (mLastLockVisible != lockVisible || orientationChange) { mLastLockVisible = lockVisible; mLastLockOrientationIsPortrait = mIsPortraitMode; if (lockVisible) { FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mLockIconContainer.getLayoutParams(); if (mIsPortraitMode) { lp.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL; } else { final int width = (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, mScreenWidthDp, mContext.getResources().getDisplayMetrics()) / 3; mLockIconContainer.setMinimumWidth(width); lp.gravity = Gravity.TOP | Gravity.LEFT; } mLockIconContainer.setLayoutParams(lp); CrossFadeHelper.fadeIn(mLockIconContainer, AppearAnimationUtils.DEFAULT_APPEAR_DURATION /* duration */, 0 /* delay */); Loading Loading @@ -684,11 +724,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb && mBypassController.getBypassEnabled(); } @Override public void onDensityOrFontScaleChanged() { hideBouncer(true /* destroyView */); } @Override public void onNavigationModeChanged(int mode) { boolean gesturalNav = QuickStepContract.isGesturalMode(mode); Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.testing.TestableLooper; import android.view.View; import android.view.ViewGroup; import android.view.ViewPropertyAnimator; import android.widget.FrameLayout; import androidx.test.filters.SmallTest; Loading Loading @@ -103,6 +104,7 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { when(mLockIconContainer.getParent()).thenReturn(mock(ViewGroup.class)); when(mLockIconContainer.animate()).thenReturn(mock(ViewPropertyAnimator.class, RETURNS_DEEP_STUBS)); when(mLockIconContainer.getLayoutParams()).thenReturn(mock(FrameLayout.LayoutParams.class)); when(mKeyguardBouncerFactory.create( any(ViewGroup.class), Loading Loading
packages/SystemUI/res/layout/super_notification_shade.xml +2 −1 Original line number Diff line number Diff line Loading @@ -78,7 +78,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/status_bar_height" android:layout_gravity="top|center_horizontal"> android:layout_gravity="top|center_horizontal" android:gravity="center_horizontal"> <com.android.systemui.statusbar.phone.LockIcon android:id="@+id/lock_icon" android:layout_width="@dimen/keyguard_lock_width" Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +41 −6 Original line number Diff line number Diff line Loading @@ -26,13 +26,17 @@ import static com.android.systemui.statusbar.phone.BiometricUnlockController.MOD import android.content.ComponentCallbacks2; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.os.Bundle; import android.os.SystemClock; import android.util.TypedValue; import android.view.Gravity; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; import android.view.ViewRootImpl; import android.view.WindowManagerGlobal; import android.widget.FrameLayout; import androidx.annotation.VisibleForTesting; Loading Loading @@ -160,6 +164,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb private boolean mPulsing; private boolean mGesturalNav; private boolean mIsDocked; private boolean mIsPortraitMode; private int mScreenWidthDp; protected boolean mFirstUpdate = true; protected boolean mLastShowing; Loading @@ -174,6 +180,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb private boolean mLastPulsing; private int mLastBiometricMode; private boolean mLastLockVisible; private boolean mLastLockOrientationIsPortrait; private OnDismissAction mAfterKeyguardGoneAction; private Runnable mKeyguardGoneCancelAction; Loading Loading @@ -263,6 +270,9 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb mKeyguardUpdateManager.registerCallback(mUpdateMonitorCallback); mStatusBarStateController.addCallback(this); mConfigurationController.addCallback(this); mIsPortraitMode = mContext.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT; mScreenWidthDp = mContext.getResources().getConfiguration().screenWidthDp; mGesturalNav = QuickStepContract.isGesturalMode( mNavigationModeController.addListener(this)); if (mDockManager != null) { Loading @@ -271,6 +281,18 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb } } @Override public void onDensityOrFontScaleChanged() { hideBouncer(true /* destroyView */); } @Override public void onConfigChanged(Configuration newConfig) { mIsPortraitMode = newConfig.orientation == Configuration.ORIENTATION_PORTRAIT; mScreenWidthDp = newConfig.screenWidthDp; updateLockIcon(); } @Override public void onPanelExpansionChanged(float expansion, boolean tracking) { // We don't want to translate the bounce when: Loading Loading @@ -317,14 +339,32 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb if (mLockIconContainer == null) { return; } boolean keyguardWithoutQs = mStatusBarStateController.getState() == StatusBarState.KEYGUARD && !mNotificationPanelViewController.isQsExpanded(); boolean lockVisible = (mBouncer.isShowing() || keyguardWithoutQs) && !mBouncer.isAnimatingAway() && !mKeyguardStateController.isKeyguardFadingAway(); boolean orientationChange = lockVisible && (mLastLockOrientationIsPortrait != mIsPortraitMode); if (mLastLockVisible != lockVisible) { if (mLastLockVisible != lockVisible || orientationChange) { mLastLockVisible = lockVisible; mLastLockOrientationIsPortrait = mIsPortraitMode; if (lockVisible) { FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mLockIconContainer.getLayoutParams(); if (mIsPortraitMode) { lp.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL; } else { final int width = (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, mScreenWidthDp, mContext.getResources().getDisplayMetrics()) / 3; mLockIconContainer.setMinimumWidth(width); lp.gravity = Gravity.TOP | Gravity.LEFT; } mLockIconContainer.setLayoutParams(lp); CrossFadeHelper.fadeIn(mLockIconContainer, AppearAnimationUtils.DEFAULT_APPEAR_DURATION /* duration */, 0 /* delay */); Loading Loading @@ -684,11 +724,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb && mBypassController.getBypassEnabled(); } @Override public void onDensityOrFontScaleChanged() { hideBouncer(true /* destroyView */); } @Override public void onNavigationModeChanged(int mode) { boolean gesturalNav = QuickStepContract.isGesturalMode(mode); Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.testing.TestableLooper; import android.view.View; import android.view.ViewGroup; import android.view.ViewPropertyAnimator; import android.widget.FrameLayout; import androidx.test.filters.SmallTest; Loading Loading @@ -103,6 +104,7 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { when(mLockIconContainer.getParent()).thenReturn(mock(ViewGroup.class)); when(mLockIconContainer.animate()).thenReturn(mock(ViewPropertyAnimator.class, RETURNS_DEEP_STUBS)); when(mLockIconContainer.getLayoutParams()).thenReturn(mock(FrameLayout.LayoutParams.class)); when(mKeyguardBouncerFactory.create( any(ViewGroup.class), Loading