Merge "Excludes magnification switch button from system gesture area"
This commit is contained in:
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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())));
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -142,6 +142,13 @@ public class MagnificationModeSwitchTest extends SysuiTestCase {
|
||||
assertShowFadingAnimation(FADE_OUT_ALPHA);
|
||||
}
|
||||
|
||||
@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;
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user