Update split context when display size changed
Because SnapAlgorithm use many resources value and it will be affected by density, we should update context and mDividerSnapAlgorithm too when configuration density changed. Fix: 250483334 Test: manaul Test: atest SplitLayoutTests Change-Id: I207a025503c032318ede707eed786ae83b60e658
This commit is contained in:
@@ -118,6 +118,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
|
||||
private boolean mFreezeDividerWindow = false;
|
||||
private int mOrientation;
|
||||
private int mRotation;
|
||||
private int mDensity;
|
||||
|
||||
private final boolean mDimNonImeSide;
|
||||
|
||||
@@ -290,9 +291,11 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
|
||||
final int rotation = configuration.windowConfiguration.getRotation();
|
||||
final Rect rootBounds = configuration.windowConfiguration.getBounds();
|
||||
final int orientation = configuration.orientation;
|
||||
final int density = configuration.densityDpi;
|
||||
|
||||
if (mOrientation == orientation
|
||||
&& mRotation == rotation
|
||||
&& mDensity == density
|
||||
&& mRootBounds.equals(rootBounds)) {
|
||||
return false;
|
||||
}
|
||||
@@ -303,6 +306,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
|
||||
mTempRect.set(mRootBounds);
|
||||
mRootBounds.set(rootBounds);
|
||||
mRotation = rotation;
|
||||
mDensity = density;
|
||||
mDividerSnapAlgorithm = getSnapAlgorithm(mContext, mRootBounds, null);
|
||||
initDividerPosition(mTempRect);
|
||||
updateInvisibleRect();
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.wm.shell.common.split;
|
||||
|
||||
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
|
||||
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
@@ -91,6 +92,14 @@ public class SplitLayoutTests extends ShellTestCase {
|
||||
// Verify updateConfiguration returns true if the root bounds changed.
|
||||
config.windowConfiguration.setBounds(new Rect(0, 0, 2160, 1080));
|
||||
assertThat(mSplitLayout.updateConfiguration(config)).isTrue();
|
||||
|
||||
// Verify updateConfiguration returns true if the orientation changed.
|
||||
config.orientation = ORIENTATION_LANDSCAPE;
|
||||
assertThat(mSplitLayout.updateConfiguration(config)).isTrue();
|
||||
|
||||
// Verify updateConfiguration returns true if the density changed.
|
||||
config.densityDpi = 123;
|
||||
assertThat(mSplitLayout.updateConfiguration(config)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user