diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java | 17 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java | 16 |
2 files changed, 31 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java index 895207d37816..898cd1363d2b 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java @@ -17,6 +17,8 @@ package com.android.systemui.accessibility; import android.content.Context; +import android.content.pm.ActivityInfo; +import android.content.res.Configuration; import android.database.ContentObserver; import android.os.Handler; import android.provider.Settings; @@ -35,10 +37,25 @@ public class WindowMagnification extends SystemUI { private WindowMagnificationController mWindowMagnificationController; private final Handler mHandler; + private Configuration mLastConfiguration; + @Inject public WindowMagnification(Context context, @Main Handler mainHandler) { super(context); mHandler = mainHandler; + mLastConfiguration = new Configuration(context.getResources().getConfiguration()); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + final int configDiff = newConfig.diff(mLastConfiguration); + if ((configDiff & ActivityInfo.CONFIG_DENSITY) == 0) { + return; + } + mLastConfiguration.setTo(newConfig); + if (mWindowMagnificationController != null) { + mWindowMagnificationController.onConfigurationChanged(configDiff); + } } @Override diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java index bfac4fce92eb..c243309d960a 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java @@ -113,6 +113,7 @@ public class WindowMagnificationController implements View.OnClickListener, if (mMirrorView != null) { return; } + setInitialStartBounds(); createOverlayWindow(); } @@ -178,9 +179,20 @@ public class WindowMagnificationController implements View.OnClickListener, } } - private void createMirrorWindow() { - setInitialStartBounds(); + /** + * Called when the configuration has changed, and it updates window magnification UI. + * + * @param configDiff a bit mask of the differences between the configurations + */ + void onConfigurationChanged(int configDiff) { + // TODO(b/145780606): update toggle button UI. + if (mMirrorView != null) { + mWm.removeView(mMirrorView); + createMirrorWindow(); + } + } + private void createMirrorWindow() { // The window should be the size the mirrored surface will be but also add room for the // border and the drag handle. int dragViewHeight = (int) mContext.getResources().getDimension( |