summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/res/drawable/ic_open_in_new_fullscreen.xml4
-rw-r--r--packages/SystemUI/res/drawable/ic_open_in_new_window.xml4
-rw-r--r--packages/SystemUI/res/values/dimens.xml4
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java23
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java17
5 files changed, 42 insertions, 10 deletions
diff --git a/packages/SystemUI/res/drawable/ic_open_in_new_fullscreen.xml b/packages/SystemUI/res/drawable/ic_open_in_new_fullscreen.xml
index 55116c6e549a..9f66581d8053 100644
--- a/packages/SystemUI/res/drawable/ic_open_in_new_fullscreen.xml
+++ b/packages/SystemUI/res/drawable/ic_open_in_new_fullscreen.xml
@@ -19,8 +19,8 @@
<shape android:shape="rectangle">
<solid android:color="@color/magnification_switch_button_color" />
<size
- android:width="40dp"
- android:height="40dp" />
+ android:width="48dp"
+ android:height="48dp" />
</shape>
</item>
diff --git a/packages/SystemUI/res/drawable/ic_open_in_new_window.xml b/packages/SystemUI/res/drawable/ic_open_in_new_window.xml
index 5f571cfa0197..659b02048c73 100644
--- a/packages/SystemUI/res/drawable/ic_open_in_new_window.xml
+++ b/packages/SystemUI/res/drawable/ic_open_in_new_window.xml
@@ -19,8 +19,8 @@
<shape android:shape="rectangle">
<solid android:color="@color/magnification_switch_button_color" />
<size
- android:width="40dp"
- android:height="40dp" />
+ android:width="48dp"
+ android:height="48dp" />
</shape>
</item>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 3b1fe4a7ddf3..a9601336c6e2 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -1194,8 +1194,8 @@
<dimen name="magnification_frame_move_long">25dp</dimen>
<dimen name="magnification_drag_view_size">38dp</dimen>
<dimen name="magnification_controls_size">90dp</dimen>
- <dimen name="magnification_switch_button_size">32dp</dimen>
- <dimen name="magnification_switch_button_padding">8dp</dimen>
+ <dimen name="magnification_switch_button_size">60dp</dimen>
+ <dimen name="magnification_switch_button_padding">12dp</dimen>
<dimen name="magnifier_left_right_controls_width">35dp</dimen>
<dimen name="magnifier_left_right_controls_height">45dp</dimen>
<dimen name="magnifier_up_down_controls_width">45dp</dimen>
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java b/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java
index e40185c279a8..026856db5cc7 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/MagnificationModeSwitch.java
@@ -23,6 +23,7 @@ import android.content.Context;
import android.content.pm.ActivityInfo;
import android.graphics.PixelFormat;
import android.graphics.PointF;
+import android.graphics.Rect;
import android.os.Bundle;
import android.os.UserHandle;
import android.provider.Settings;
@@ -41,6 +42,8 @@ import android.widget.ImageView;
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.R;
+import java.util.Collections;
+
/**
* Shows/hides a {@link android.widget.ImageView} on the screen and changes the values of
* {@link Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE} when the UI is toggled.
@@ -85,7 +88,6 @@ class MagnificationModeSwitch {
mImageView = imageView;
mTouchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop();
applyResourcesValues();
- mImageView.setImageResource(getIconResId(mMagnificationMode));
mImageView.setOnTouchListener(this::onTouch);
mImageView.setAccessibilityDelegate(new View.AccessibilityDelegate() {
@Override
@@ -138,6 +140,7 @@ class MagnificationModeSwitch {
final int padding = mContext.getResources().getDimensionPixelSize(
R.dimen.magnification_switch_button_padding);
mImageView.setPadding(padding, padding, padding, padding);
+ mImageView.setImageResource(getIconResId(mMagnificationMode));
}
private boolean onTouch(View v, MotionEvent event) {
@@ -205,6 +208,8 @@ class MagnificationModeSwitch {
}
if (!mIsVisible) {
mWindowManager.addView(mImageView, mParams);
+ // Exclude magnification switch button from system gesture area.
+ setSystemGestureExclusion();
mIsVisible = true;
mImageView.postOnAnimation(mFadeInAnimationTask);
mUiTimeout = mAccessibilityManager.getRecommendedTimeoutMillis(
@@ -224,7 +229,11 @@ class MagnificationModeSwitch {
void onConfigurationChanged(int configDiff) {
if ((configDiff & ActivityInfo.CONFIG_DENSITY) != 0) {
applyResourcesValues();
- mImageView.setImageResource(getIconResId(mMagnificationMode));
+ if (mIsVisible) {
+ mWindowManager.updateViewLayout(mImageView, mParams);
+ // Exclude magnification switch button from system gesture area.
+ setSystemGestureExclusion();
+ }
return;
}
if ((configDiff & ActivityInfo.CONFIG_LOCALE) != 0) {
@@ -261,7 +270,6 @@ class MagnificationModeSwitch {
ImageView imageView = new ImageView(context);
imageView.setClickable(true);
imageView.setFocusable(true);
- imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setAlpha(0f);
return imageView;
}
@@ -288,4 +296,13 @@ class MagnificationModeSwitch {
private static String getAccessibilityWindowTitle(Context context) {
return context.getString(com.android.internal.R.string.android_system_label);
}
+
+ private void setSystemGestureExclusion() {
+ mImageView.post(() -> {
+ mImageView.setSystemGestureExclusionRects(
+ Collections.singletonList(
+ new Rect(0, 0, mImageView.getWidth(), mImageView.getHeight())));
+ });
+ }
+
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java
index 11150432f757..0451d45a628b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java
@@ -143,6 +143,13 @@ public class MagnificationModeSwitchTest extends SysuiTestCase {
}
@Test
+ public void showButton_excludeSystemGestureArea() {
+ mMagnificationModeSwitch.showButton(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
+
+ verify(mSpyImageView).setSystemGestureExclusionRects(any(List.class));
+ }
+
+ @Test
public void showMagnificationButton_setA11yTimeout_postDelayedAnimationWithA11yTimeout() {
final int a11yTimeout = 12345;
when(mAccessibilityManager.getRecommendedTimeoutMillis(anyInt(), anyInt())).thenReturn(
@@ -178,14 +185,17 @@ public class MagnificationModeSwitchTest extends SysuiTestCase {
}
@Test
- public void onConfigurationChanged_buttonIsShowing_setImageResource() {
+ public void onConfigurationChanged_buttonIsShowing_updateResourcesAndLayout() {
mMagnificationModeSwitch.showButton(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
resetAndStubMockImageViewAndAnimator();
mMagnificationModeSwitch.onConfigurationChanged(ActivityInfo.CONFIG_DENSITY);
+ verify(mSpyImageView).setPadding(anyInt(), anyInt(), anyInt(), anyInt());
verify(mSpyImageView).setImageResource(
getIconResId(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN));
+ verify(mWindowManager).updateViewLayout(eq(mSpyImageView), any());
+ verify(mSpyImageView).setSystemGestureExclusionRects(any(List.class));
}
@Test
@@ -368,6 +378,11 @@ public class MagnificationModeSwitchTest extends SysuiTestCase {
private void resetAndStubMockImageViewAndAnimator() {
resetAndStubMockAnimator();
Mockito.reset(mSpyImageView);
+ doAnswer(invocation -> {
+ final Runnable runnable = invocation.getArgument(0);
+ runnable.run();
+ return null;
+ }).when(mSpyImageView).post(any(Runnable.class));
doReturn(mViewPropertyAnimator).when(mSpyImageView).animate();
}