Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8a1ba838 authored by Tony Wickham's avatar Tony Wickham
Browse files

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
parent 912206c1
Loading
Loading
Loading
Loading
+1 −11
Original line number Diff line number Diff line
@@ -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;
+21 −0
Original line number Diff line number Diff line
@@ -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()) {
+1 −1
Original line number Diff line number Diff line
@@ -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;