Move the 'next launch target' logic into the task stack

For better reusability in other flavors of Recents.

Bug: 32101881
Test: Behavior is covered by existing automated tests.
Change-Id: Ibe39cbae0b5973210cad478a9c5ab75280ee0ac2
This commit is contained in:
Manu Cornet
2016-11-11 09:52:45 -08:00
parent 3713151425
commit 26eec78179
2 changed files with 20 additions and 8 deletions

View File

@@ -849,6 +849,24 @@ public class TaskStack {
return null;
}
/**
* Returns the task in stack tasks which should be launched next if Recents are toggled
* again, or null if there is no task to be launched.
*/
public Task getNextLaunchTarget() {
int taskCount = getTaskCount();
if (taskCount == 0) {
return null;
}
int launchTaskIndex = indexOfStackTask(getLaunchTarget());
if (launchTaskIndex != -1) {
launchTaskIndex = Math.max(0, launchTaskIndex - 1);
} else {
launchTaskIndex = getTaskCount() - 1;
}
return getStackTasks().get(launchTaskIndex);
}
/** Returns the index of this task in this current task stack */
public int indexOfStackTask(Task t) {
return mStackTaskList.indexOf(t);

View File

@@ -1683,17 +1683,11 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
return;
}
int launchTaskIndex = mStack.indexOfStackTask(mStack.getLaunchTarget());
if (launchTaskIndex != -1) {
launchTaskIndex = Math.max(0, launchTaskIndex - 1);
} else {
launchTaskIndex = mStack.getTaskCount() - 1;
}
if (launchTaskIndex != -1) {
final Task launchTask = mStack.getNextLaunchTarget();
if (launchTask != null) {
// Stop all animations
cancelAllTaskViewAnimations();
final Task launchTask = mStack.getStackTasks().get(launchTaskIndex);
float curScroll = mStackScroller.getStackScroll();
float targetScroll = mLayoutAlgorithm.getStackScrollForTaskAtInitialOffset(launchTask);
float absScrollDiff = Math.abs(targetScroll - curScroll);