Loading packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +32 −31 Original line number Diff line number Diff line Loading @@ -66,9 +66,7 @@ import com.android.systemui.recents.Recents; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.activity.DockedTopTaskEvent; import com.android.systemui.recents.events.activity.RecentsActivityStartingEvent; import com.android.systemui.recents.events.activity.ToggleRecentsEvent; import com.android.systemui.recents.events.activity.UndockingTaskEvent; import com.android.systemui.recents.events.ui.RecentsDrawnEvent; import com.android.systemui.recents.events.ui.RecentsGrowingEvent; import com.android.systemui.recents.misc.SystemServicesProxy; import com.android.systemui.stackdivider.events.StartedDragingEvent; Loading Loading @@ -124,7 +122,7 @@ public class DividerView extends FrameLayout implements OnTouchListener, private int mTouchSlop; private boolean mBackgroundLifted; private boolean mIsInMinimizeInteraction; private int mDividerPositionBeforeMinimized; private SnapTarget mSnapTargetBeforeMinimized; private int mDividerInsets; private int mDisplayWidth; Loading Loading @@ -318,6 +316,12 @@ public class DividerView extends FrameLayout implements OnTouchListener, protected void onAttachedToWindow() { super.onAttachedToWindow(); EventBus.getDefault().register(this); // Save the current target if not minimized once attached to window if (mHomeStackResizable && mDockSide != WindowManager.DOCKED_INVALID && !mIsInMinimizeInteraction) { saveSnapTargetBeforeMinimized(mSnapTargetBeforeMinimized); } } @Override Loading Loading @@ -381,8 +385,10 @@ public class DividerView extends FrameLayout implements OnTouchListener, (isHorizontalDivision() ? mDisplayHeight : mDisplayWidth)); mSnapAlgorithm = null; initializeSnapAlgorithm(); mDividerPositionBeforeMinimized = mSnapAlgorithm.calculateNonDismissingSnapTarget(position) .position; // Set the snap target before minimized but do not save until divider is attached and not // minimized because it does not know its minimized state yet. mSnapTargetBeforeMinimized = mSnapAlgorithm.calculateNonDismissingSnapTarget(position); } public WindowManagerProxy getWindowManagerProxy() { Loading Loading @@ -601,6 +607,11 @@ public class DividerView extends FrameLayout implements OnTouchListener, mEntranceAnimationRunning = false; mExitAnimationRunning = false; EventBus.getDefault().send(new StoppedDragingEvent()); // Record last snap target the divider moved to if (mHomeStackResizable && !mIsInMinimizeInteraction) { saveSnapTargetBeforeMinimized(snapTarget); } }; Runnable notCancelledEndAction = () -> { // Reset minimized divider position after unminimized state animation finishes Loading Loading @@ -629,15 +640,15 @@ public class DividerView extends FrameLayout implements OnTouchListener, delay = mSfChoreographer.getSurfaceFlingerOffsetMs(); } if (delay == 0) { endAction.run(); if (!mCancelled) { notCancelledEndAction.run(); } endAction.run(); } else { mHandler.postDelayed(endAction, delay); if (!mCancelled) { mHandler.postDelayed(notCancelledEndAction, delay); } mHandler.postDelayed(endAction, delay); } } }); Loading Loading @@ -744,12 +755,9 @@ public class DividerView extends FrameLayout implements OnTouchListener, if (mIsInMinimizeInteraction != minimized) { if (minimized) { mIsInMinimizeInteraction = true; int position = mMinimizedSnapAlgorithm.getMiddleTarget().position; resizeStack(position, position, mMinimizedSnapAlgorithm.getMiddleTarget()); resizeStack(mMinimizedSnapAlgorithm.getMiddleTarget()); } else { resizeStack(mDividerPositionBeforeMinimized, mDividerPositionBeforeMinimized, mSnapAlgorithm.calculateNonDismissingSnapTarget( mDividerPositionBeforeMinimized)); resizeStack(mSnapTargetBeforeMinimized); mIsInMinimizeInteraction = false; } } Loading Loading @@ -786,20 +794,15 @@ public class DividerView extends FrameLayout implements OnTouchListener, mDockedStackMinimized = minimized; } else if (mDockedStackMinimized != minimized) { mIsInMinimizeInteraction = true; if (minimized && (mCurrentAnimator == null || !mCurrentAnimator.isRunning()) && (mDividerPositionBeforeMinimized <= 0 || !mAdjustedForIme)) { savePositionBeforeMinimized(); } mMinimizedSnapAlgorithm = null; mDockedStackMinimized = minimized; initializeSnapAlgorithm(); stopDragging(minimized ? mDividerPositionBeforeMinimized ? mSnapTargetBeforeMinimized.position : getCurrentPosition(), minimized ? mMinimizedSnapAlgorithm.getMiddleTarget() : mSnapAlgorithm.calculateNonDismissingSnapTarget( mDividerPositionBeforeMinimized), : mSnapTargetBeforeMinimized, animDuration, Interpolators.FAST_OUT_SLOW_IN, 0); setAdjustedForIme(false, animDuration); } Loading Loading @@ -844,17 +847,11 @@ public class DividerView extends FrameLayout implements OnTouchListener, .setDuration(animDuration) .start(); mAdjustedForIme = adjustedForIme; // Only get new position if home stack is resizable, ime is open and not minimized // (including the animation) if (mHomeStackResizable && adjustedForIme && !mIsInMinimizeInteraction) { savePositionBeforeMinimized(); } } private void savePositionBeforeMinimized() { mDividerPositionBeforeMinimized = getCurrentPosition(); mState.mRatioPositionBeforeMinimized = (float) mDividerPositionBeforeMinimized / private void saveSnapTargetBeforeMinimized(SnapTarget target) { mSnapTargetBeforeMinimized = target; mState.mRatioPositionBeforeMinimized = (float) target.position / (isHorizontalDivision() ? mDisplayHeight : mDisplayWidth); } Loading @@ -872,7 +869,6 @@ public class DividerView extends FrameLayout implements OnTouchListener, updateDisplayInfo(); } public void notifyDockSideChanged(int newDockSide) { mDockSide = newDockSide; mMinimizedShadow.setDockSide(mDockSide); Loading Loading @@ -934,6 +930,10 @@ public class DividerView extends FrameLayout implements OnTouchListener, mSfChoreographer.scheduleAtSfVsync(mHandler, message); } private void resizeStack(SnapTarget taskSnapTarget) { resizeStack(taskSnapTarget.position, taskSnapTarget.position, taskSnapTarget); } public void resizeStack(int position, int taskPosition, SnapTarget taskSnapTarget) { if (mRemoved) { // This divider view has been removed so shouldn't have any additional influence. Loading @@ -952,8 +952,9 @@ public class DividerView extends FrameLayout implements OnTouchListener, mLastResizeRect.set(mDockedRect); if (mHomeStackResizable && mIsInMinimizeInteraction) { calculateBoundsForPosition(mDividerPositionBeforeMinimized, mDockSide, mDockedTaskRect); calculateBoundsForPosition(mDividerPositionBeforeMinimized, calculateBoundsForPosition(mSnapTargetBeforeMinimized.position, mDockSide, mDockedTaskRect); calculateBoundsForPosition(mSnapTargetBeforeMinimized.position, DockedDividerUtils.invertDockSide(mDockSide), mOtherTaskRect); mWindowManagerProxy.resizeDockedStack(mDockedRect, mDockedTaskRect, mDockedTaskRect, mOtherTaskRect, null); Loading Loading
packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +32 −31 Original line number Diff line number Diff line Loading @@ -66,9 +66,7 @@ import com.android.systemui.recents.Recents; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.activity.DockedTopTaskEvent; import com.android.systemui.recents.events.activity.RecentsActivityStartingEvent; import com.android.systemui.recents.events.activity.ToggleRecentsEvent; import com.android.systemui.recents.events.activity.UndockingTaskEvent; import com.android.systemui.recents.events.ui.RecentsDrawnEvent; import com.android.systemui.recents.events.ui.RecentsGrowingEvent; import com.android.systemui.recents.misc.SystemServicesProxy; import com.android.systemui.stackdivider.events.StartedDragingEvent; Loading Loading @@ -124,7 +122,7 @@ public class DividerView extends FrameLayout implements OnTouchListener, private int mTouchSlop; private boolean mBackgroundLifted; private boolean mIsInMinimizeInteraction; private int mDividerPositionBeforeMinimized; private SnapTarget mSnapTargetBeforeMinimized; private int mDividerInsets; private int mDisplayWidth; Loading Loading @@ -318,6 +316,12 @@ public class DividerView extends FrameLayout implements OnTouchListener, protected void onAttachedToWindow() { super.onAttachedToWindow(); EventBus.getDefault().register(this); // Save the current target if not minimized once attached to window if (mHomeStackResizable && mDockSide != WindowManager.DOCKED_INVALID && !mIsInMinimizeInteraction) { saveSnapTargetBeforeMinimized(mSnapTargetBeforeMinimized); } } @Override Loading Loading @@ -381,8 +385,10 @@ public class DividerView extends FrameLayout implements OnTouchListener, (isHorizontalDivision() ? mDisplayHeight : mDisplayWidth)); mSnapAlgorithm = null; initializeSnapAlgorithm(); mDividerPositionBeforeMinimized = mSnapAlgorithm.calculateNonDismissingSnapTarget(position) .position; // Set the snap target before minimized but do not save until divider is attached and not // minimized because it does not know its minimized state yet. mSnapTargetBeforeMinimized = mSnapAlgorithm.calculateNonDismissingSnapTarget(position); } public WindowManagerProxy getWindowManagerProxy() { Loading Loading @@ -601,6 +607,11 @@ public class DividerView extends FrameLayout implements OnTouchListener, mEntranceAnimationRunning = false; mExitAnimationRunning = false; EventBus.getDefault().send(new StoppedDragingEvent()); // Record last snap target the divider moved to if (mHomeStackResizable && !mIsInMinimizeInteraction) { saveSnapTargetBeforeMinimized(snapTarget); } }; Runnable notCancelledEndAction = () -> { // Reset minimized divider position after unminimized state animation finishes Loading Loading @@ -629,15 +640,15 @@ public class DividerView extends FrameLayout implements OnTouchListener, delay = mSfChoreographer.getSurfaceFlingerOffsetMs(); } if (delay == 0) { endAction.run(); if (!mCancelled) { notCancelledEndAction.run(); } endAction.run(); } else { mHandler.postDelayed(endAction, delay); if (!mCancelled) { mHandler.postDelayed(notCancelledEndAction, delay); } mHandler.postDelayed(endAction, delay); } } }); Loading Loading @@ -744,12 +755,9 @@ public class DividerView extends FrameLayout implements OnTouchListener, if (mIsInMinimizeInteraction != minimized) { if (minimized) { mIsInMinimizeInteraction = true; int position = mMinimizedSnapAlgorithm.getMiddleTarget().position; resizeStack(position, position, mMinimizedSnapAlgorithm.getMiddleTarget()); resizeStack(mMinimizedSnapAlgorithm.getMiddleTarget()); } else { resizeStack(mDividerPositionBeforeMinimized, mDividerPositionBeforeMinimized, mSnapAlgorithm.calculateNonDismissingSnapTarget( mDividerPositionBeforeMinimized)); resizeStack(mSnapTargetBeforeMinimized); mIsInMinimizeInteraction = false; } } Loading Loading @@ -786,20 +794,15 @@ public class DividerView extends FrameLayout implements OnTouchListener, mDockedStackMinimized = minimized; } else if (mDockedStackMinimized != minimized) { mIsInMinimizeInteraction = true; if (minimized && (mCurrentAnimator == null || !mCurrentAnimator.isRunning()) && (mDividerPositionBeforeMinimized <= 0 || !mAdjustedForIme)) { savePositionBeforeMinimized(); } mMinimizedSnapAlgorithm = null; mDockedStackMinimized = minimized; initializeSnapAlgorithm(); stopDragging(minimized ? mDividerPositionBeforeMinimized ? mSnapTargetBeforeMinimized.position : getCurrentPosition(), minimized ? mMinimizedSnapAlgorithm.getMiddleTarget() : mSnapAlgorithm.calculateNonDismissingSnapTarget( mDividerPositionBeforeMinimized), : mSnapTargetBeforeMinimized, animDuration, Interpolators.FAST_OUT_SLOW_IN, 0); setAdjustedForIme(false, animDuration); } Loading Loading @@ -844,17 +847,11 @@ public class DividerView extends FrameLayout implements OnTouchListener, .setDuration(animDuration) .start(); mAdjustedForIme = adjustedForIme; // Only get new position if home stack is resizable, ime is open and not minimized // (including the animation) if (mHomeStackResizable && adjustedForIme && !mIsInMinimizeInteraction) { savePositionBeforeMinimized(); } } private void savePositionBeforeMinimized() { mDividerPositionBeforeMinimized = getCurrentPosition(); mState.mRatioPositionBeforeMinimized = (float) mDividerPositionBeforeMinimized / private void saveSnapTargetBeforeMinimized(SnapTarget target) { mSnapTargetBeforeMinimized = target; mState.mRatioPositionBeforeMinimized = (float) target.position / (isHorizontalDivision() ? mDisplayHeight : mDisplayWidth); } Loading @@ -872,7 +869,6 @@ public class DividerView extends FrameLayout implements OnTouchListener, updateDisplayInfo(); } public void notifyDockSideChanged(int newDockSide) { mDockSide = newDockSide; mMinimizedShadow.setDockSide(mDockSide); Loading Loading @@ -934,6 +930,10 @@ public class DividerView extends FrameLayout implements OnTouchListener, mSfChoreographer.scheduleAtSfVsync(mHandler, message); } private void resizeStack(SnapTarget taskSnapTarget) { resizeStack(taskSnapTarget.position, taskSnapTarget.position, taskSnapTarget); } public void resizeStack(int position, int taskPosition, SnapTarget taskSnapTarget) { if (mRemoved) { // This divider view has been removed so shouldn't have any additional influence. Loading @@ -952,8 +952,9 @@ public class DividerView extends FrameLayout implements OnTouchListener, mLastResizeRect.set(mDockedRect); if (mHomeStackResizable && mIsInMinimizeInteraction) { calculateBoundsForPosition(mDividerPositionBeforeMinimized, mDockSide, mDockedTaskRect); calculateBoundsForPosition(mDividerPositionBeforeMinimized, calculateBoundsForPosition(mSnapTargetBeforeMinimized.position, mDockSide, mDockedTaskRect); calculateBoundsForPosition(mSnapTargetBeforeMinimized.position, DockedDividerUtils.invertDockSide(mDockSide), mOtherTaskRect); mWindowManagerProxy.resizeDockedStack(mDockedRect, mDockedTaskRect, mDockedTaskRect, mOtherTaskRect, null); Loading