Trigger re-inflation when configuration changed
We re-inflate the layout when font or display size are scaled and do follow fixes: 1. Listen to CONFIG_FONT_SCALE and CONFIG_DENSITY for layout re-inflaction. 2. Remove the configurations of image button and Done button paddings, and set the size of icons and center the text directly so the contents instead of the paddings inside the button will scale up when we increase the display size. 3. Reconstruct the layout to guarantee all components will stay in the settings panel without being cut. Bug: 257272333 Test: manual - attach videos with the bug Change-Id: Id3f120dbdd1afb3863a85f105059beee1ec460da Merged-In: Id3f120dbdd1afb3863a85f105059beee1ec460da
This commit is contained in:
@@ -14,8 +14,8 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="48"
|
||||
android:viewportHeight="48"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="48"
|
||||
android:viewportHeight="48"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:viewportWidth="48"
|
||||
android:viewportHeight="48"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
~ limitations under the License.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="48"
|
||||
android:viewportHeight="48"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
android:text="@string/accessibility_magnifier_size"
|
||||
android:textAppearance="@style/TextAppearance.MagnificationSetting.Title"
|
||||
android:focusable="true"
|
||||
android:layout_gravity="center_vertical|left" />
|
||||
android:layout_gravity="center_vertical" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/magnifier_edit_button"
|
||||
@@ -45,25 +45,22 @@
|
||||
android:text="@string/accessibility_magnifier_edit"
|
||||
android:textAppearance="@style/TextAppearance.MagnificationSetting.EditButton"
|
||||
android:focusable="true"
|
||||
android:layout_gravity="right" />
|
||||
android:layout_gravity="center_vertical" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:background="@drawable/accessibility_magnification_setting_view_image_btn_layout_bg"
|
||||
android:layout_width="@dimen/magnification_setting_image_button_background_width"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/magnification_setting_image_button_height"
|
||||
android:minWidth="@dimen/magnification_setting_image_button_background_width"
|
||||
android:orientation="horizontal">
|
||||
<ImageButton
|
||||
android:id="@+id/magnifier_small_button"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/magnification_setting_image_button_height"
|
||||
android:layout_weight="1"
|
||||
android:scaleType="fitCenter"
|
||||
android:scaleType="center"
|
||||
android:background="@drawable/accessibility_magnification_setting_view_image_btn_bg"
|
||||
android:paddingLeft="@dimen/magnification_setting_image_button_padding_horizontal"
|
||||
android:paddingRight="@dimen/magnification_setting_image_button_padding_horizontal"
|
||||
android:paddingTop="@dimen/magnification_setting_image_button_padding_vertical"
|
||||
android:paddingBottom="@dimen/magnification_setting_image_button_padding_vertical"
|
||||
android:src="@drawable/ic_magnification_menu_small"
|
||||
android:tint="@color/accessibility_magnification_image_button_tint"
|
||||
android:tintMode="src_atop" />
|
||||
@@ -73,12 +70,8 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/magnification_setting_image_button_height"
|
||||
android:layout_weight="1"
|
||||
android:scaleType="fitCenter"
|
||||
android:scaleType="center"
|
||||
android:background="@drawable/accessibility_magnification_setting_view_image_btn_bg"
|
||||
android:paddingLeft="@dimen/magnification_setting_image_button_padding_horizontal"
|
||||
android:paddingRight="@dimen/magnification_setting_image_button_padding_horizontal"
|
||||
android:paddingTop="@dimen/magnification_setting_image_button_padding_vertical"
|
||||
android:paddingBottom="@dimen/magnification_setting_image_button_padding_vertical"
|
||||
android:src="@drawable/ic_magnification_menu_medium"
|
||||
android:tint="@color/accessibility_magnification_image_button_tint"
|
||||
android:tintMode="src_atop" />
|
||||
@@ -88,12 +81,8 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/magnification_setting_image_button_height"
|
||||
android:layout_weight="1"
|
||||
android:scaleType="fitCenter"
|
||||
android:scaleType="center"
|
||||
android:background="@drawable/accessibility_magnification_setting_view_image_btn_bg"
|
||||
android:paddingLeft="@dimen/magnification_setting_image_button_padding_horizontal"
|
||||
android:paddingRight="@dimen/magnification_setting_image_button_padding_horizontal"
|
||||
android:paddingTop="@dimen/magnification_setting_image_button_padding_vertical"
|
||||
android:paddingBottom="@dimen/magnification_setting_image_button_padding_vertical"
|
||||
android:src="@drawable/ic_magnification_menu_large"
|
||||
android:tint="@color/accessibility_magnification_image_button_tint"
|
||||
android:tintMode="src_atop" />
|
||||
@@ -103,16 +92,8 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/magnification_setting_image_button_height"
|
||||
android:layout_weight="1"
|
||||
android:scaleType="fitCenter"
|
||||
android:scaleType="center"
|
||||
android:background="@drawable/accessibility_magnification_setting_view_image_btn_bg"
|
||||
android:paddingLeft
|
||||
="@dimen/magnification_setting_image_button_open_in_full_padding_horizontal"
|
||||
android:paddingRight
|
||||
="@dimen/magnification_setting_image_button_open_in_full_padding_horizontal"
|
||||
android:paddingTop
|
||||
="@dimen/magnification_setting_image_button_open_in_full_padding_vertical"
|
||||
android:paddingBottom
|
||||
="@dimen/magnification_setting_image_button_open_in_full_padding_vertical"
|
||||
android:src="@drawable/ic_open_in_full"
|
||||
android:tint="@color/accessibility_magnification_image_button_tint"
|
||||
android:tintMode="src_atop" />
|
||||
@@ -130,7 +111,6 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:singleLine="true"
|
||||
android:text="@string/accessibility_allow_diagonal_scrolling"
|
||||
android:textAppearance="@style/TextAppearance.MagnificationSetting.Title"
|
||||
android:layout_gravity="center_vertical" />
|
||||
@@ -166,16 +146,11 @@
|
||||
<Button
|
||||
android:id="@+id/magnifier_done_button"
|
||||
android:background="@drawable/accessibility_window_magnification_button_done_bg"
|
||||
android:minHeight="@dimen/magnification_setting_button_done_height"
|
||||
android:layout_width="@dimen/magnification_setting_button_done_width"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/accessibility_magnification_done"
|
||||
android:textAppearance="@style/TextAppearance.MagnificationSetting.DoneButton"
|
||||
android:focusable="true"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="@dimen/magnification_setting_view_margin"
|
||||
android:paddingLeft="@dimen/magnification_setting_button_done_padding_horizontal"
|
||||
android:paddingRight="@dimen/magnification_setting_button_done_padding_horizontal"
|
||||
android:paddingTop="@dimen/magnification_setting_button_done_padding_vertical"
|
||||
android:paddingBottom="@dimen/magnification_setting_button_done_padding_vertical" />
|
||||
android:layout_marginTop="@dimen/magnification_setting_view_margin"/>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -1358,6 +1358,7 @@
|
||||
<item name="android:fontFamily">google-sans</item>
|
||||
<item name="android:textColor">?androidprv:attr/textColorPrimary</item>
|
||||
<item name="android:textSize">@dimen/magnification_setting_text_size</item>
|
||||
<item name="android:singleLine">true</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.MagnificationSetting.EditButton">
|
||||
|
||||
@@ -403,15 +403,21 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
|
||||
mAnimationController.deleteWindowMagnification(animationCallback);
|
||||
}
|
||||
|
||||
void deleteWindowMagnification() {
|
||||
deleteWindowMagnification(/* closeSettingPanel= */ true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the magnification window.
|
||||
*/
|
||||
void deleteWindowMagnification() {
|
||||
void deleteWindowMagnification(boolean closeSettingPanel) {
|
||||
if (!isWindowVisible()) {
|
||||
return;
|
||||
}
|
||||
|
||||
closeMagnificationSettings();
|
||||
if (closeSettingPanel) {
|
||||
closeMagnificationSettings();
|
||||
}
|
||||
|
||||
if (mMirrorSurface != null) {
|
||||
mTransaction.remove(mMirrorSurface).apply();
|
||||
@@ -489,7 +495,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
|
||||
// Recreate the window again to correct the window appearance due to density or
|
||||
// window size changed not caused by rotation.
|
||||
if (isWindowVisible() && reCreateWindow) {
|
||||
deleteWindowMagnification();
|
||||
deleteWindowMagnification(/* closeSettingPanel= */ false);
|
||||
enableWindowMagnificationInternal(Float.NaN, Float.NaN, Float.NaN);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,14 +230,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
||||
}
|
||||
};
|
||||
|
||||
private void applyResourcesValuesWithDensityChanged() {
|
||||
if (mIsVisible) {
|
||||
// Reset button to make its window layer always above the mirror window.
|
||||
hideSettingPanel();
|
||||
showSettingPanel(false);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean onTouch(View v, MotionEvent event) {
|
||||
if (!mIsVisible) {
|
||||
return false;
|
||||
@@ -445,7 +437,15 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
||||
|
||||
void onConfigurationChanged(int configDiff) {
|
||||
if ((configDiff & ActivityInfo.CONFIG_UI_MODE) != 0
|
||||
|| (configDiff & ActivityInfo.CONFIG_ASSETS_PATHS) != 0) {
|
||||
|| (configDiff & ActivityInfo.CONFIG_ASSETS_PATHS) != 0
|
||||
|| (configDiff & ActivityInfo.CONFIG_FONT_SCALE) != 0
|
||||
|| (configDiff & ActivityInfo.CONFIG_DENSITY) != 0) {
|
||||
// We listen to following config changes to trigger layout inflation:
|
||||
// CONFIG_UI_MODE: theme change
|
||||
// CONFIG_ASSETS_PATHS: wallpaper change
|
||||
// CONFIG_FONT_SCALE: font size change
|
||||
// CONFIG_DENSITY: display size change
|
||||
|
||||
boolean showSettingPanelAfterThemeChange = mIsVisible;
|
||||
hideSettingPanel(/* resetPosition= */ false);
|
||||
inflateView();
|
||||
@@ -454,6 +454,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if ((configDiff & ActivityInfo.CONFIG_ORIENTATION) != 0) {
|
||||
final Rect previousDraggableBounds = new Rect(mDraggableWindowBounds);
|
||||
mDraggableWindowBounds.set(getDraggableWindowBounds());
|
||||
@@ -465,10 +466,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
||||
+ mDraggableWindowBounds.top;
|
||||
return;
|
||||
}
|
||||
if ((configDiff & ActivityInfo.CONFIG_DENSITY) != 0) {
|
||||
applyResourcesValuesWithDensityChanged();
|
||||
return;
|
||||
}
|
||||
|
||||
if ((configDiff & ActivityInfo.CONFIG_LOCALE) != 0) {
|
||||
updateAccessibilityWindowTitle();
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user