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

Commit 887c0ae6 authored by Thales Lima's avatar Thales Lima Committed by Android (Google) Code Review
Browse files

Merge "Fix TaskView cropping for transient taskbar" into tm-qpr-dev

parents c5677f82 9fde4781
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -244,6 +244,7 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
            float maxScale = res.getFloat(R.dimen.overview_max_scale);
            int taskMargin = dp.overviewTaskMarginPx;
            calculateTaskSizeInternal(
                    context,
                    dp,
                    dp.overviewTaskThumbnailTopMarginPx,
                    dp.getOverviewActionsClaimedSpace(),
@@ -259,10 +260,10 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
        float maxScale = res.getFloat(R.dimen.overview_max_scale);
        Rect gridRect = new Rect();
        calculateGridSize(dp, gridRect);
        calculateTaskSizeInternal(dp, gridRect, maxScale, Gravity.CENTER, outRect);
        calculateTaskSizeInternal(context, dp, gridRect, maxScale, Gravity.CENTER, outRect);
    }

    private void calculateTaskSizeInternal(DeviceProfile dp, int claimedSpaceAbove,
    private void calculateTaskSizeInternal(Context context, DeviceProfile dp, int claimedSpaceAbove,
            int claimedSpaceBelow, int minimumHorizontalPadding, float maxScale, int gravity,
            Rect outRect) {
        Rect insets = dp.getInsets();
@@ -275,12 +276,12 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
                minimumHorizontalPadding,
                claimedSpaceBelow);

        calculateTaskSizeInternal(dp, potentialTaskRect, maxScale, gravity, outRect);
        calculateTaskSizeInternal(context, dp, potentialTaskRect, maxScale, gravity, outRect);
    }

    private void calculateTaskSizeInternal(DeviceProfile dp,
    private void calculateTaskSizeInternal(Context context, DeviceProfile dp,
            Rect potentialTaskRect, float maxScale, int gravity, Rect outRect) {
        PointF taskDimension = getTaskDimension(dp);
        PointF taskDimension = getTaskDimension(context, dp);

        float scale = Math.min(
                potentialTaskRect.width() / taskDimension.x,
@@ -292,19 +293,19 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
        Gravity.apply(gravity, outWidth, outHeight, potentialTaskRect, outRect);
    }

    private static PointF getTaskDimension(DeviceProfile dp) {
    private static PointF getTaskDimension(Context context, DeviceProfile dp) {
        PointF dimension = new PointF();
        getTaskDimension(dp, dimension);
        getTaskDimension(context, dp, dimension);
        return dimension;
    }

    /**
     * Gets the dimension of the task in the current system state.
     */
    public static void getTaskDimension(DeviceProfile dp, PointF out) {
    public static void getTaskDimension(Context context, DeviceProfile dp, PointF out) {
        out.x = dp.widthPx;
        out.y = dp.heightPx;
        if (dp.isTablet) {
        if (dp.isTablet && !DisplayController.isTransientTaskbar(context)) {
            out.y -= dp.taskbarSize;
        }
    }
@@ -339,7 +340,7 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
        float rowHeight = (potentialTaskRect.height() + dp.overviewTaskThumbnailTopMarginPx
                - dp.overviewRowSpacing) / 2f;

        PointF taskDimension = getTaskDimension(dp);
        PointF taskDimension = getTaskDimension(context, dp);
        float scale = (rowHeight - dp.overviewTaskThumbnailTopMarginPx) / taskDimension.y;
        int outWidth = Math.round(scale * taskDimension.x);
        int outHeight = Math.round(scale * taskDimension.y);
@@ -373,6 +374,7 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
                    Math.round((dp.availableWidthPx - outRect.width() * maxScale) / 2);
        }
        calculateTaskSizeInternal(
                context,
                dp,
                dp.overviewTaskMarginPx,
                claimedSpaceBelow,
+1 −1
Original line number Diff line number Diff line
@@ -396,7 +396,7 @@ public class RecentsOrientedState implements
     * Returns the scale and pivot so that the provided taskRect can fit the provided full size
     */
    public float getFullScreenScaleAndPivot(Rect taskView, DeviceProfile dp, PointF outPivot) {
        getTaskDimension(dp, outPivot);
        getTaskDimension(mContext, dp, outPivot);
        float scale = Math.min(outPivot.x / taskView.width(), outPivot.y / taskView.height());
        if (scale == 1) {
            outPivot.set(taskView.centerX(), taskView.centerY());
+2 −10
Original line number Diff line number Diff line
@@ -272,9 +272,7 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy {
     */
    public RectF getCurrentCropRect() {
        // Crop rect is the inverse of thumbnail matrix
        RectF insets = mCurrentFullscreenParams.mCurrentDrawnInsets;
        mTempRectF.set(-insets.left, -insets.top,
                mTaskRect.width() + insets.right, mTaskRect.height() + insets.bottom);
        mTempRectF.set(0, 0, mTaskRect.width(), mTaskRect.height());
        mInversePositionMatrix.mapRect(mTempRectF);
        return mTempRectF;
    }
@@ -351,14 +349,10 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy {
                /* taskViewScale= */1f, mTaskRect.width(), mDp, mPositionHelper);

        // Apply thumbnail matrix
        RectF insets = mCurrentFullscreenParams.mCurrentDrawnInsets;
        float scale = mCurrentFullscreenParams.mScale;
        float taskWidth = mTaskRect.width();
        float taskHeight = mTaskRect.height();

        mMatrix.set(mPositionHelper.getMatrix());
        mMatrix.postTranslate(insets.left, insets.top);
        mMatrix.postScale(scale, scale);

        // Apply TaskView matrix: taskRect, translate
        mMatrix.postTranslate(mTaskRect.left, mTaskRect.top);
@@ -378,8 +372,7 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy {
        applyWindowToHomeRotation(mMatrix);

        // Crop rect is the inverse of thumbnail matrix
        mTempRectF.set(-insets.left, -insets.top,
                taskWidth + insets.right, taskHeight + insets.bottom);
        mTempRectF.set(0, 0, taskWidth, taskHeight);
        mInversePositionMatrix.mapRect(mTempRectF);
        mTempRectF.roundOut(mTmpCropRect);

@@ -389,7 +382,6 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy {
            return;
        }
        Log.d(TAG, "progress: " + fullScreenProgress
                + " scale: " + scale
                + " recentsViewScale: " + recentsViewScale.value
                + " crop: " + mTmpCropRect
                + " radius: " + getCurrentCornerRadius()
+3 −13
Original line number Diff line number Diff line
@@ -97,11 +97,6 @@ public final class DigitalWellBeingToast {
    private View mBanner;
    private ViewOutlineProvider mOldBannerOutlineProvider;
    private float mBannerOffsetPercentage;
    /**
     * Clips rect provided by {@link #mOldBannerOutlineProvider} when in the model state to
     * hide this banner as the taskView scales up and down
     */
    private float mModalOffset = 0f;
    @Nullable
    private SplitBounds mSplitBounds;
    private int mSplitBannerConfig = SPLIT_BANNER_FULLSCREEN;
@@ -336,17 +331,15 @@ public final class DigitalWellBeingToast {
            @Override
            public void getOutline(View view, Outline outline) {
                mOldBannerOutlineProvider.getOutline(view, outline);
                float verticalTranslation = -view.getTranslationY() + mModalOffset
                        + mSplitOffsetTranslationY;
                float verticalTranslation = -view.getTranslationY() + mSplitOffsetTranslationY;
                outline.offset(0, Math.round(verticalTranslation));
            }
        });
        mBanner.setClipToOutline(true);
    }

    void updateBannerOffset(float offsetPercentage, float verticalOffset) {
    void updateBannerOffset(float offsetPercentage) {
        if (mBanner != null && mBannerOffsetPercentage != offsetPercentage) {
            mModalOffset = verticalOffset;
            mBannerOffsetPercentage = offsetPercentage;
            updateTranslationY();
            mBanner.invalidateOutline();
@@ -359,10 +352,7 @@ public final class DigitalWellBeingToast {
        }

        mBanner.setTranslationY(
                (mBannerOffsetPercentage * mBanner.getHeight()) +
                        mModalOffset +
                        mSplitOffsetTranslationY
        );
                (mBannerOffsetPercentage * mBanner.getHeight()) + mSplitOffsetTranslationY);
    }

    private void updateTranslationX() {
+1 −3
Original line number Diff line number Diff line
@@ -391,9 +391,7 @@ public class GroupedTaskView extends TaskView {
        // Value set by super call
        float scale = mIconView.getAlpha();
        mIconView2.setAlpha(scale);
        mDigitalWellBeingToast2.updateBannerOffset(1f - scale,
                mCurrentFullscreenParams.mCurrentDrawnInsets.top
                        + mCurrentFullscreenParams.mCurrentDrawnInsets.bottom);
        mDigitalWellBeingToast2.updateBannerOffset(1f - scale);
    }

    @Override
Loading