Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java +18 −8 Original line number Diff line number Diff line Loading @@ -168,7 +168,8 @@ public class KeyguardAffordanceHelper { distance = mTranslationOnDown + distance; distance = Math.max(0, distance); } setTranslation(distance, false /* isReset */, false /* animateReset */); setTranslation(distance, false /* isReset */, false /* animateReset */, false /* force */); } break; Loading Loading @@ -373,11 +374,12 @@ public class KeyguardAffordanceHelper { targetView.finishAnimation(velocity, mAnimationEndRunnable); } private void setTranslation(float translation, boolean isReset, boolean animateReset) { private void setTranslation(float translation, boolean isReset, boolean animateReset, boolean force) { translation = rightSwipePossible() ? translation : Math.max(0, translation); translation = leftSwipePossible() ? translation : Math.min(0, translation); float absTranslation = Math.abs(translation); if (translation != mTranslation || isReset) { if (translation != mTranslation || isReset || force) { KeyguardAffordanceView targetView = translation > 0 ? mLeftIcon : mRightIcon; KeyguardAffordanceView otherView = translation > 0 ? mRightIcon : mLeftIcon; float alpha = absTranslation / getMinTranslationAmount(); Loading @@ -392,15 +394,15 @@ public class KeyguardAffordanceHelper { boolean slowAnimation = isReset && isBelowFalsingThreshold(); if (!isReset) { updateIcon(targetView, radius, alpha + fadeOutAlpha * targetView.getRestingAlpha(), false, false, false, false); false, false, force, false); } else { updateIcon(targetView, 0.0f, fadeOutAlpha * targetView.getRestingAlpha(), animateIcons, slowAnimation, false, forceNoCircleAnimation); animateIcons, slowAnimation, force, forceNoCircleAnimation); } updateIcon(otherView, 0.0f, fadeOutAlpha * otherView.getRestingAlpha(), animateIcons, slowAnimation, false, forceNoCircleAnimation); animateIcons, slowAnimation, force, forceNoCircleAnimation); updateIcon(mCenterIcon, 0.0f, fadeOutAlpha * mCenterIcon.getRestingAlpha(), animateIcons, slowAnimation, false, forceNoCircleAnimation); animateIcons, slowAnimation, force, forceNoCircleAnimation); mTranslation = translation; } Loading Loading @@ -508,8 +510,12 @@ public class KeyguardAffordanceHelper { } public void reset(boolean animate) { reset(animate, false /* force */); } public void reset(boolean animate, boolean force) { cancelAnimation(); setTranslation(0.0f, true, animate); setTranslation(0.0f, true, animate, force); mMotionCancelled = true; if (mSwipingInProgress) { mCallback.onSwipingAborted(); Loading @@ -517,6 +523,10 @@ public class KeyguardAffordanceHelper { } } public void resetImmediately() { reset(false /* animate */, true /* force */); } public boolean isSwipingInProgress() { return mSwipingInProgress; } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +8 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,6 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.keyguard.KeyguardStatusView; import com.android.systemui.DejankUtils; import com.android.systemui.EventLogTags; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.classifier.FalsingManager; Loading Loading @@ -2463,6 +2462,14 @@ public class NotificationPanelView extends PanelView implements } }; @Override public void setTouchDisabled(boolean disabled) { super.setTouchDisabled(disabled); if (disabled && mAffordanceHelper.isSwipingInProgress() && !mIsLaunchTransitionRunning) { mAffordanceHelper.resetImmediately(); } } public void setDark(boolean dark) { mDark = dark; mKeyguardStatusView.setDark(dark); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +5 −2 Original line number Diff line number Diff line Loading @@ -221,10 +221,13 @@ public abstract class PanelView extends FrameLayout { public void setTouchDisabled(boolean disabled) { mTouchDisabled = disabled; if (mTouchDisabled && mTracking) { if (mTouchDisabled) { cancelHeightAnimator(); if (mTracking) { onTrackingStopped(true /* expanded */); } } } public void startExpandLatencyTracking() { if (LatencyTracker.isEnabled(mContext)) { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +6 −7 Original line number Diff line number Diff line Loading @@ -4056,13 +4056,6 @@ public class StatusBar extends SystemUI implements DemoMode, setBarState(StatusBarState.KEYGUARD); } updateKeyguardState(false /* goingToFullShade */, false /* fromShadeLocked */); if (!mDeviceInteractive) { // If the screen is off already, we need to disable touch events because these might // collapse the panel after we expanded it, and thus we would end up with a blank // Keyguard. mNotificationPanel.setTouchDisabled(true); } if (mState == StatusBarState.KEYGUARD) { instantExpandNotificationsPanel(); } else if (mState == StatusBarState.FULLSCREEN_USER_SWITCHER) { Loading Loading @@ -4861,6 +4854,12 @@ public class StatusBar extends SystemUI implements DemoMode, mStackScroller.setAnimationsEnabled(false); mVisualStabilityManager.setScreenOn(false); updateVisibleToUser(); // We need to disable touch events because these might // collapse the panel after we expanded it, and thus we would end up with a blank // Keyguard. mNotificationPanel.setTouchDisabled(true); mStatusBarWindow.cancelCurrentTouch(); if (mLaunchCameraOnFinishedGoingToSleep) { mLaunchCameraOnFinishedGoingToSleep = false; Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +28 −3 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.os.IBinder; import android.os.SystemClock; import android.util.AttributeSet; import android.view.ActionMode; import android.view.InputDevice; import android.view.InputQueue; import android.view.KeyEvent; import android.view.LayoutInflater; Loading Loading @@ -84,6 +85,8 @@ public class StatusBarWindowView extends FrameLayout { private ActionMode mFloatingActionMode; private FloatingToolbar mFloatingToolbar; private ViewTreeObserver.OnPreDrawListener mFloatingToolbarPreDrawListener; private boolean mTouchCancelled; private boolean mTouchActive; public StatusBarWindowView(Context context, AttributeSet attrs) { super(context, attrs); Loading Loading @@ -239,10 +242,20 @@ public class StatusBarWindowView extends FrameLayout { @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getActionMasked() == MotionEvent.ACTION_DOWN && mNotificationPanel.isFullyCollapsed()) { boolean isDown = ev.getActionMasked() == MotionEvent.ACTION_DOWN; if (isDown && mNotificationPanel.isFullyCollapsed()) { mNotificationPanel.startExpandLatencyTracking(); } if (isDown) { mTouchActive = true; mTouchCancelled = false; } else if (ev.getActionMasked() == MotionEvent.ACTION_UP || ev.getActionMasked() == MotionEvent.ACTION_CANCEL) { mTouchActive = false; } if (mTouchCancelled) { return false; } mFalsingManager.onTouchEvent(ev, getWidth(), getHeight()); if (mBrightnessMirror != null && mBrightnessMirror.getVisibility() == VISIBLE) { // Disallow new pointers while the brightness mirror is visible. This is so that you Loading @@ -252,7 +265,7 @@ public class StatusBarWindowView extends FrameLayout { return false; } } if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) { if (isDown) { mStackScrollLayout.closeControlsIfOutsideTouch(ev); } if (mService.isDozing()) { Loading Loading @@ -349,6 +362,18 @@ public class StatusBarWindowView extends FrameLayout { } } public void cancelCurrentTouch() { if (mTouchActive) { final long now = SystemClock.uptimeMillis(); MotionEvent event = MotionEvent.obtain(now, now, MotionEvent.ACTION_CANCEL, 0.0f, 0.0f, 0); event.setSource(InputDevice.SOURCE_TOUCHSCREEN); dispatchTouchEvent(event); event.recycle(); mTouchCancelled = true; } } public class LayoutParams extends FrameLayout.LayoutParams { public boolean ignoreRightInset; Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java +18 −8 Original line number Diff line number Diff line Loading @@ -168,7 +168,8 @@ public class KeyguardAffordanceHelper { distance = mTranslationOnDown + distance; distance = Math.max(0, distance); } setTranslation(distance, false /* isReset */, false /* animateReset */); setTranslation(distance, false /* isReset */, false /* animateReset */, false /* force */); } break; Loading Loading @@ -373,11 +374,12 @@ public class KeyguardAffordanceHelper { targetView.finishAnimation(velocity, mAnimationEndRunnable); } private void setTranslation(float translation, boolean isReset, boolean animateReset) { private void setTranslation(float translation, boolean isReset, boolean animateReset, boolean force) { translation = rightSwipePossible() ? translation : Math.max(0, translation); translation = leftSwipePossible() ? translation : Math.min(0, translation); float absTranslation = Math.abs(translation); if (translation != mTranslation || isReset) { if (translation != mTranslation || isReset || force) { KeyguardAffordanceView targetView = translation > 0 ? mLeftIcon : mRightIcon; KeyguardAffordanceView otherView = translation > 0 ? mRightIcon : mLeftIcon; float alpha = absTranslation / getMinTranslationAmount(); Loading @@ -392,15 +394,15 @@ public class KeyguardAffordanceHelper { boolean slowAnimation = isReset && isBelowFalsingThreshold(); if (!isReset) { updateIcon(targetView, radius, alpha + fadeOutAlpha * targetView.getRestingAlpha(), false, false, false, false); false, false, force, false); } else { updateIcon(targetView, 0.0f, fadeOutAlpha * targetView.getRestingAlpha(), animateIcons, slowAnimation, false, forceNoCircleAnimation); animateIcons, slowAnimation, force, forceNoCircleAnimation); } updateIcon(otherView, 0.0f, fadeOutAlpha * otherView.getRestingAlpha(), animateIcons, slowAnimation, false, forceNoCircleAnimation); animateIcons, slowAnimation, force, forceNoCircleAnimation); updateIcon(mCenterIcon, 0.0f, fadeOutAlpha * mCenterIcon.getRestingAlpha(), animateIcons, slowAnimation, false, forceNoCircleAnimation); animateIcons, slowAnimation, force, forceNoCircleAnimation); mTranslation = translation; } Loading Loading @@ -508,8 +510,12 @@ public class KeyguardAffordanceHelper { } public void reset(boolean animate) { reset(animate, false /* force */); } public void reset(boolean animate, boolean force) { cancelAnimation(); setTranslation(0.0f, true, animate); setTranslation(0.0f, true, animate, force); mMotionCancelled = true; if (mSwipingInProgress) { mCallback.onSwipingAborted(); Loading @@ -517,6 +523,10 @@ public class KeyguardAffordanceHelper { } } public void resetImmediately() { reset(false /* animate */, true /* force */); } public boolean isSwipingInProgress() { return mSwipingInProgress; } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +8 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,6 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.keyguard.KeyguardStatusView; import com.android.systemui.DejankUtils; import com.android.systemui.EventLogTags; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.classifier.FalsingManager; Loading Loading @@ -2463,6 +2462,14 @@ public class NotificationPanelView extends PanelView implements } }; @Override public void setTouchDisabled(boolean disabled) { super.setTouchDisabled(disabled); if (disabled && mAffordanceHelper.isSwipingInProgress() && !mIsLaunchTransitionRunning) { mAffordanceHelper.resetImmediately(); } } public void setDark(boolean dark) { mDark = dark; mKeyguardStatusView.setDark(dark); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +5 −2 Original line number Diff line number Diff line Loading @@ -221,10 +221,13 @@ public abstract class PanelView extends FrameLayout { public void setTouchDisabled(boolean disabled) { mTouchDisabled = disabled; if (mTouchDisabled && mTracking) { if (mTouchDisabled) { cancelHeightAnimator(); if (mTracking) { onTrackingStopped(true /* expanded */); } } } public void startExpandLatencyTracking() { if (LatencyTracker.isEnabled(mContext)) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +6 −7 Original line number Diff line number Diff line Loading @@ -4056,13 +4056,6 @@ public class StatusBar extends SystemUI implements DemoMode, setBarState(StatusBarState.KEYGUARD); } updateKeyguardState(false /* goingToFullShade */, false /* fromShadeLocked */); if (!mDeviceInteractive) { // If the screen is off already, we need to disable touch events because these might // collapse the panel after we expanded it, and thus we would end up with a blank // Keyguard. mNotificationPanel.setTouchDisabled(true); } if (mState == StatusBarState.KEYGUARD) { instantExpandNotificationsPanel(); } else if (mState == StatusBarState.FULLSCREEN_USER_SWITCHER) { Loading Loading @@ -4861,6 +4854,12 @@ public class StatusBar extends SystemUI implements DemoMode, mStackScroller.setAnimationsEnabled(false); mVisualStabilityManager.setScreenOn(false); updateVisibleToUser(); // We need to disable touch events because these might // collapse the panel after we expanded it, and thus we would end up with a blank // Keyguard. mNotificationPanel.setTouchDisabled(true); mStatusBarWindow.cancelCurrentTouch(); if (mLaunchCameraOnFinishedGoingToSleep) { mLaunchCameraOnFinishedGoingToSleep = false; Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +28 −3 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.os.IBinder; import android.os.SystemClock; import android.util.AttributeSet; import android.view.ActionMode; import android.view.InputDevice; import android.view.InputQueue; import android.view.KeyEvent; import android.view.LayoutInflater; Loading Loading @@ -84,6 +85,8 @@ public class StatusBarWindowView extends FrameLayout { private ActionMode mFloatingActionMode; private FloatingToolbar mFloatingToolbar; private ViewTreeObserver.OnPreDrawListener mFloatingToolbarPreDrawListener; private boolean mTouchCancelled; private boolean mTouchActive; public StatusBarWindowView(Context context, AttributeSet attrs) { super(context, attrs); Loading Loading @@ -239,10 +242,20 @@ public class StatusBarWindowView extends FrameLayout { @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getActionMasked() == MotionEvent.ACTION_DOWN && mNotificationPanel.isFullyCollapsed()) { boolean isDown = ev.getActionMasked() == MotionEvent.ACTION_DOWN; if (isDown && mNotificationPanel.isFullyCollapsed()) { mNotificationPanel.startExpandLatencyTracking(); } if (isDown) { mTouchActive = true; mTouchCancelled = false; } else if (ev.getActionMasked() == MotionEvent.ACTION_UP || ev.getActionMasked() == MotionEvent.ACTION_CANCEL) { mTouchActive = false; } if (mTouchCancelled) { return false; } mFalsingManager.onTouchEvent(ev, getWidth(), getHeight()); if (mBrightnessMirror != null && mBrightnessMirror.getVisibility() == VISIBLE) { // Disallow new pointers while the brightness mirror is visible. This is so that you Loading @@ -252,7 +265,7 @@ public class StatusBarWindowView extends FrameLayout { return false; } } if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) { if (isDown) { mStackScrollLayout.closeControlsIfOutsideTouch(ev); } if (mService.isDozing()) { Loading Loading @@ -349,6 +362,18 @@ public class StatusBarWindowView extends FrameLayout { } } public void cancelCurrentTouch() { if (mTouchActive) { final long now = SystemClock.uptimeMillis(); MotionEvent event = MotionEvent.obtain(now, now, MotionEvent.ACTION_CANCEL, 0.0f, 0.0f, 0); event.setSource(InputDevice.SOURCE_TOUCHSCREEN); dispatchTouchEvent(event); event.recycle(); mTouchCancelled = true; } } public class LayoutParams extends FrameLayout.LayoutParams { public boolean ignoreRightInset; Loading