[Shell Transition]Fix live tile be hidden by wallpaper leash.

A generic fix to specific layers for live tiles/wallpaper.
Because there cannot sure the absolutely z-order of recents surface, we
can always set wallpaper layer to bottom, and set the z-order of live
tiles to either MAX or MIN + 1, so live tile can always above wallpaper,
also the live tile can be show above/below recents surface based on
mDrawsBelowRecents.

Test: enable shell transition, open app then entering recents, verify
the live tile stay visible when entering recents. And the shared
indicators visible when state transition complete.
Test: also verify above test for legacy transition.
Bug: 236410500

Change-Id: I0f86d7617af1d96c28783320248af64f576bd570
This commit is contained in:
wilsonshih
2022-06-20 16:36:03 +08:00
parent fbc3f597dc
commit 9840bdaa13
2 changed files with 11 additions and 3 deletions
@@ -391,7 +391,7 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy {
.withCornerRadius(getCurrentCornerRadius());
if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
builder.withLayer(mDrawsBelowRecents ? Integer.MIN_VALUE : 0);
builder.withLayer(mDrawsBelowRecents ? Integer.MIN_VALUE + 1 : Integer.MAX_VALUE);
}
}
@@ -139,10 +139,12 @@ public class TransformParams {
public SurfaceParams[] createSurfaceParams(BuilderProxy proxy) {
RemoteAnimationTargets targets = mTargetSet;
SurfaceParams[] surfaceParams = new SurfaceParams[targets.unfilteredApps.length];
final int appLength = targets.unfilteredApps.length;
final int wallpaperLength = targets.wallpapers != null ? targets.wallpapers.length : 0;
SurfaceParams[] surfaceParams = new SurfaceParams[appLength + wallpaperLength];
mRecentsSurface = getRecentsSurface(targets);
for (int i = 0; i < targets.unfilteredApps.length; i++) {
for (int i = 0; i < appLength; i++) {
RemoteAnimationTargetCompat app = targets.unfilteredApps[i];
SurfaceParams.Builder builder = new SurfaceParams.Builder(app.leash);
@@ -166,6 +168,12 @@ public class TransformParams {
}
surfaceParams[i] = builder.build();
}
// always put wallpaper layer to bottom.
for (int i = 0; i < wallpaperLength; i++) {
RemoteAnimationTargetCompat wallpaper = targets.wallpapers[i];
surfaceParams[appLength + i] = new SurfaceParams.Builder(wallpaper.leash)
.withLayer(Integer.MIN_VALUE).build();
}
return surfaceParams;
}