Merge "Adding accessibility support to the share UI."
This commit is contained in:
committed by
Android (Google) Code Review
commit
1401935b8f
@@ -33,6 +33,8 @@ import android.view.View;
|
|||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.ViewTreeObserver;
|
import android.view.ViewTreeObserver;
|
||||||
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
|
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
|
||||||
|
import android.view.accessibility.AccessibilityEvent;
|
||||||
|
import android.view.accessibility.AccessibilityManager;
|
||||||
import android.widget.ActivityChooserModel.ActivityChooserModelClient;
|
import android.widget.ActivityChooserModel.ActivityChooserModelClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -168,6 +170,11 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
*/
|
*/
|
||||||
private boolean mIsAttachedToWindow;
|
private boolean mIsAttachedToWindow;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* String resource for formatting content description of the default target.
|
||||||
|
*/
|
||||||
|
private int mDefaultActionButtonContentDescription;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new instance.
|
* Create a new instance.
|
||||||
*
|
*
|
||||||
@@ -259,7 +266,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
*
|
*
|
||||||
* <strong>Note:</strong> Clients would like to set this drawable
|
* <strong>Note:</strong> Clients would like to set this drawable
|
||||||
* as a clue about the action the chosen activity will perform. For
|
* as a clue about the action the chosen activity will perform. For
|
||||||
* example, if share activity is to be chosen the drawable should
|
* example, if a share activity is to be chosen the drawable should
|
||||||
* give a clue that sharing is to be performed.
|
* give a clue that sharing is to be performed.
|
||||||
*
|
*
|
||||||
* @param drawable The drawable.
|
* @param drawable The drawable.
|
||||||
@@ -268,6 +275,21 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
mExpandActivityOverflowButtonImage.setImageDrawable(drawable);
|
mExpandActivityOverflowButtonImage.setImageDrawable(drawable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the content description for the button that expands the activity
|
||||||
|
* overflow list.
|
||||||
|
*
|
||||||
|
* description as a clue about the action performed by the button.
|
||||||
|
* For example, if a share activity is to be chosen the content
|
||||||
|
* description should be something like "Share with".
|
||||||
|
*
|
||||||
|
* @param resourceId The content description resource id.
|
||||||
|
*/
|
||||||
|
public void setExpandActivityOverflowButtonContentDescription(int resourceId) {
|
||||||
|
CharSequence contentDescription = mContext.getString(resourceId);
|
||||||
|
mExpandActivityOverflowButtonImage.setContentDescription(contentDescription);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the provider hosting this view, if applicable.
|
* Set the provider hosting this view, if applicable.
|
||||||
* @hide Internal use only
|
* @hide Internal use only
|
||||||
@@ -329,6 +351,8 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
if (mProvider != null) {
|
if (mProvider != null) {
|
||||||
mProvider.subUiVisibilityChanged(true);
|
mProvider.subUiVisibilityChanged(true);
|
||||||
}
|
}
|
||||||
|
popupWindow.getListView().setContentDescription(mContext.getString(
|
||||||
|
R.string.activitychooserview_choose_application));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -430,6 +454,20 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
mInitialActivityCount = itemCount;
|
mInitialActivityCount = itemCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a content description of the default action button. This
|
||||||
|
* resource should be a string taking one formatting argument and
|
||||||
|
* will be used for formatting the content description of the button
|
||||||
|
* dynamically as the default target changes. For example, a resource
|
||||||
|
* pointing to the string "share with %1$s" will result in a content
|
||||||
|
* description "share with Bluetooth" for the Bluetooth activity.
|
||||||
|
*
|
||||||
|
* @param resourceId The resource id.
|
||||||
|
*/
|
||||||
|
public void setDefaultActionButtonContentDescription(int resourceId) {
|
||||||
|
mDefaultActionButtonContentDescription = resourceId;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the list popup window which is lazily initialized.
|
* Gets the list popup window which is lazily initialized.
|
||||||
*
|
*
|
||||||
@@ -465,6 +503,12 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
|||||||
ResolveInfo activity = mAdapter.getDefaultActivity();
|
ResolveInfo activity = mAdapter.getDefaultActivity();
|
||||||
PackageManager packageManager = mContext.getPackageManager();
|
PackageManager packageManager = mContext.getPackageManager();
|
||||||
mDefaultActivityButtonImage.setImageDrawable(activity.loadIcon(packageManager));
|
mDefaultActivityButtonImage.setImageDrawable(activity.loadIcon(packageManager));
|
||||||
|
if (mDefaultActionButtonContentDescription != 0) {
|
||||||
|
CharSequence label = activity.loadLabel(packageManager);
|
||||||
|
String contentDescription = mContext.getString(
|
||||||
|
mDefaultActionButtonContentDescription, label);
|
||||||
|
mDefaultActivityButton.setContentDescription(contentDescription);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
mDefaultActivityButton.setVisibility(View.GONE);
|
mDefaultActivityButton.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,6 +171,12 @@ public class ShareActionProvider extends ActionProvider {
|
|||||||
activityChooserView.setExpandActivityOverflowButtonDrawable(drawable);
|
activityChooserView.setExpandActivityOverflowButtonDrawable(drawable);
|
||||||
activityChooserView.setProvider(this);
|
activityChooserView.setProvider(this);
|
||||||
|
|
||||||
|
// Set content description.
|
||||||
|
activityChooserView.setDefaultActionButtonContentDescription(
|
||||||
|
R.string.shareactionprovider_share_with_application);
|
||||||
|
activityChooserView.setExpandActivityOverflowButtonContentDescription(
|
||||||
|
R.string.shareactionprovider_share_with);
|
||||||
|
|
||||||
return activityChooserView;
|
return activityChooserView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3182,6 +3182,16 @@
|
|||||||
<!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
|
<!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
|
||||||
<string name="keyboardview_keycode_enter">Enter</string>
|
<string name="keyboardview_keycode_enter">Enter</string>
|
||||||
|
|
||||||
|
<!-- ActivityChooserView - accessibility support -->
|
||||||
|
<!-- Description of the shwoing of a popup window with activities to choose from. [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="activitychooserview_choose_application">Choose an application</string>
|
||||||
|
|
||||||
|
<!-- ShareActionProvider - accessibility support -->
|
||||||
|
<!-- Description of the choose target button in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="shareactionprovider_share_with">Share with</string>
|
||||||
|
<!-- Description of a share target (both in the list of such or the default share button) in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="shareactionprovider_share_with_application">Share with <xliff:g id="application_name" example="Bluetooth">%s</xliff:g></string>
|
||||||
|
|
||||||
<!-- Slide lock screen -->
|
<!-- Slide lock screen -->
|
||||||
|
|
||||||
<!-- Description of the sliding handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
|
<!-- Description of the sliding handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
|
||||||
|
|||||||
Reference in New Issue
Block a user