Move offscreenTranslation calculation to LauncherRecentsView

Couple of benefits here:
- Doesn't rely on having a measured TaskView, since it already knows how
  to calculate the task size
- Code can be shared (planning to use this for quick switch from home)

Bug:
Change-Id: I517a78506ac95fcc37d9225a074427941d691903
This commit is contained in:
Tony Wickham 2019-09-24 13:58:07 -07:00
parent 912206c17d
commit 8a1ba838f4
3 changed files with 23 additions and 12 deletions

View File

@ -273,17 +273,7 @@ public final class LauncherActivityControllerHelper implements ActivityControlHe
// from the side. Calculate the start translation based on current scale/scroll.
float currScale = recentsView.getScaleX();
float scrollOffsetX = recentsView.getScrollOffset();
float offscreenX = NORMAL.getOverviewScaleAndTranslation(activity).translationX;
// The first task is hidden, so offset by its width.
int firstTaskWidth = recentsView.getTaskViewAt(0).getWidth();
offscreenX -= (firstTaskWidth + recentsView.getPageSpacing()) * currScale;
// Offset since scale pushes tasks outwards.
offscreenX += firstTaskWidth * (currScale - 1) / 2;
offscreenX = Math.max(0, offscreenX);
if (recentsView.isRtl()) {
offscreenX = -offscreenX;
}
float offscreenX = recentsView.getOffscreenTranslationX(currScale);
float fromTranslationX = attached ? offscreenX - scrollOffsetX : 0;
float toTranslationX = attached ? 0 : offscreenX - scrollOffsetX;

View File

@ -57,6 +57,8 @@ import com.android.quickstep.util.LayoutUtils;
@TargetApi(Build.VERSION_CODES.O)
public class LauncherRecentsView extends RecentsView<Launcher> implements StateListener {
private static final Rect sTempRect = new Rect();
private final TransformParams mTransformParams = new TransformParams();
public LauncherRecentsView(Context context) {
@ -144,6 +146,25 @@ public class LauncherRecentsView extends RecentsView<Launcher> implements StateL
LayoutUtils.calculateLauncherTaskSize(getContext(), dp, outRect);
}
/**
* @return The translationX to apply to this view so that the first task is just offscreen.
*/
public float getOffscreenTranslationX(float recentsScale) {
float offscreenX = NORMAL.getOverviewScaleAndTranslation(mActivity).translationX;
// Offset since scale pushes tasks outwards.
getTaskSize(sTempRect);
int taskWidth = sTempRect.width();
offscreenX += taskWidth * (recentsScale - 1) / 2;
if (mRunningTaskTileHidden) {
// The first task is hidden, so offset by its width.
offscreenX -= (taskWidth + getPageSpacing()) * recentsScale;
}
if (isRtl()) {
offscreenX = -offscreenX;
}
return offscreenX;
}
@Override
protected void onTaskLaunchAnimationUpdate(float progress, TaskView tv) {
if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {

View File

@ -272,7 +272,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
// Only valid until the launcher state changes to NORMAL
protected int mRunningTaskId = -1;
private boolean mRunningTaskTileHidden;
protected boolean mRunningTaskTileHidden;
private Task mTmpRunningTask;
private boolean mRunningTaskIconScaledDown = false;