Modifier and Type | Field and Description |
---|---|
static int |
IMPORTANT_FOR_ACCESSIBILITY_AUTO
Automatically determine whether a view is important for accessibility.
|
static int |
IMPORTANT_FOR_ACCESSIBILITY_NO
The view is not important for accessibility.
|
static int |
IMPORTANT_FOR_ACCESSIBILITY_YES
The view is important for accessibility.
|
static int |
LAYER_TYPE_HARDWARE
Indicates that the view has a hardware layer.
|
static int |
LAYER_TYPE_NONE
Indicates that the view does not have a layer.
|
static int |
LAYER_TYPE_SOFTWARE
Indicates that the view has a software layer.
|
static int |
OVER_SCROLL_ALWAYS
Always allow a user to over-scroll this view, provided it is a
view that can scroll.
|
static int |
OVER_SCROLL_IF_CONTENT_SCROLLS
Allow a user to over-scroll this view only if the content is large
enough to meaningfully scroll, provided it is a view that can scroll.
|
static int |
OVER_SCROLL_NEVER
Never allow a user to over-scroll this view.
|
Constructor and Description |
---|
ViewCompat() |
Modifier and Type | Method and Description |
---|---|
static boolean |
canScrollHorizontally(View v,
int direction)
Check if this view can be scrolled horizontally in a certain direction.
|
static boolean |
canScrollVertically(View v,
int direction)
Check if this view can be scrolled vertically in a certain direction.
|
static AccessibilityNodeProviderCompat |
getAccessibilityNodeProvider(View view)
Gets the provider for managing a virtual view hierarchy rooted at this View
and reported to
AccessibilityService s
that explore the window content. |
static int |
getImportantForAccessibility(View view)
Gets the mode for determining whether this View is important for accessibility
which is if it fires accessibility events and if it is reported to
accessibility services that query the screen.
|
static int |
getLabelFor(View view)
Gets the id of a view for which a given view serves as a label for
accessibility purposes.
|
static int |
getLayerType(View view)
Indicates what type of layer is currently associated with this view.
|
static int |
getOverScrollMode(View v)
Returns the over-scroll mode for this view.
|
static boolean |
hasTransientState(View view)
Indicates whether the view is currently tracking transient state that the
app should not need to concern itself with saving and restoring, but that
the framework should take special note to preserve when possible.
|
static void |
onInitializeAccessibilityEvent(View v,
AccessibilityEvent event)
Initializes an
AccessibilityEvent with information about
this View which is the event source. |
static void |
onInitializeAccessibilityNodeInfo(View v,
AccessibilityNodeInfoCompat info)
Initializes an
AccessibilityNodeInfo with information
about this view. |
static void |
onPopulateAccessibilityEvent(View v,
AccessibilityEvent event)
Called from
View.dispatchPopulateAccessibilityEvent(AccessibilityEvent)
giving a chance to this View to populate the accessibility event with its
text content. |
static boolean |
performAccessibilityAction(View view,
int action,
Bundle arguments)
Performs the specified accessibility action on the view.
|
static void |
postInvalidateOnAnimation(View view)
Cause an invalidate to happen on the next animation time step, typically the
next display frame.
|
static void |
postInvalidateOnAnimation(View view,
int left,
int top,
int right,
int bottom)
Cause an invalidate of the specified area to happen on the next animation
time step, typically the next display frame.
|
static void |
postOnAnimation(View view,
Runnable action)
Causes the Runnable to execute on the next animation time step.
|
static void |
postOnAnimationDelayed(View view,
Runnable action,
long delayMillis)
Causes the Runnable to execute on the next animation time step,
after the specified amount of time elapses.
|
static void |
setAccessibilityDelegate(View v,
AccessibilityDelegateCompat delegate)
Sets a delegate for implementing accessibility support via compositon as
opposed to inheritance.
|
static void |
setHasTransientState(View view,
boolean hasTransientState)
Set whether this view is currently tracking transient state that the
framework should attempt to preserve when possible.
|
static void |
setImportantForAccessibility(View view,
int mode)
Sets how to determine whether this view is important for accessibility
which is if it fires accessibility events and if it is reported to
accessibility services that query the screen.
|
static void |
setLabelFor(View view,
int labeledId)
Sets the id of a view for which a given view serves as a label for
accessibility purposes.
|
static void |
setLayerType(View view,
int layerType,
Paint paint)
Specifies the type of layer backing this view.
|
static void |
setOverScrollMode(View v,
int overScrollMode)
Set the over-scroll mode for this view.
|
public static final int OVER_SCROLL_ALWAYS
public static final int OVER_SCROLL_IF_CONTENT_SCROLLS
public static final int OVER_SCROLL_NEVER
public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO
public static final int IMPORTANT_FOR_ACCESSIBILITY_YES
public static final int IMPORTANT_FOR_ACCESSIBILITY_NO
public static final int LAYER_TYPE_NONE
public static final int LAYER_TYPE_SOFTWARE
Indicates that the view has a software layer. A software layer is backed by a bitmap and causes the view to be rendered using Android's software rendering pipeline, even if hardware acceleration is enabled.
Software layers have various usages:
When the application is not using hardware acceleration, a software layer is useful to apply a specific color filter and/or blending mode and/or translucency to a view and all its children.
When the application is using hardware acceleration, a software layer is useful to render drawing primitives not supported by the hardware accelerated pipeline. It can also be used to cache a complex view tree into a texture and reduce the complexity of drawing operations. For instance, when animating a complex view tree with a translation, a software layer can be used to render the view tree only once.
Software layers should be avoided when the affected view tree updates often. Every update will require to re-render the software layer, which can potentially be slow (particularly when hardware acceleration is turned on since the layer will have to be uploaded into a hardware texture after every update.)
public static final int LAYER_TYPE_HARDWARE
Indicates that the view has a hardware layer. A hardware layer is backed
by a hardware specific texture (generally Frame Buffer Objects or FBO on
OpenGL hardware) and causes the view to be rendered using Android's hardware
rendering pipeline, but only if hardware acceleration is turned on for the
view hierarchy. When hardware acceleration is turned off, hardware layers
behave exactly as software layers
.
A hardware layer is useful to apply a specific color filter and/or blending mode and/or translucency to a view and all its children.
A hardware layer can be used to cache a complex view tree into a texture and reduce the complexity of drawing operations. For instance, when animating a complex view tree with a translation, a hardware layer can be used to render the view tree only once.
A hardware layer can also be used to increase the rendering quality when rotation transformations are applied on a view. It can also be used to prevent potential clipping issues when applying 3D transforms on a view.
public static boolean canScrollHorizontally(View v, int direction)
v
- The View against which to invoke the method.direction
- Negative to check scrolling left, positive to check scrolling right.public static boolean canScrollVertically(View v, int direction)
v
- The View against which to invoke the method.direction
- Negative to check scrolling up, positive to check scrolling down.public static int getOverScrollMode(View v)
OVER_SCROLL_ALWAYS
(default), OVER_SCROLL_IF_CONTENT_SCROLLS
(allow over-scrolling only if the view content is larger than the container),
or OVER_SCROLL_NEVER
.v
- The View against which to invoke the method.public static void setOverScrollMode(View v, int overScrollMode)
OVER_SCROLL_ALWAYS
(default), OVER_SCROLL_IF_CONTENT_SCROLLS
(allow over-scrolling only if the view content is larger than the container),
or OVER_SCROLL_NEVER
.
Setting the over-scroll mode of a view will have an effect only if the
view is capable of scrolling.v
- The View against which to invoke the method.overScrollMode
- The new over-scroll mode for this view.public static void onPopulateAccessibilityEvent(View v, AccessibilityEvent event)
View.dispatchPopulateAccessibilityEvent(AccessibilityEvent)
giving a chance to this View to populate the accessibility event with its
text content. While this method is free to modify event
attributes other than text content, doing so should normally be performed in
View.onInitializeAccessibilityEvent(AccessibilityEvent)
.
Example: Adding formatted date string to an accessibility event in addition to the text added by the super implementation:
public void onPopulateAccessibilityEvent(AccessibilityEvent event) { super.onPopulateAccessibilityEvent(event); final int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_WEEKDAY; String selectedDateUtterance = DateUtils.formatDateTime(mContext, mCurrentDate.getTimeInMillis(), flags); event.getText().add(selectedDateUtterance); }
If an View.AccessibilityDelegate
has been specified via calling
View.setAccessibilityDelegate(android.view.View.AccessibilityDelegate)
its
View.AccessibilityDelegate.onPopulateAccessibilityEvent(View,
AccessibilityEvent)
is responsible for handling this call.
Note: Always call the super implementation before adding information to the event, in case the default implementation has basic information to add.
v
- The View against which to invoke the method.event
- The accessibility event which to populate.View.sendAccessibilityEvent(int)
,
View.dispatchPopulateAccessibilityEvent(AccessibilityEvent)
public static void onInitializeAccessibilityEvent(View v, AccessibilityEvent event)
AccessibilityEvent
with information about
this View which is the event source. In other words, the source of
an accessibility event is the view whose state change triggered firing
the event.
Example: Setting the password property of an event in addition to properties set by the super implementation:
public void onInitializeAccessibilityEvent(AccessibilityEvent event) { super.onInitializeAccessibilityEvent(event); event.setPassword(true); }
If an View.AccessibilityDelegate
has been specified via calling
View.setAccessibilityDelegate(android.view.View.AccessibilityDelegate)
its
View.AccessibilityDelegate.onInitializeAccessibilityEvent(View,
AccessibilityEvent)
is responsible for handling this call.
Note: Always call the super implementation before adding information to the event, in case the default implementation has basic information to add.
v
- The View against which to invoke the method.event
- The event to initialize.View.sendAccessibilityEvent(int)
,
View.dispatchPopulateAccessibilityEvent(AccessibilityEvent)
public static void onInitializeAccessibilityNodeInfo(View v, AccessibilityNodeInfoCompat info)
AccessibilityNodeInfo
with information
about this view. The base implementation sets:
AccessibilityNodeInfo.setParent(View)
,AccessibilityNodeInfo.setBoundsInParent(Rect)
,AccessibilityNodeInfo.setBoundsInScreen(Rect)
,AccessibilityNodeInfo.setPackageName(CharSequence)
,AccessibilityNodeInfo.setClassName(CharSequence)
,AccessibilityNodeInfo.setContentDescription(CharSequence)
,AccessibilityNodeInfo.setEnabled(boolean)
,AccessibilityNodeInfo.setClickable(boolean)
,AccessibilityNodeInfo.setFocusable(boolean)
,AccessibilityNodeInfo.setFocused(boolean)
,AccessibilityNodeInfo.setLongClickable(boolean)
,AccessibilityNodeInfo.setSelected(boolean)
,Subclasses should override this method, call the super implementation, and set additional attributes.
If an View.AccessibilityDelegate
has been specified via calling
View.setAccessibilityDelegate(android.view.View.AccessibilityDelegate)
its
View.AccessibilityDelegate.onInitializeAccessibilityNodeInfo(View,
android.view.accessibility.AccessibilityNodeInfo)
is responsible for handling this call.
v
- The View against which to invoke the method.info
- The instance to initialize.public static void setAccessibilityDelegate(View v, AccessibilityDelegateCompat delegate)
View.AccessibilityDelegate
.v
- The View against which to invoke the method.delegate
- The delegate instance.View.AccessibilityDelegate
public static boolean hasTransientState(View view)
view
- View to check for transient statepublic static void setHasTransientState(View view, boolean hasTransientState)
view
- View tracking transient statehasTransientState
- true if this view has transient statepublic static void postInvalidateOnAnimation(View view)
Cause an invalidate to happen on the next animation time step, typically the next display frame.
This method can be invoked from outside of the UI thread only when this View is attached to a window.
view
- View to invalidatepublic static void postInvalidateOnAnimation(View view, int left, int top, int right, int bottom)
Cause an invalidate of the specified area to happen on the next animation time step, typically the next display frame.
This method can be invoked from outside of the UI thread only when this View is attached to a window.
view
- View to invalidateleft
- The left coordinate of the rectangle to invalidate.top
- The top coordinate of the rectangle to invalidate.right
- The right coordinate of the rectangle to invalidate.bottom
- The bottom coordinate of the rectangle to invalidate.public static void postOnAnimation(View view, Runnable action)
Causes the Runnable to execute on the next animation time step. The runnable will be run on the user interface thread.
This method can be invoked from outside of the UI thread only when this View is attached to a window.
view
- View to post this Runnable toaction
- The Runnable that will be executed.public static void postOnAnimationDelayed(View view, Runnable action, long delayMillis)
Causes the Runnable to execute on the next animation time step, after the specified amount of time elapses. The runnable will be run on the user interface thread.
This method can be invoked from outside of the UI thread only when this View is attached to a window.
view
- The view to post this Runnable toaction
- The Runnable that will be executed.delayMillis
- The delay (in milliseconds) until the Runnable
will be executed.public static int getImportantForAccessibility(View view)
view
- The view whose property to get.IMPORTANT_FOR_ACCESSIBILITY_YES
,
IMPORTANT_FOR_ACCESSIBILITY_NO
,
IMPORTANT_FOR_ACCESSIBILITY_AUTO
public static void setImportantForAccessibility(View view, int mode)
view
- The view whose property to set.mode
- How to determine whether this view is important for accessibility.IMPORTANT_FOR_ACCESSIBILITY_YES
,
IMPORTANT_FOR_ACCESSIBILITY_NO
,
IMPORTANT_FOR_ACCESSIBILITY_AUTO
public static boolean performAccessibilityAction(View view, int action, Bundle arguments)
AccessibilityNodeInfoCompat
.
If an AccessibilityDelegateCompat
has been specified via calling
setAccessibilityDelegate(View, AccessibilityDelegateCompat)
its
AccessibilityDelegateCompat.performAccessibilityAction(View, int, Bundle)
is responsible for handling this call.
action
- The action to perform.arguments
- Optional action arguments.public static AccessibilityNodeProviderCompat getAccessibilityNodeProvider(View view)
AccessibilityService
s
that explore the window content.
If this method returns an instance, this instance is responsible for managing
AccessibilityNodeInfoCompat
s describing the virtual sub-tree rooted at
this View including the one representing the View itself. Similarly the returned
instance is responsible for performing accessibility actions on any virtual
view or the root view itself.
If an AccessibilityDelegateCompat
has been specified via calling
#setAccessibilityDelegate(View, AccessibilityDelegateCompat) its
{@link AccessibilityDelegateCompat#getAccessibilityNodeProvider(View)}
is responsible for handling this call.
view
- The view whose property to get.AccessibilityNodeProviderCompat
public static void setLayerType(View view, int layerType, Paint paint)
Specifies the type of layer backing this view. The layer can be
disabled
, software
or
hardware
.
A layer is associated with an optional Paint
instance that controls how the layer is composed on screen. The following
properties of the paint are taken into account when composing the layer:
If this view has an alpha value set to < 1.0 by calling setalpha(float), the alpha value of the layer's paint is replaced by this view's alpha value. calling setalpha(float) is therefore equivalent to setting a hardware layer on this view and providing a paint with the desired alpha value.
Refer to the documentation of disabled
,
software
and hardware
for more information on when and how to use layers.
layerType
- The ype of layer to use with this view, must be one of
LAYER_TYPE_NONE
, LAYER_TYPE_SOFTWARE
or
LAYER_TYPE_HARDWARE
paint
- The paint used to compose the layer. This argument is optional
and can be null. It is ignored when the layer type is
LAYER_TYPE_NONE
view
- View to set the layer type forlayerType
- The type of layer to use with this view, must be one of
LAYER_TYPE_NONE
, LAYER_TYPE_SOFTWARE
or
LAYER_TYPE_HARDWARE
paint
- The paint used to compose the layer. This argument is optional
and can be null. It is ignored when the layer type is
LAYER_TYPE_NONE
public static int getLayerType(View view)
LAYER_TYPE_NONE
.
Refer to the documentation of
setLayerType(android.view.View, int, android.graphics.Paint)
for more information on the different types of layers.view
- The view to fetch the layer type fromLAYER_TYPE_NONE
, LAYER_TYPE_SOFTWARE
or
LAYER_TYPE_HARDWARE
setLayerType(android.view.View, int, android.graphics.Paint)
,
LAYER_TYPE_NONE
,
LAYER_TYPE_SOFTWARE
,
LAYER_TYPE_HARDWARE
public static int getLabelFor(View view)
view
- The view on which to invoke the corresponding method.public static void setLabelFor(View view, int labeledId)
view
- The view on which to invoke the corresponding method.labeledId
- The labeled view id.