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:
parent
912206c17d
commit
8a1ba838f4
|
@ -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;
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue