Fixing issue with swipe-dismiss animation clobbering home animation. am: eca47ef am: 1769e07
am: 7e0b7e1 * commit '7e0b7e1ed00916ac9d988a1d646b4f80c2bc808f': Fixing issue with swipe-dismiss animation clobbering home animation. Change-Id: I6baabb8f244d262a1f936aa2252259e8dbe543f0
This commit is contained in:
commit
67fda8288b
packages/SystemUI/src/com/android/systemui/recents/views
@ -416,7 +416,7 @@ public class TaskStackLayoutAlgorithm {
|
||||
int prevFocusState = mFocusState;
|
||||
mFocusState = focusState;
|
||||
updateFrontBackTransforms();
|
||||
if (mCb != null) {
|
||||
if (mCb != null && (prevFocusState != focusState)) {
|
||||
mCb.onFocusStateChanged(prevFocusState, focusState);
|
||||
}
|
||||
}
|
||||
|
@ -647,7 +647,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
||||
*/
|
||||
private void relayoutTaskViews(AnimationProps animation, boolean ignoreTaskOverrides) {
|
||||
// If we had a deferred animation, cancel that
|
||||
mDeferredTaskViewLayoutAnimation = null;
|
||||
cancelDeferredTaskViewLayoutAnimation();
|
||||
|
||||
// Synchronize the current set of TaskViews
|
||||
bindVisibleTaskViews(mStackScroller.getStackScroll(),
|
||||
@ -739,23 +739,12 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
||||
|
||||
/**
|
||||
* Cancels all {@link TaskView} animations.
|
||||
*
|
||||
* @see #cancelAllTaskViewAnimations(ArraySet<Task.TaskKey>)
|
||||
*/
|
||||
void cancelAllTaskViewAnimations() {
|
||||
cancelAllTaskViewAnimations(mIgnoreTasks);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cancels all {@link TaskView} animations.
|
||||
*
|
||||
* @param ignoreTasksSet The set of tasks to continue running their animations.
|
||||
*/
|
||||
void cancelAllTaskViewAnimations(ArraySet<Task.TaskKey> ignoreTasksSet) {
|
||||
List<TaskView> taskViews = getTaskViews();
|
||||
for (int i = taskViews.size() - 1; i >= 0; i--) {
|
||||
final TaskView tv = taskViews.get(i);
|
||||
if (!ignoreTasksSet.contains(tv.getTask().key)) {
|
||||
if (!mIgnoreTasks.contains(tv.getTask().key)) {
|
||||
tv.cancelTransformAnimation();
|
||||
}
|
||||
}
|
||||
@ -1675,8 +1664,10 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
|
||||
|
||||
public final void onBusEvent(DismissRecentsToHomeAnimationStarted event) {
|
||||
// Stop any scrolling
|
||||
cancelDeferredTaskViewLayoutAnimation();
|
||||
mStackScroller.stopScroller();
|
||||
mStackScroller.stopBoundScrollAnimation();
|
||||
mTouchHandler.finishAnimations();
|
||||
|
||||
// Start the task animations
|
||||
mAnimationHelper.startExitToHomeAnimation(event.animated, event.getAnimationTrigger());
|
||||
|
@ -188,6 +188,18 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finishes all scroll-fling and swipe animations currently running.
|
||||
*/
|
||||
public void finishAnimations() {
|
||||
Utilities.cancelAnimationWithoutCallbacks(mScrollFlingAnimator);
|
||||
ArrayMap<View, Animator> existingAnimators = new ArrayMap<>(mSwipeHelperAnimations);
|
||||
for (int i = 0; i < existingAnimators.size(); i++) {
|
||||
existingAnimators.get(existingAnimators.keyAt(i)).end();
|
||||
}
|
||||
mSwipeHelperAnimations.clear();
|
||||
}
|
||||
|
||||
private boolean handleTouchEvent(MotionEvent ev) {
|
||||
// Short circuit if we have no children
|
||||
if (mSv.getTaskViews().size() == 0) {
|
||||
@ -207,19 +219,11 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback {
|
||||
mActiveTaskView = findViewAtPoint(mDownX, mDownY);
|
||||
|
||||
// Stop the current scroll if it is still flinging
|
||||
mSv.cancelDeferredTaskViewLayoutAnimation();
|
||||
mScroller.stopScroller();
|
||||
mScroller.stopBoundScrollAnimation();
|
||||
mScroller.resetDeltaScroll();
|
||||
Utilities.cancelAnimationWithoutCallbacks(mScrollFlingAnimator);
|
||||
|
||||
// Finish any existing task animations from the delete
|
||||
mSv.cancelAllTaskViewAnimations();
|
||||
// Finish any of the swipe helper animations
|
||||
ArrayMap<View, Animator> existingAnimators = new ArrayMap<>(mSwipeHelperAnimations);
|
||||
for (int i = 0; i < existingAnimators.size(); i++) {
|
||||
existingAnimators.get(existingAnimators.keyAt(i)).end();
|
||||
}
|
||||
mSwipeHelperAnimations.clear();
|
||||
finishAnimations();
|
||||
|
||||
// Initialize the velocity tracker
|
||||
initOrResetVelocityTracker();
|
||||
|
Loading…
x
Reference in New Issue
Block a user