diff options
author | Vadim Tryshev <vadimt@google.com> | 2018-04-04 14:45:21 -0700 |
---|---|---|
committer | Vadim Tryshev <vadimt@google.com> | 2018-04-05 10:53:08 -0700 |
commit | 2c430b34cbab3d156c93d90b457b70e3a869ec0a (patch) | |
tree | 939a0921d8900671a3a3aa5c1033a90dcc1a9340 /src | |
parent | ac6a6b6bf7e703bb5d40953c92c611321de9880b (diff) | |
download | android_packages_apps_Trebuchet-2c430b34cbab3d156c93d90b457b70e3a869ec0a.tar.gz android_packages_apps_Trebuchet-2c430b34cbab3d156c93d90b457b70e3a869ec0a.tar.bz2 android_packages_apps_Trebuchet-2c430b34cbab3d156c93d90b457b70e3a869ec0a.zip |
Avoid duplicate accessibility announcement upon switching to -1st page
Since -1st window already has accessible description, no need to
announce "Page X of Y" for it.
Bug: 74210311
Test: Manual
Change-Id: I5cbfd763778b5f7049be732a750df4501b5419e0
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher3/PagedView.java | 16 | ||||
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 20 |
2 files changed, 30 insertions, 6 deletions
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 79993c11a..15bf76da5 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -424,6 +424,13 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou return computeScrollHelper(true); } + protected void announcePageForAccessibility() { + if (isAccessibilityEnabled(getContext())) { + // Notify the user when the page changes + announceForAccessibility(getCurrentPageDescription()); + } + } + protected boolean computeScrollHelper(boolean shouldInvalidate) { if (mScroller.computeScrollOffset()) { // Don't bother scrolling if the page does not need to be moved @@ -452,9 +459,8 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou pageEndTransition(); } - if (isAccessibilityEnabled(getContext())) { - // Notify the user when the page changes - announceForAccessibility(getCurrentPageDescription()); + if (canAnnouncePageDescription()) { + announcePageForAccessibility(); } } return false; @@ -1535,6 +1541,10 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou return getCurrentPageDescription(); } + protected boolean canAnnouncePageDescription() { + return true; + } + protected String getCurrentPageDescription() { return getContext().getString(R.string.default_scroll_format, getNextPage() + 1, getChildCount()); diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 34ae8ea3d..a39d273e9 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -1143,30 +1143,37 @@ public class Workspace extends PagedView<WorkspacePageIndicator> * The overlay scroll is being controlled locally, just update our overlay effect */ public void onOverlayScrollChanged(float scroll) { - if (Float.compare(scroll, 1f) == 0) { if (!mOverlayShown) { mLauncher.getUserEventDispatcher().logActionOnContainer(Action.Touch.SWIPE, Action.Direction.LEFT, ContainerType.WORKSPACE, 0); } mOverlayShown = true; + // Not announcing the overlay page for accessibility since it announces itself. } else if (Float.compare(scroll, 0f) == 0) { if (mOverlayShown) { mLauncher.getUserEventDispatcher().logActionOnContainer(Action.Touch.SWIPE, Action.Direction.RIGHT, ContainerType.WORKSPACE, -1); + } else if (Float.compare(mOverlayTranslation, 0f) != 0) { + // When arriving to 0 overscroll from non-zero overscroll, announce page for + // accessibility since default announcements were disabled while in overscroll + // state. + // Not doing this if mOverlayShown because in that case the accessibility service + // will announce the launcher window description upon regaining focus after + // switching from the overlay screen. + announcePageForAccessibility(); } mOverlayShown = false; tryRunOverlayCallback(); } + float offset = 0f; - float slip = 0f; scroll = Math.max(scroll - offset, 0); scroll = Math.min(1, scroll / (1 - offset)); float alpha = 1 - Interpolators.DEACCEL_3.getInterpolation(scroll); float transX = mLauncher.getDragLayer().getMeasuredWidth() * scroll; - transX *= 1 - slip; if (mIsRtl) { transX = -transX; @@ -3345,6 +3352,13 @@ public class Workspace extends PagedView<WorkspacePageIndicator> } @Override + protected boolean canAnnouncePageDescription() { + // Disable announcements while overscrolling potentially to overlay screen because if we end + // up on the overlay screen, it will take care of announcing itself. + return Float.compare(mOverlayTranslation, 0f) == 0; + } + + @Override protected String getCurrentPageDescription() { int page = (mNextPage != INVALID_PAGE) ? mNextPage : mCurrentPage; return getPageDescription(page); |