summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVadim Tryshev <vadimt@google.com>2018-04-04 14:45:21 -0700
committerVadim Tryshev <vadimt@google.com>2018-04-05 10:53:08 -0700
commit2c430b34cbab3d156c93d90b457b70e3a869ec0a (patch)
tree939a0921d8900671a3a3aa5c1033a90dcc1a9340 /src
parentac6a6b6bf7e703bb5d40953c92c611321de9880b (diff)
downloadandroid_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.java16
-rw-r--r--src/com/android/launcher3/Workspace.java20
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);