Merge changes If787cf8b,I78267c0b into udc-dev
* changes: Fix focus and announcements for Magnification Settings Do not close the settings panel on tap
This commit is contained in:
@@ -21,7 +21,9 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@drawable/accessibility_magnification_setting_view_bg"
|
android:background="@drawable/accessibility_magnification_setting_view_bg"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:padding="@dimen/magnification_setting_background_padding">
|
android:padding="@dimen/magnification_setting_background_padding"
|
||||||
|
android:focusable="true"
|
||||||
|
android:contentDescription="@string/accessibility_magnification_settings_panel_description">
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|||||||
@@ -2337,6 +2337,8 @@
|
|||||||
<string name="magnification_mode_switch_state_window">Magnify part of screen</string>
|
<string name="magnification_mode_switch_state_window">Magnify part of screen</string>
|
||||||
<!-- Click action label for magnification switch. [CHAR LIMIT=NONE] -->
|
<!-- Click action label for magnification switch. [CHAR LIMIT=NONE] -->
|
||||||
<string name="magnification_mode_switch_click_label">Switch</string>
|
<string name="magnification_mode_switch_click_label">Switch</string>
|
||||||
|
<!-- Click action label for magnification settings panel. [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="magnification_open_settings_click_label">Open magnification settings</string>
|
||||||
<!-- Label of the corner of a rectangle that you can tap and drag to resize the magnification area. [CHAR LIMIT=NONE] -->
|
<!-- Label of the corner of a rectangle that you can tap and drag to resize the magnification area. [CHAR LIMIT=NONE] -->
|
||||||
<string name="magnification_drag_corner_to_resize">Drag corner to resize</string>
|
<string name="magnification_drag_corner_to_resize">Drag corner to resize</string>
|
||||||
|
|
||||||
@@ -2358,6 +2360,8 @@
|
|||||||
<!-- Description of the window magnification Bottom handle [CHAR LIMIT=NONE]-->
|
<!-- Description of the window magnification Bottom handle [CHAR LIMIT=NONE]-->
|
||||||
<string name="accessibility_magnification_bottom_handle">Bottom handle</string>
|
<string name="accessibility_magnification_bottom_handle">Bottom handle</string>
|
||||||
|
|
||||||
|
<!-- Description of the window magnification panel [CHAR LIMIT=NONE]-->
|
||||||
|
<string name="accessibility_magnification_settings_panel_description">Magnification settings</string>
|
||||||
<!-- Title of the window magnification panel option Magnifier size [CHAR LIMIT=NONE]-->
|
<!-- Title of the window magnification panel option Magnifier size [CHAR LIMIT=NONE]-->
|
||||||
<string name="accessibility_magnifier_size">Magnifier size</string>
|
<string name="accessibility_magnifier_size">Magnifier size</string>
|
||||||
<!-- Title of the window magnification panel option Zoom [CHAR LIMIT=NONE]-->
|
<!-- Title of the window magnification panel option Zoom [CHAR LIMIT=NONE]-->
|
||||||
|
|||||||
@@ -1468,7 +1468,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
|
|||||||
super.onInitializeAccessibilityNodeInfo(host, info);
|
super.onInitializeAccessibilityNodeInfo(host, info);
|
||||||
final AccessibilityAction clickAction = new AccessibilityAction(
|
final AccessibilityAction clickAction = new AccessibilityAction(
|
||||||
AccessibilityAction.ACTION_CLICK.getId(), mContext.getResources().getString(
|
AccessibilityAction.ACTION_CLICK.getId(), mContext.getResources().getString(
|
||||||
R.string.magnification_mode_switch_click_label));
|
R.string.magnification_open_settings_click_label));
|
||||||
info.addAction(clickAction);
|
info.addAction(clickAction);
|
||||||
info.setClickable(true);
|
info.setClickable(true);
|
||||||
info.addAction(
|
info.addAction(
|
||||||
|
|||||||
@@ -215,9 +215,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
|||||||
|
|
||||||
private boolean performA11yAction(View view, int action) {
|
private boolean performA11yAction(View view, int action) {
|
||||||
final Rect windowBounds = mWindowManager.getCurrentWindowMetrics().getBounds();
|
final Rect windowBounds = mWindowManager.getCurrentWindowMetrics().getBounds();
|
||||||
if (action == AccessibilityAction.ACTION_CLICK.getId()) {
|
if (action == R.id.accessibility_action_move_up) {
|
||||||
handleSingleTap(view);
|
|
||||||
} else if (action == R.id.accessibility_action_move_up) {
|
|
||||||
moveButton(0, -windowBounds.height());
|
moveButton(0, -windowBounds.height());
|
||||||
} else if (action == R.id.accessibility_action_move_down) {
|
} else if (action == R.id.accessibility_action_move_down) {
|
||||||
moveButton(0, windowBounds.height());
|
moveButton(0, windowBounds.height());
|
||||||
@@ -264,8 +262,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
|||||||
} else if (id == R.id.magnifier_full_button) {
|
} else if (id == R.id.magnifier_full_button) {
|
||||||
hideSettingPanel();
|
hideSettingPanel();
|
||||||
toggleMagnificationMode();
|
toggleMagnificationMode();
|
||||||
} else {
|
|
||||||
hideSettingPanel();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -273,7 +269,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
|||||||
@Override
|
@Override
|
||||||
public boolean onSingleTap(View view) {
|
public boolean onSingleTap(View view) {
|
||||||
mSingleTapDetected = true;
|
mSingleTapDetected = true;
|
||||||
handleSingleTap(view);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -358,6 +353,10 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
|||||||
}
|
}
|
||||||
|
|
||||||
mWindowManager.addView(mSettingView, mParams);
|
mWindowManager.addView(mSettingView, mParams);
|
||||||
|
if (resetPosition) {
|
||||||
|
// Request focus on the settings panel when position of the panel is reset.
|
||||||
|
mSettingView.requestFocus();
|
||||||
|
}
|
||||||
|
|
||||||
// Exclude magnification switch button from system gesture area.
|
// Exclude magnification switch button from system gesture area.
|
||||||
setSystemGestureExclusion();
|
setSystemGestureExclusion();
|
||||||
@@ -385,8 +384,8 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
|||||||
mSettingView = (LinearLayout) View.inflate(mContext,
|
mSettingView = (LinearLayout) View.inflate(mContext,
|
||||||
R.layout.window_magnification_settings_view, null);
|
R.layout.window_magnification_settings_view, null);
|
||||||
|
|
||||||
mSettingView.setClickable(true);
|
|
||||||
mSettingView.setFocusable(true);
|
mSettingView.setFocusable(true);
|
||||||
|
mSettingView.setFocusableInTouchMode(true);
|
||||||
mSettingView.setOnTouchListener(this::onTouch);
|
mSettingView.setOnTouchListener(this::onTouch);
|
||||||
|
|
||||||
mPanelView = mSettingView.findViewById(R.id.magnifier_panel_view);
|
mPanelView = mSettingView.findViewById(R.id.magnifier_panel_view);
|
||||||
@@ -499,22 +498,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleSingleTap(View view) {
|
|
||||||
int id = view.getId();
|
|
||||||
if (id == R.id.magnifier_small_button) {
|
|
||||||
setMagnifierSize(MagnificationSize.SMALL);
|
|
||||||
} else if (id == R.id.magnifier_medium_button) {
|
|
||||||
setMagnifierSize(MagnificationSize.MEDIUM);
|
|
||||||
} else if (id == R.id.magnifier_large_button) {
|
|
||||||
setMagnifierSize(MagnificationSize.LARGE);
|
|
||||||
} else if (id == R.id.magnifier_full_button) {
|
|
||||||
hideSettingPanel();
|
|
||||||
toggleMagnificationMode();
|
|
||||||
} else {
|
|
||||||
hideSettingPanel();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void editMagnifierSizeMode(boolean enable) {
|
public void editMagnifierSizeMode(boolean enable) {
|
||||||
setEditMagnifierSizeMode(enable);
|
setEditMagnifierSizeMode(enable);
|
||||||
updateSelectedButton(MagnificationSize.NONE);
|
updateSelectedButton(MagnificationSize.NONE);
|
||||||
@@ -551,7 +534,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
|
|||||||
LayoutParams.WRAP_CONTENT,
|
LayoutParams.WRAP_CONTENT,
|
||||||
LayoutParams.WRAP_CONTENT,
|
LayoutParams.WRAP_CONTENT,
|
||||||
LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY,
|
LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY,
|
||||||
LayoutParams.FLAG_NOT_FOCUSABLE,
|
/* _flags= */ 0,
|
||||||
PixelFormat.TRANSPARENT);
|
PixelFormat.TRANSPARENT);
|
||||||
params.gravity = Gravity.TOP | Gravity.START;
|
params.gravity = Gravity.TOP | Gravity.START;
|
||||||
params.accessibilityTitle = getAccessibilityWindowTitle(context);
|
params.accessibilityTitle = getAccessibilityWindowTitle(context);
|
||||||
|
|||||||
@@ -201,6 +201,13 @@ public class WindowMagnificationSettingsTest extends SysuiTestCase {
|
|||||||
assertThat(magnifierMediumButton.isSelected()).isTrue();
|
assertThat(magnifierMediumButton.isSelected()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void showSettingPanel_focusOnThePanel() {
|
||||||
|
mWindowMagnificationSettings.showSettingPanel();
|
||||||
|
|
||||||
|
assertThat(mSettingView.isFocused()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
private <T extends View> T getInternalView(@IdRes int idRes) {
|
private <T extends View> T getInternalView(@IdRes int idRes) {
|
||||||
T view = mSettingView.findViewById(idRes);
|
T view = mSettingView.findViewById(idRes);
|
||||||
assertNotNull(view);
|
assertNotNull(view);
|
||||||
|
|||||||
Reference in New Issue
Block a user