Populating some more accessibility events.

Change-Id: I7813abdd6dcc0979949caec9e31029486be0396d
This commit is contained in:
Winson Chung
2011-06-29 20:10:49 -07:00
parent e87b924efa
commit 6a0f57dfaf
7 changed files with 90 additions and 3 deletions
+49 -2
View File
@@ -16,8 +16,6 @@
package com.android.launcher2;
import java.util.ArrayList;
import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.animation.AnimatorListenerAdapter;
@@ -39,6 +37,8 @@ import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.animation.Interpolator;
import android.widget.Checkable;
import android.widget.ImageView;
@@ -46,6 +46,8 @@ import android.widget.Scroller;
import com.android.launcher.R;
import java.util.ArrayList;
/**
* An abstraction of the original Workspace which supports browsing through a
* sequential list of "pages"
@@ -1699,4 +1701,49 @@ public abstract class PagedView extends ViewGroup {
int indicatorPos = (int) (offset * pageWidth) + pageOffset + indicatorCenterOffset;
mScrollIndicator.setTranslationX(indicatorPos);
}
/* Accessibility */
@Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
info.setScrollable(true);
}
@Override
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
super.onInitializeAccessibilityEvent(event);
event.setScrollable(true);
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_SCROLLED) {
event.setFromIndex(mCurrentPage);
event.setToIndex(mCurrentPage);
event.setItemCount(getChildCount());
}
}
@Override
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
// Do not append text content to scroll events they are fired frequently
// and the client has already received another event type with the text.
if (event.getEventType() != AccessibilityEvent.TYPE_VIEW_SCROLLED) {
super.dispatchPopulateAccessibilityEvent(event);
}
onPopulateAccessibilityEvent(event);
return false;
}
@Override
public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
super.onPopulateAccessibilityEvent(event);
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_SCROLLED) {
event.getText().add(getCurrentPageDescription());
}
}
protected String getCurrentPageDescription() {
int page = (mNextPage != INVALID_PAGE) ? mNextPage : mCurrentPage;
return String.format(mContext.getString(R.string.default_scroll_format),
page + 1, getChildCount());
}
}