Merge "Use the real behavior to decide the animation" into sc-dev

This commit is contained in:
Tiger Huang
2021-07-09 19:36:27 +00:00
committed by Android (Google) Code Review
2 changed files with 26 additions and 8 deletions

View File

@@ -128,6 +128,10 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
*/ */
@Appearance int getSystemBarsAppearance(); @Appearance int getSystemBarsAppearance();
default boolean isSystemBarsAppearanceControlled() {
return false;
}
/** /**
* @see WindowInsetsController#setSystemBarsBehavior * @see WindowInsetsController#setSystemBarsBehavior
*/ */
@@ -138,6 +142,10 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
*/ */
@Behavior int getSystemBarsBehavior(); @Behavior int getSystemBarsBehavior();
default boolean isSystemBarsBehaviorControlled() {
return false;
}
/** /**
* Releases a surface and ensure that this is done after {@link #applySurfaceParams} has * Releases a surface and ensure that this is done after {@link #applySurfaceParams} has
* finished applying params. * finished applying params.
@@ -1520,6 +1528,10 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
@Override @Override
public @Appearance int getSystemBarsAppearance() { public @Appearance int getSystemBarsAppearance() {
if (!mHost.isSystemBarsAppearanceControlled()) {
// We only return the requested appearance, not the implied one.
return 0;
}
return mHost.getSystemBarsAppearance(); return mHost.getSystemBarsAppearance();
} }
@@ -1544,6 +1556,10 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
@Override @Override
public @Behavior int getSystemBarsBehavior() { public @Behavior int getSystemBarsBehavior() {
if (!mHost.isSystemBarsBehaviorControlled()) {
// We only return the requested behavior, not the implied one.
return 0;
}
return mHost.getSystemBarsBehavior(); return mHost.getSystemBarsBehavior();
} }

View File

@@ -180,13 +180,14 @@ public class ViewRootInsetsControllerHost implements InsetsController.Host {
@Override @Override
public int getSystemBarsAppearance() { public int getSystemBarsAppearance() {
if ((mViewRoot.mWindowAttributes.privateFlags & PRIVATE_FLAG_APPEARANCE_CONTROLLED) == 0) {
// We only return the requested appearance, not the implied one.
return 0;
}
return mViewRoot.mWindowAttributes.insetsFlags.appearance; return mViewRoot.mWindowAttributes.insetsFlags.appearance;
} }
@Override
public boolean isSystemBarsAppearanceControlled() {
return (mViewRoot.mWindowAttributes.privateFlags & PRIVATE_FLAG_APPEARANCE_CONTROLLED) != 0;
}
@Override @Override
public void setSystemBarsBehavior(int behavior) { public void setSystemBarsBehavior(int behavior) {
mViewRoot.mWindowAttributes.privateFlags |= PRIVATE_FLAG_BEHAVIOR_CONTROLLED; mViewRoot.mWindowAttributes.privateFlags |= PRIVATE_FLAG_BEHAVIOR_CONTROLLED;
@@ -199,13 +200,14 @@ public class ViewRootInsetsControllerHost implements InsetsController.Host {
@Override @Override
public int getSystemBarsBehavior() { public int getSystemBarsBehavior() {
if ((mViewRoot.mWindowAttributes.privateFlags & PRIVATE_FLAG_BEHAVIOR_CONTROLLED) == 0) {
// We only return the requested behavior, not the implied one.
return 0;
}
return mViewRoot.mWindowAttributes.insetsFlags.behavior; return mViewRoot.mWindowAttributes.insetsFlags.behavior;
} }
@Override
public boolean isSystemBarsBehaviorControlled() {
return (mViewRoot.mWindowAttributes.privateFlags & PRIVATE_FLAG_BEHAVIOR_CONTROLLED) != 0;
}
@Override @Override
public void releaseSurfaceControlFromRt(SurfaceControl surfaceControl) { public void releaseSurfaceControlFromRt(SurfaceControl surfaceControl) {