Merge "Improve Split portrait gesture animation" into tm-qpr-dev

This commit is contained in:
Vinit Nayak
2022-11-10 19:19:39 +00:00
committed by Android (Google) Code Review
2 changed files with 31 additions and 13 deletions

View File

@@ -61,26 +61,42 @@ public class PreviewPositionHelper {
* Updates the matrix based on the provided parameters * Updates the matrix based on the provided parameters
*/ */
public void updateThumbnailMatrix(Rect thumbnailBounds, ThumbnailData thumbnailData, public void updateThumbnailMatrix(Rect thumbnailBounds, ThumbnailData thumbnailData,
int canvasWidth, int canvasHeight, int screenWidthPx, int taskbarSize, boolean isTablet, int canvasWidth, int canvasHeight, int screenWidthPx, int screenHeightPx,
int taskbarSize, boolean isTablet,
int currentRotation, boolean isRtl) { int currentRotation, boolean isRtl) {
boolean isRotated = false; boolean isRotated = false;
boolean isOrientationDifferent; boolean isOrientationDifferent;
float fullscreenTaskWidth = screenWidthPx;
if (mSplitBounds != null && !mSplitBounds.appsStackedVertically) {
// For landscape, scale the width
float taskPercent = mDesiredStagePosition == STAGE_POSITION_TOP_OR_LEFT
? mSplitBounds.leftTaskPercent
: (1 - (mSplitBounds.leftTaskPercent + mSplitBounds.dividerWidthPercent));
// Scale landscape width to that of actual screen
fullscreenTaskWidth = screenWidthPx * taskPercent;
}
int thumbnailRotation = thumbnailData.rotation; int thumbnailRotation = thumbnailData.rotation;
int deltaRotate = getRotationDelta(currentRotation, thumbnailRotation); int deltaRotate = getRotationDelta(currentRotation, thumbnailRotation);
RectF thumbnailClipHint = new RectF(); RectF thumbnailClipHint = new RectF();
float canvasScreenRatio = canvasWidth / fullscreenTaskWidth;
float scaledTaskbarSize = taskbarSize * canvasScreenRatio; float scaledTaskbarSize = 0;
thumbnailClipHint.bottom = isTablet ? scaledTaskbarSize : 0; if (mSplitBounds != null) {
float fullscreenTaskWidth;
float fullscreenTaskHeight;
float canvasScreenRatio;
float taskPercent;
if (!mSplitBounds.appsStackedVertically) {
// For landscape, scale the width
taskPercent = mDesiredStagePosition == STAGE_POSITION_TOP_OR_LEFT
? mSplitBounds.leftTaskPercent
: (1 - (mSplitBounds.leftTaskPercent + mSplitBounds.dividerWidthPercent));
// Scale landscape width to that of actual screen
fullscreenTaskWidth = screenWidthPx * taskPercent;
canvasScreenRatio = canvasWidth / fullscreenTaskWidth;
} else {
taskPercent = mDesiredStagePosition != STAGE_POSITION_TOP_OR_LEFT
? mSplitBounds.leftTaskPercent
: (1 - (mSplitBounds.leftTaskPercent + mSplitBounds.dividerWidthPercent));
// Scale landscape width to that of actual screen
fullscreenTaskHeight = screenHeightPx * taskPercent;
canvasScreenRatio = canvasHeight / fullscreenTaskHeight;
}
scaledTaskbarSize = taskbarSize * canvasScreenRatio;
thumbnailClipHint.bottom = isTablet ? scaledTaskbarSize : 0;
}
float scale = thumbnailData.scale; float scale = thumbnailData.scale;
final float thumbnailScale; final float thumbnailScale;

View File

@@ -148,6 +148,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
val currentRotation: Int = display.rotation val currentRotation: Int = display.rotation
val displayWidthPx = windowMetrics.bounds.width() val displayWidthPx = windowMetrics.bounds.width()
val displayHeightPx = windowMetrics.bounds.height()
val isRtl = layoutDirection == LAYOUT_DIRECTION_RTL val isRtl = layoutDirection == LAYOUT_DIRECTION_RTL
val isTablet = isTablet(context) val isTablet = isTablet(context)
val taskbarSize = val taskbarSize =
@@ -163,6 +164,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
measuredWidth, measuredWidth,
measuredHeight, measuredHeight,
displayWidthPx, displayWidthPx,
displayHeightPx,
taskbarSize, taskbarSize,
isTablet, isTablet,
currentRotation, currentRotation,