Merge "Do not set shadow when leaving PiP mode" into tm-dev

This commit is contained in:
Hongwei Wang
2022-03-31 23:19:32 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 8 deletions

View File

@@ -432,6 +432,11 @@ public class PipAnimationController {
return !isOutPipDirection(mTransitionDirection); return !isOutPipDirection(mTransitionDirection);
} }
boolean shouldApplyShadowRadius() {
return !isOutPipDirection(mTransitionDirection)
&& !isRemovePipDirection(mTransitionDirection);
}
boolean inScaleTransition() { boolean inScaleTransition() {
if (mAnimationType != ANIM_TYPE_BOUNDS) return false; if (mAnimationType != ANIM_TYPE_BOUNDS) return false;
final int direction = getTransitionDirection(); final int direction = getTransitionDirection();
@@ -483,7 +488,7 @@ public class PipAnimationController {
setCurrentValue(alpha); setCurrentValue(alpha);
getSurfaceTransactionHelper().alpha(tx, leash, alpha) getSurfaceTransactionHelper().alpha(tx, leash, alpha)
.round(tx, leash, shouldApplyCornerRadius()) .round(tx, leash, shouldApplyCornerRadius())
.shadow(tx, leash); .shadow(tx, leash, shouldApplyShadowRadius());
tx.apply(); tx.apply();
} }
@@ -497,7 +502,7 @@ public class PipAnimationController {
.resetScale(tx, leash, getDestinationBounds()) .resetScale(tx, leash, getDestinationBounds())
.crop(tx, leash, getDestinationBounds()) .crop(tx, leash, getDestinationBounds())
.round(tx, leash, shouldApplyCornerRadius()) .round(tx, leash, shouldApplyCornerRadius())
.shadow(tx, leash); .shadow(tx, leash, shouldApplyShadowRadius());
tx.show(leash); tx.show(leash);
tx.apply(); tx.apply();
} }
@@ -585,7 +590,7 @@ public class PipAnimationController {
getSurfaceTransactionHelper().crop(tx, leash, base) getSurfaceTransactionHelper().crop(tx, leash, base)
.scale(tx, leash, base, bounds, angle) .scale(tx, leash, base, bounds, angle)
.round(tx, leash, base, bounds) .round(tx, leash, base, bounds)
.shadow(tx, leash); .shadow(tx, leash, shouldApplyShadowRadius());
} }
} else { } else {
final Rect insets = computeInsets(fraction); final Rect insets = computeInsets(fraction);
@@ -596,7 +601,7 @@ public class PipAnimationController {
sourceBounds.inset(insets); sourceBounds.inset(insets);
getSurfaceTransactionHelper() getSurfaceTransactionHelper()
.round(tx, leash, sourceBounds, bounds) .round(tx, leash, sourceBounds, bounds)
.shadow(tx, leash); .shadow(tx, leash, shouldApplyShadowRadius());
} }
} }
if (!handlePipTransaction(leash, tx, bounds)) { if (!handlePipTransaction(leash, tx, bounds)) {
@@ -649,7 +654,7 @@ public class PipAnimationController {
if (shouldApplyCornerRadius()) { if (shouldApplyCornerRadius()) {
getSurfaceTransactionHelper() getSurfaceTransactionHelper()
.round(tx, leash, sourceBounds, bounds) .round(tx, leash, sourceBounds, bounds)
.shadow(tx, leash); .shadow(tx, leash, shouldApplyShadowRadius());
} }
tx.apply(); tx.apply();
} }
@@ -668,7 +673,7 @@ public class PipAnimationController {
getSurfaceTransactionHelper() getSurfaceTransactionHelper()
.alpha(tx, leash, 1f) .alpha(tx, leash, 1f)
.round(tx, leash, shouldApplyCornerRadius()) .round(tx, leash, shouldApplyCornerRadius())
.shadow(tx, leash); .shadow(tx, leash, shouldApplyShadowRadius());
// TODO(b/178632364): this is a work around for the black background when // TODO(b/178632364): this is a work around for the black background when
// entering PiP in buttion navigation mode. // entering PiP in buttion navigation mode.
if (isInPipDirection(direction)) { if (isInPipDirection(direction)) {

View File

@@ -206,8 +206,9 @@ public class PipSurfaceTransactionHelper {
* Operates the shadow radius on a given transaction and leash * Operates the shadow radius on a given transaction and leash
* @return same {@link PipSurfaceTransactionHelper} instance for method chaining * @return same {@link PipSurfaceTransactionHelper} instance for method chaining
*/ */
public PipSurfaceTransactionHelper shadow(SurfaceControl.Transaction tx, SurfaceControl leash) { public PipSurfaceTransactionHelper shadow(SurfaceControl.Transaction tx, SurfaceControl leash,
tx.setShadowRadius(leash, mShadowRadius); boolean applyShadowRadius) {
tx.setShadowRadius(leash, applyShadowRadius ? mShadowRadius : 0);
return this; return this;
} }