ViewCompat.java revision 8c9ce11dec24a32f438406286404be7ac294011d
1bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell/* 2bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell * Copyright (C) 2011 The Android Open Source Project 3bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell * 4bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 5bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell * you may not use this file except in compliance with the License. 6bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell * You may obtain a copy of the License at 7bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell * 8bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell * http://www.apache.org/licenses/LICENSE-2.0 9bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell * 10bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell * Unless required by applicable law or agreed to in writing, software 11bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell * distributed under the License is distributed on an "AS IS" BASIS, 12bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell * See the License for the specific language governing permissions and 14bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell * limitations under the License. 15bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell */ 16bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell 17bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powellpackage android.support.v4.view; 18bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell 198a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powellimport android.graphics.Paint; 20c029e15f5a4709214cb433a562256586824a0f33Adam Powellimport android.graphics.PixelFormat; 210574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganovimport android.graphics.Rect; 22c029e15f5a4709214cb433a562256586824a0f33Adam Powellimport android.graphics.drawable.Drawable; 230d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanvimport android.os.Bundle; 24a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbyeimport android.support.annotation.IdRes; 25a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbyeimport android.support.annotation.IntDef; 26d392c8cae159a3a9a416200f4e117634bdbf064eYigit Boyarimport android.support.annotation.Nullable; 279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; 2825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganovimport android.support.v4.view.accessibility.AccessibilityNodeProviderCompat; 29a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powellimport android.util.Log; 30bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powellimport android.view.View; 310f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereiraimport android.view.ViewGroup; 323cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powellimport android.view.ViewParent; 339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.view.accessibility.AccessibilityEvent; 34bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell 35a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbyeimport java.lang.annotation.Retention; 36a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbyeimport java.lang.annotation.RetentionPolicy; 37a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyarimport java.lang.reflect.Field; 38a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powellimport java.lang.reflect.Method; 39d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haaseimport java.util.WeakHashMap; 40a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell 41bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell/** 420574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing features in {@link View} introduced after API 430574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * level 4 in a backwards compatible fashion. 44bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell */ 45bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powellpublic class ViewCompat { 46a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell private static final String TAG = "ViewCompat"; 47a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell 48ea4f700ac38424954c56df5138ff794def50b019Chris Banes 49a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye /** @hide */ 50a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @IntDef({OVER_SCROLL_ALWAYS, OVER_SCROLL_IF_CONTENT_SCROLLS, OVER_SCROLL_IF_CONTENT_SCROLLS}) 51a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @Retention(RetentionPolicy.SOURCE) 52a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye private @interface OverScroll {} 53a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye 54560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell /** 55560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell * Always allow a user to over-scroll this view, provided it is a 56560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell * view that can scroll. 57560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell */ 58560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell public static final int OVER_SCROLL_ALWAYS = 0; 59560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell 60560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell /** 61560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell * Allow a user to over-scroll this view only if the content is large 62560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell * enough to meaningfully scroll, provided it is a view that can scroll. 63560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell */ 64560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell public static final int OVER_SCROLL_IF_CONTENT_SCROLLS = 1; 65560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell 66560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell /** 67560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell * Never allow a user to over-scroll this view. 68560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell */ 69560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell public static final int OVER_SCROLL_NEVER = 2; 70560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell 71ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell private static final long FAKE_FRAME_TIME = 10; 72ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell 73a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye /** @hide */ 74a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @IntDef({ 75a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye IMPORTANT_FOR_ACCESSIBILITY_AUTO, 76a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye IMPORTANT_FOR_ACCESSIBILITY_YES, 77a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye IMPORTANT_FOR_ACCESSIBILITY_NO, 78a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS 79a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye }) 80a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @Retention(RetentionPolicy.SOURCE) 81a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye private @interface ImportantForAccessibility {} 82a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye 8325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov /** 8425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * Automatically determine whether a view is important for accessibility. 8525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov */ 8625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO = 0x00000000; 8725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 8825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov /** 8925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * The view is important for accessibility. 9025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov */ 9125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public static final int IMPORTANT_FOR_ACCESSIBILITY_YES = 0x00000001; 9225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 9325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov /** 9425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * The view is not important for accessibility. 9525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov */ 9625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public static final int IMPORTANT_FOR_ACCESSIBILITY_NO = 0x00000002; 9725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 988a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell /** 99b5b909e4544fd4d1d0bdf445b8588a7233d5c71fAlan Viverette * The view is not important for accessibility, nor are any of its 100b5b909e4544fd4d1d0bdf445b8588a7233d5c71fAlan Viverette * descendant views. 101b5b909e4544fd4d1d0bdf445b8588a7233d5c71fAlan Viverette */ 102b5b909e4544fd4d1d0bdf445b8588a7233d5c71fAlan Viverette public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 0x00000004; 103b5b909e4544fd4d1d0bdf445b8588a7233d5c71fAlan Viverette 104a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye /** @hide */ 105a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @IntDef({ 106a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye ACCESSIBILITY_LIVE_REGION_NONE, 107a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye ACCESSIBILITY_LIVE_REGION_POLITE, 108a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye ACCESSIBILITY_LIVE_REGION_ASSERTIVE 109a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye }) 110a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @Retention(RetentionPolicy.SOURCE) 111a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye private @interface AccessibilityLiveRegion {} 112a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye 113b5b909e4544fd4d1d0bdf445b8588a7233d5c71fAlan Viverette /** 114086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * Live region mode specifying that accessibility services should not 115086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * automatically announce changes to this view. This is the default live 116086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * region mode for most views. 117086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * <p> 118086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * Use with {@link ViewCompat#setAccessibilityLiveRegion(View, int)}. 119086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette */ 120086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0x00000000; 121086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette 122086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette /** 123086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * Live region mode specifying that accessibility services should announce 124086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * changes to this view. 125086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * <p> 126086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * Use with {@link ViewCompat#setAccessibilityLiveRegion(View, int)}. 127086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette */ 128086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 0x00000001; 129086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette 130086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette /** 131086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * Live region mode specifying that accessibility services should interrupt 132086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * ongoing speech to immediately announce changes to this view. 133086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * <p> 134086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * Use with {@link ViewCompat#setAccessibilityLiveRegion(View, int)}. 135086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette */ 136086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 0x00000002; 137086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette 138a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye /** @hide */ 139a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @IntDef({LAYER_TYPE_NONE, LAYER_TYPE_SOFTWARE, LAYER_TYPE_HARDWARE}) 140a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @Retention(RetentionPolicy.SOURCE) 141a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye private @interface LayerType {} 142a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye 143086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette /** 1448a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * Indicates that the view does not have a layer. 1458a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell */ 1468a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell public static final int LAYER_TYPE_NONE = 0; 1478a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell 1488a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell /** 1498a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <p>Indicates that the view has a software layer. A software layer is backed 1508a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * by a bitmap and causes the view to be rendered using Android's software 1518a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * rendering pipeline, even if hardware acceleration is enabled.</p> 1528a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * 1538a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <p>Software layers have various usages:</p> 1548a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <p>When the application is not using hardware acceleration, a software layer 1558a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * is useful to apply a specific color filter and/or blending mode and/or 1568a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * translucency to a view and all its children.</p> 1578a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <p>When the application is using hardware acceleration, a software layer 1588a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * is useful to render drawing primitives not supported by the hardware 1598a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * accelerated pipeline. It can also be used to cache a complex view tree 1608a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * into a texture and reduce the complexity of drawing operations. For instance, 1618a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * when animating a complex view tree with a translation, a software layer can 1628a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * be used to render the view tree only once.</p> 1638a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <p>Software layers should be avoided when the affected view tree updates 1648a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * often. Every update will require to re-render the software layer, which can 1658a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * potentially be slow (particularly when hardware acceleration is turned on 1668a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * since the layer will have to be uploaded into a hardware texture after every 1678a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * update.)</p> 1688a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell */ 1698a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell public static final int LAYER_TYPE_SOFTWARE = 1; 1708a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell 1718a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell /** 1728a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <p>Indicates that the view has a hardware layer. A hardware layer is backed 1738a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * by a hardware specific texture (generally Frame Buffer Objects or FBO on 1748a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * OpenGL hardware) and causes the view to be rendered using Android's hardware 1758a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * rendering pipeline, but only if hardware acceleration is turned on for the 1768a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * view hierarchy. When hardware acceleration is turned off, hardware layers 1778a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * behave exactly as {@link #LAYER_TYPE_SOFTWARE software layers}.</p> 1788a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * 1798a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <p>A hardware layer is useful to apply a specific color filter and/or 1808a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * blending mode and/or translucency to a view and all its children.</p> 1818a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <p>A hardware layer can be used to cache a complex view tree into a 1828a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * texture and reduce the complexity of drawing operations. For instance, 1838a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * when animating a complex view tree with a translation, a hardware layer can 1848a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * be used to render the view tree only once.</p> 1858a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <p>A hardware layer can also be used to increase the rendering quality when 1868a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * rotation transformations are applied on a view. It can also be used to 1878a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * prevent potential clipping issues when applying 3D transforms on a view.</p> 1888a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell */ 1898a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell public static final int LAYER_TYPE_HARDWARE = 2; 1908a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell 191a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye /** @hide */ 192a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @IntDef({ 193a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye LAYOUT_DIRECTION_LTR, 194a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye LAYOUT_DIRECTION_RTL, 195a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye LAYOUT_DIRECTION_INHERIT, 196a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye LAYOUT_DIRECTION_LOCALE}) 197a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @Retention(RetentionPolicy.SOURCE) 198a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye private @interface LayoutDirectionMode {} 199a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye 200a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye /** @hide */ 201a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @IntDef({ 202a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye LAYOUT_DIRECTION_LTR, 203a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye LAYOUT_DIRECTION_RTL 204a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye }) 205a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @Retention(RetentionPolicy.SOURCE) 206a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye private @interface ResolvedLayoutDirectionMode {} 207a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye 2081d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell /** 2091d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * Horizontal layout direction of this view is from Left to Right. 2101d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell */ 2111d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell public static final int LAYOUT_DIRECTION_LTR = 0; 2121d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell 2131d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell /** 2141d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * Horizontal layout direction of this view is from Right to Left. 2151d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell */ 2161d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell public static final int LAYOUT_DIRECTION_RTL = 1; 2171d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell 2181d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell /** 2191d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * Horizontal layout direction of this view is inherited from its parent. 2201d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * Use with {@link #setLayoutDirection}. 2211d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell */ 2221d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell public static final int LAYOUT_DIRECTION_INHERIT = 2; 2231d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell 2241d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell /** 2251d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * Horizontal layout direction of this view is from deduced from the default language 2261d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * script for the locale. Use with {@link #setLayoutDirection}. 2271d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell */ 2281d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell public static final int LAYOUT_DIRECTION_LOCALE = 3; 2291d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell 230b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell /** 231b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * Bits of {@link #getMeasuredWidthAndState} and 232b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * {@link #getMeasuredWidthAndState} that provide the actual measured size. 233b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell */ 234b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public static final int MEASURED_SIZE_MASK = 0x00ffffff; 235b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 236b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell /** 237b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * Bits of {@link #getMeasuredWidthAndState} and 238b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * {@link #getMeasuredWidthAndState} that provide the additional state bits. 239b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell */ 240b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public static final int MEASURED_STATE_MASK = 0xff000000; 241b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 242b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell /** 243b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * Bit shift of {@link #MEASURED_STATE_MASK} to get to the height bits 244b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * for functions that combine both width and height into a single int, 245b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * such as {@link #getMeasuredState} and the childState argument of 246b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * {@link #resolveSizeAndState(int, int, int)}. 247b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell */ 248b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; 249b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 250b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell /** 251b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * Bit of {@link #getMeasuredWidthAndState} and 252b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * {@link #getMeasuredWidthAndState} that indicates the measured size 253b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * is smaller that the space the view would like to have. 254b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell */ 255b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public static final int MEASURED_STATE_TOO_SMALL = 0x01000000; 256b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 257bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell interface ViewCompatImpl { 258bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell public boolean canScrollHorizontally(View v, int direction); 259bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell public boolean canScrollVertically(View v, int direction); 260560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell public int getOverScrollMode(View v); 261560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell public void setOverScrollMode(View v, int mode); 2629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityEvent(View v, AccessibilityEvent event); 2639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onPopulateAccessibilityEvent(View v, AccessibilityEvent event); 2649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(View v, AccessibilityNodeInfoCompat info); 265d392c8cae159a3a9a416200f4e117634bdbf064eYigit Boyar public void setAccessibilityDelegate(View v, @Nullable AccessibilityDelegateCompat delegate); 266a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar public boolean hasAccessibilityDelegate(View v); 267c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell public boolean hasTransientState(View view); 268c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell public void setHasTransientState(View view, boolean hasTransientState); 269ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public void postInvalidateOnAnimation(View view); 270ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public void postInvalidateOnAnimation(View view, int left, int top, int right, int bottom); 271ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public void postOnAnimation(View view, Runnable action); 272ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public void postOnAnimationDelayed(View view, Runnable action, long delayMillis); 27325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public int getImportantForAccessibility(View view); 27425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public void setImportantForAccessibility(View view, int mode); 2750d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv public boolean performAccessibilityAction(View view, int action, Bundle arguments); 27625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(View view); 27714631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette public float getAlpha(View view); 2788a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell public void setLayerType(View view, int layerType, Paint paint); 27997341bdc5bea1d7bf777de65228039142d249f38Adam Powell public int getLayerType(View view); 2800af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov public int getLabelFor(View view); 2816debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell public void setLabelFor(View view, int id); 2826debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell public void setLayerPaint(View view, Paint paint); 2831d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell public int getLayoutDirection(View view); 2841d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell public void setLayoutDirection(View view, int layoutDirection); 2853cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell public ViewParent getParentForAccessibility(View view); 286c029e15f5a4709214cb433a562256586824a0f33Adam Powell public boolean isOpaque(View view); 287b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public int resolveSizeAndState(int size, int measureSpec, int childMeasuredState); 288b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public int getMeasuredWidthAndState(View view); 289b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public int getMeasuredHeightAndState(View view); 290b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public int getMeasuredState(View view); 291086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette public int getAccessibilityLiveRegion(View view); 292086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette public void setAccessibilityLiveRegion(View view, int mode); 293e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell public int getPaddingStart(View view); 294e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell public int getPaddingEnd(View view); 295e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell public void setPaddingRelative(View view, int start, int top, int end, int bottom); 296a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell public void dispatchStartTemporaryDetach(View view); 297a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell public void dispatchFinishTemporaryDetach(View view); 298d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getX(View view); 299d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getY(View view); 300d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getRotation(View view); 301d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getRotationX(View view); 302d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getRotationY(View view); 303d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getScaleX(View view); 304d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getScaleY(View view); 305c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell public float getTranslationX(View view); 306c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell public float getTranslationY(View view); 307f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell public int getMinimumWidth(View view); 308f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell public int getMinimumHeight(View view); 309d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public ViewPropertyAnimatorCompat animate(View view); 310d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setRotation(View view, float value); 311d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setRotationX(View view, float value); 312d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setRotationY(View view, float value); 313d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setScaleX(View view, float value); 314d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setScaleY(View view, float value); 315d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setTranslationX(View view, float value); 316d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setTranslationY(View view, float value); 317d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setX(View view, float value); 318d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setY(View view, float value); 319d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setAlpha(View view, float value); 320d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setPivotX(View view, float value); 321d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setPivotY(View view, float value); 322d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getPivotX(View view); 323d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getPivotY(View view); 32449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public void setElevation(View view, float elevation); 32549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public float getElevation(View view); 32649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public void setTranslationZ(View view, float translationZ); 32749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public float getTranslationZ(View view); 3280bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu public void setTransitionName(View view, String transitionName); 3290bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu public String getTransitionName(View view); 33049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public int getWindowSystemUiVisibility(View view); 33149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public void requestApplyInsets(View view); 3320f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira public void setChildrenDrawingOrderEnabled(ViewGroup viewGroup, boolean enabled); 333f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell public boolean getFitsSystemWindows(View view); 3348c9ce11dec24a32f438406286404be7ac294011dChris Banes void setFitsSystemWindows(View view, boolean fitSystemWindows); 335bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell void jumpDrawablesToCurrentState(View v); 336ea4f700ac38424954c56df5138ff794def50b019Chris Banes void setOnApplyWindowInsetsListener(View view, OnApplyWindowInsetsListener listener); 3375e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes void setSaveFromParentEnabled(View view, boolean enabled); 338bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell } 339bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell 340bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell static class BaseViewCompatImpl implements ViewCompatImpl { 341a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell private Method mDispatchStartTemporaryDetach; 342a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell private Method mDispatchFinishTemporaryDetach; 343a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell private boolean mTempDetachBound; 344d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase WeakHashMap<View, ViewPropertyAnimatorCompat> mViewPropertyAnimatorCompatMap = null; 345d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 346a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell 347bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell public boolean canScrollHorizontally(View v, int direction) { 348bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell return false; 349bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell } 350bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell public boolean canScrollVertically(View v, int direction) { 351bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell return false; 352bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell } 353560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell public int getOverScrollMode(View v) { 354560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell return OVER_SCROLL_NEVER; 355560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell } 356560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell public void setOverScrollMode(View v, int mode) { 357560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell // Do nothing; API doesn't exist 358560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell } 3599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void setAccessibilityDelegate(View v, AccessibilityDelegateCompat delegate) { 3609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov // Do nothing; API doesn't exist 3619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 362a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar 363a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar @Override 364a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar public boolean hasAccessibilityDelegate(View v) { 365a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar return false; 366a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar } 367a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar 3689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onPopulateAccessibilityEvent(View v, AccessibilityEvent event) { 3699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov // Do nothing; API doesn't exist 3709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityEvent(View v, AccessibilityEvent event) { 3729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov // Do nothing; API doesn't exist 3739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(View v, AccessibilityNodeInfoCompat info) { 3759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov // Do nothing; API doesn't exist 3769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 377c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell public boolean hasTransientState(View view) { 378c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell // A view can't have transient state if transient state wasn't supported. 379c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell return false; 380c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell } 381c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell public void setHasTransientState(View view, boolean hasTransientState) { 382c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell // Do nothing; API doesn't exist 383c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell } 384ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public void postInvalidateOnAnimation(View view) { 385009b4ef9d97e1cc237477e3284fc305bb1438cc9Adam Powell view.invalidate(); 386ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 387ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public void postInvalidateOnAnimation(View view, int left, int top, int right, int bottom) { 388009b4ef9d97e1cc237477e3284fc305bb1438cc9Adam Powell view.invalidate(left, top, right, bottom); 389ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 390ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public void postOnAnimation(View view, Runnable action) { 391ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell view.postDelayed(action, getFrameTime()); 392ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 393ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public void postOnAnimationDelayed(View view, Runnable action, long delayMillis) { 394ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell view.postDelayed(action, getFrameTime() + delayMillis); 395ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 396ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell long getFrameTime() { 397ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell return FAKE_FRAME_TIME; 398ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 39925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public int getImportantForAccessibility(View view) { 40025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return 0; 40125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 40225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public void setImportantForAccessibility(View view, int mode) { 40325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 40425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 4050d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv public boolean performAccessibilityAction(View view, int action, Bundle arguments) { 4060d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv return false; 4070d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv } 40825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(View view) { 40925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return null; 41025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 41114631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette public float getAlpha(View view) { 41214631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette return 1.0f; 41314631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette } 4148a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell public void setLayerType(View view, int layerType, Paint paint) { 4156debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell // No-op until layers became available (HC) 4168a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell } 41797341bdc5bea1d7bf777de65228039142d249f38Adam Powell public int getLayerType(View view) { 41897341bdc5bea1d7bf777de65228039142d249f38Adam Powell return LAYER_TYPE_NONE; 41997341bdc5bea1d7bf777de65228039142d249f38Adam Powell } 4200af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov public int getLabelFor(View view) { 4210af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov return 0; 4220af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov } 4230af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov public void setLabelFor(View view, int id) { 4240af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov 4250af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov } 4266debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell public void setLayerPaint(View view, Paint p) { 4276debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell // No-op until layers became available (HC) 4286debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell } 4291d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell 4301d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell @Override 4311d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell public int getLayoutDirection(View view) { 4321d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell return LAYOUT_DIRECTION_LTR; 4331d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell } 4341d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell 4351d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell @Override 4361d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell public void setLayoutDirection(View view, int layoutDirection) { 4371d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell // No-op 4381d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell } 4393cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell 4403cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell @Override 4413cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell public ViewParent getParentForAccessibility(View view) { 4423cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell return view.getParent(); 4433cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell } 444c029e15f5a4709214cb433a562256586824a0f33Adam Powell 445c029e15f5a4709214cb433a562256586824a0f33Adam Powell @Override 446c029e15f5a4709214cb433a562256586824a0f33Adam Powell public boolean isOpaque(View view) { 447c029e15f5a4709214cb433a562256586824a0f33Adam Powell final Drawable bg = view.getBackground(); 448c029e15f5a4709214cb433a562256586824a0f33Adam Powell if (bg != null) { 449c029e15f5a4709214cb433a562256586824a0f33Adam Powell return bg.getOpacity() == PixelFormat.OPAQUE; 450c029e15f5a4709214cb433a562256586824a0f33Adam Powell } 451c029e15f5a4709214cb433a562256586824a0f33Adam Powell return false; 452c029e15f5a4709214cb433a562256586824a0f33Adam Powell } 453b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 454b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public int resolveSizeAndState(int size, int measureSpec, int childMeasuredState) { 455b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return View.resolveSize(size, measureSpec); 456b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 457b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 458b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell @Override 459b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public int getMeasuredWidthAndState(View view) { 460b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return view.getMeasuredWidth(); 461b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 462b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 463b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell @Override 464b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public int getMeasuredHeightAndState(View view) { 465b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return view.getMeasuredHeight(); 466b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 467b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 468b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell @Override 469b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public int getMeasuredState(View view) { 470b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return 0; 471b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 472086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette 473086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette @Override 474086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette public int getAccessibilityLiveRegion(View view) { 475086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette return ACCESSIBILITY_LIVE_REGION_NONE; 476086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette } 477086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette 478086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette @Override 479086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette public void setAccessibilityLiveRegion(View view, int mode) { 480086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette // No-op 481086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette } 482e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell 483e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell @Override 484e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell public int getPaddingStart(View view) { 485e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell return view.getPaddingLeft(); 486e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell } 487e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell 488e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell @Override 489e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell public int getPaddingEnd(View view) { 490e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell return view.getPaddingRight(); 491e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell } 492e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell 493e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell @Override 494e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell public void setPaddingRelative(View view, int start, int top, int end, int bottom) { 495e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell view.setPadding(start, top, end, bottom); 496e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell } 497a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell 498a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell @Override 499a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell public void dispatchStartTemporaryDetach(View view) { 500a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell if (!mTempDetachBound) { 501a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell bindTempDetach(); 502a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } 503a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell if (mDispatchStartTemporaryDetach != null) { 504a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell try { 505a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell mDispatchStartTemporaryDetach.invoke(view); 506a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } catch (Exception e) { 507a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell Log.d(TAG, "Error calling dispatchStartTemporaryDetach", e); 508a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } 509a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } else { 510a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell // Try this instead 511a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell view.onStartTemporaryDetach(); 512a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } 513a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } 514a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell 515a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell @Override 516a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell public void dispatchFinishTemporaryDetach(View view) { 517a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell if (!mTempDetachBound) { 518a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell bindTempDetach(); 519a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } 520a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell if (mDispatchFinishTemporaryDetach != null) { 521a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell try { 522a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell mDispatchFinishTemporaryDetach.invoke(view); 523a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } catch (Exception e) { 524a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell Log.d(TAG, "Error calling dispatchFinishTemporaryDetach", e); 525a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } 526a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } else { 527a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell // Try this instead 528a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell view.onFinishTemporaryDetach(); 529a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } 530a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } 531a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell 532a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell private void bindTempDetach() { 533a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell try { 534a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell mDispatchStartTemporaryDetach = View.class.getDeclaredMethod( 535a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell "dispatchStartTemporaryDetach"); 536a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell mDispatchFinishTemporaryDetach = View.class.getDeclaredMethod( 537a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell "dispatchFinishTemporaryDetach"); 538a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } catch (NoSuchMethodException e) { 539a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell Log.e(TAG, "Couldn't find method", e); 540a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } 541a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell mTempDetachBound = true; 542a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } 543c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell 544c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell @Override 545c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell public float getTranslationX(View view) { 546c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell return 0; 547c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell } 548c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell 549c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell @Override 550c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell public float getTranslationY(View view) { 551c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell return 0; 552c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell } 553f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell 554f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell @Override 555d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getX(View view) { 556d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return 0; 557d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 558d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 559d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 560d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getY(View view) { 561d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return 0; 562d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 563d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 564d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 565d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getRotation(View view) { 566d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return 0; 567d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 568d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 569d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 570d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getRotationX(View view) { 571d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return 0; 572d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 573d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 574d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 575d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getRotationY(View view) { 576d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return 0; 577d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 578d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 579d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 580d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getScaleX(View view) { 581d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return 0; 582d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 583d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 584d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 585d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getScaleY(View view) { 586d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return 0; 587d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 588d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 589d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 590f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell public int getMinimumWidth(View view) { 591f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell return 0; 592f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell } 593f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell 594f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell @Override 595f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell public int getMinimumHeight(View view) { 596f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell return 0; 597f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell } 598d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 599d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 600d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public ViewPropertyAnimatorCompat animate(View view) { 601d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return new ViewPropertyAnimatorCompat(view); 602d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 603d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 604d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 605d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setRotation(View view, float value) { 606d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase // noop 607d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 608d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 609d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 610d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setTranslationX(View view, float value) { 611d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase // noop 612d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 613d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 614d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 615d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setTranslationY(View view, float value) { 616d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase // noop 617d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 618d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 619d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 620d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setAlpha(View view, float value) { 621d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase // noop 622d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 623d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 624d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 625d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setRotationX(View view, float value) { 626d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase // noop 627d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 628d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 629d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 630d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setRotationY(View view, float value) { 631d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase // noop 632d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 633d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 634d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 635d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setScaleX(View view, float value) { 636d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase // noop 637d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 638d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 639d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 640d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setScaleY(View view, float value) { 641d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase // noop 642d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 643d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 644d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 645d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setX(View view, float value) { 646d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase // noop 647d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 648d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 649d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 650d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setY(View view, float value) { 651d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase // noop 652d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 653d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 654d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 655d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setPivotX(View view, float value) { 656d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase // noop 657d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 658d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 659d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 660d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setPivotY(View view, float value) { 661d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase // noop 662d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 663d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 664d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 665d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getPivotX(View view) { 666d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return 0; 667d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 668d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 669d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 670d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getPivotY(View view) { 671d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return 0; 672d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 6730bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu 6740bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu @Override 6750bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu public void setTransitionName(View view, String transitionName) { 6760bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu } 6770bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu 6780bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu @Override 6790bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu public String getTransitionName(View view) { 6800bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu return null; 6810bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu } 68249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 68349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 68449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public int getWindowSystemUiVisibility(View view) { 68549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes return 0; 68649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 68749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 68849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 68949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public void requestApplyInsets(View view) { 69049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 69149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 69249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 69349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public void setElevation(View view, float elevation) { 69449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 69549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 69649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 69749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public float getElevation(View view) { 69849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes return 0f; 69949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 70049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 70149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 70249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public void setTranslationZ(View view, float translationZ) { 70349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 70449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 70549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 70649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public float getTranslationZ(View view) { 70749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes return 0f; 70849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 7090f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira 7100f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira @Override 7110f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira public void setChildrenDrawingOrderEnabled(ViewGroup viewGroup, boolean enabled) { 7120f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira // noop 7130f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira } 714f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell 715f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell @Override 716f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell public boolean getFitsSystemWindows(View view) { 717f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell return false; 718f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell } 719bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell 720bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell @Override 7218c9ce11dec24a32f438406286404be7ac294011dChris Banes public void setFitsSystemWindows(View view, boolean fitSystemWindows) { 7228c9ce11dec24a32f438406286404be7ac294011dChris Banes // noop 7238c9ce11dec24a32f438406286404be7ac294011dChris Banes } 7248c9ce11dec24a32f438406286404be7ac294011dChris Banes 7258c9ce11dec24a32f438406286404be7ac294011dChris Banes @Override 726bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell public void jumpDrawablesToCurrentState(View view) { 727bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell // Do nothing; API didn't exist. 728bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell } 729ea4f700ac38424954c56df5138ff794def50b019Chris Banes 730ea4f700ac38424954c56df5138ff794def50b019Chris Banes @Override 731ea4f700ac38424954c56df5138ff794def50b019Chris Banes public void setOnApplyWindowInsetsListener(View view, 732ea4f700ac38424954c56df5138ff794def50b019Chris Banes OnApplyWindowInsetsListener listener) { 733ea4f700ac38424954c56df5138ff794def50b019Chris Banes // noop 734ea4f700ac38424954c56df5138ff794def50b019Chris Banes } 7355e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes 7365e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes @Override 7375e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes public void setSaveFromParentEnabled(View v, boolean enabled) { 7385e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes // noop 7395e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes } 740bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell } 741bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell 742c029e15f5a4709214cb433a562256586824a0f33Adam Powell static class EclairMr1ViewCompatImpl extends BaseViewCompatImpl { 743c029e15f5a4709214cb433a562256586824a0f33Adam Powell @Override 744c029e15f5a4709214cb433a562256586824a0f33Adam Powell public boolean isOpaque(View view) { 745c029e15f5a4709214cb433a562256586824a0f33Adam Powell return ViewCompatEclairMr1.isOpaque(view); 746c029e15f5a4709214cb433a562256586824a0f33Adam Powell } 7470f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira 7480f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira @Override 7490f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira public void setChildrenDrawingOrderEnabled(ViewGroup viewGroup, boolean enabled) { 7500f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira ViewCompatEclairMr1.setChildrenDrawingOrderEnabled(viewGroup, enabled); 7510f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira } 752c029e15f5a4709214cb433a562256586824a0f33Adam Powell } 753c029e15f5a4709214cb433a562256586824a0f33Adam Powell 754c029e15f5a4709214cb433a562256586824a0f33Adam Powell static class GBViewCompatImpl extends EclairMr1ViewCompatImpl { 7559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 756560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell public int getOverScrollMode(View v) { 757560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell return ViewCompatGingerbread.getOverScrollMode(v); 758560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell } 7599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 760560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell public void setOverScrollMode(View v, int mode) { 761560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell ViewCompatGingerbread.setOverScrollMode(v, mode); 762560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell } 763560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell } 764560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell 765ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell static class HCViewCompatImpl extends GBViewCompatImpl { 76614631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette @Override 767ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell long getFrameTime() { 768ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell return ViewCompatHC.getFrameTime(); 769ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 77014631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette @Override 77114631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette public float getAlpha(View view) { 77214631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette return ViewCompatHC.getAlpha(view); 77314631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette } 77414631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette @Override 77514631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette public void setLayerType(View view, int layerType, Paint paint) { 7768a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell ViewCompatHC.setLayerType(view, layerType, paint); 7778a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell } 77814631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette @Override 77914631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette public int getLayerType(View view) { 78097341bdc5bea1d7bf777de65228039142d249f38Adam Powell return ViewCompatHC.getLayerType(view); 78197341bdc5bea1d7bf777de65228039142d249f38Adam Powell } 7826debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell @Override 7836debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell public void setLayerPaint(View view, Paint paint) { 7846debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell // Make sure the paint is correct; this will be cheap if it's the same 7856debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell // instance as was used to call setLayerType earlier. 7866debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell setLayerType(view, getLayerType(view), paint); 7876debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell // This is expensive, but the only way to accomplish this before JB-MR1. 7886debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell view.invalidate(); 7896debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell } 790b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell @Override 791b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public int resolveSizeAndState(int size, int measureSpec, int childMeasuredState) { 792b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return ViewCompatHC.resolveSizeAndState(size, measureSpec, childMeasuredState); 793b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 794b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell @Override 795b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public int getMeasuredWidthAndState(View view) { 796b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return ViewCompatHC.getMeasuredWidthAndState(view); 797b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 798b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell @Override 799b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public int getMeasuredHeightAndState(View view) { 800b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return ViewCompatHC.getMeasuredHeightAndState(view); 801b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 802b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell @Override 803b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public int getMeasuredState(View view) { 804b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return ViewCompatHC.getMeasuredState(view); 805b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 806c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell @Override 807c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell public float getTranslationX(View view) { 808c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell return ViewCompatHC.getTranslationX(view); 809c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell } 810c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell @Override 811c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell public float getTranslationY(View view) { 812c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell return ViewCompatHC.getTranslationY(view); 813c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell } 814d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 815d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setTranslationX(View view, float value) { 816d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase ViewCompatHC.setTranslationX(view, value); 817d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 818d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 819d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setTranslationY(View view, float value) { 820d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase ViewCompatHC.setTranslationY(view, value); 821d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 822d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 823d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setAlpha(View view, float value) { 824d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase ViewCompatHC.setAlpha(view, value); 825d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 826d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 827d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setX(View view, float value) { 828d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase ViewCompatHC.setX(view, value); 829d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 830d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 831d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setY(View view, float value) { 832d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase ViewCompatHC.setY(view, value); 833d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 834d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 835d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setRotation(View view, float value) { 836d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase ViewCompatHC.setRotation(view, value); 837d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 838d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 839d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setRotationX(View view, float value) { 840d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase ViewCompatHC.setRotationX(view, value); 841d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 842d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 843d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setRotationY(View view, float value) { 844d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase ViewCompatHC.setRotationY(view, value); 845d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 846d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 847d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setScaleX(View view, float value) { 848d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase ViewCompatHC.setScaleX(view, value); 849d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 850d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 851d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setScaleY(View view, float value) { 852d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase ViewCompatHC.setScaleY(view, value); 853d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 854d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 855d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setPivotX(View view, float value) { 856d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase ViewCompatHC.setPivotX(view, value); 857d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 858d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 859d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public void setPivotY(View view, float value) { 860d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase ViewCompatHC.setPivotY(view, value); 861d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 862d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 863d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getX(View view) { 864d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return ViewCompatHC.getX(view); 865d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 866d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 867d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 868d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getY(View view) { 869d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return ViewCompatHC.getY(view); 870d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 871d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 872d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 873d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getRotation(View view) { 874d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return ViewCompatHC.getRotation(view); 875d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 876d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 877d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 878d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getRotationX(View view) { 879d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return ViewCompatHC.getRotationX(view); 880d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 881d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 882d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 883d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getRotationY(View view) { 884d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return ViewCompatHC.getRotationY(view); 885d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 886d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 887d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 888d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getScaleX(View view) { 889d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return ViewCompatHC.getScaleX(view); 890d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 891d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 892d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 893d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getScaleY(View view) { 894d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return ViewCompatHC.getScaleY(view); 895d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 896d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 897d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 898d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getPivotX(View view) { 899d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return ViewCompatHC.getPivotX(view); 900d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 901d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 902d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public float getPivotY(View view) { 903d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return ViewCompatHC.getPivotY(view); 904d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 905bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell @Override 906bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell public void jumpDrawablesToCurrentState(View view) { 907bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell ViewCompatHC.jumpDrawablesToCurrentState(view); 908bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell } 9095e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes 9105e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes @Override 9115e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes public void setSaveFromParentEnabled(View view, boolean enabled) { 9125e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes ViewCompatHC.setSaveFromParentEnabled(view, enabled); 9135e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes } 914ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 915ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell 916ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell static class ICSViewCompatImpl extends HCViewCompatImpl { 917a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar static Field mAccessibilityDelegateField; 918a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar static boolean accessibilityDelegateCheckFailed = false; 9199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 920bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell public boolean canScrollHorizontally(View v, int direction) { 921bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell return ViewCompatICS.canScrollHorizontally(v, direction); 922bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell } 9239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 924bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell public boolean canScrollVertically(View v, int direction) { 925bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell return ViewCompatICS.canScrollVertically(v, direction); 926bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell } 9279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 9289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onPopulateAccessibilityEvent(View v, AccessibilityEvent event) { 9299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov ViewCompatICS.onPopulateAccessibilityEvent(v, event); 9309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 9319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 9329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityEvent(View v, AccessibilityEvent event) { 9339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov ViewCompatICS.onInitializeAccessibilityEvent(v, event); 9349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 9359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 9369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(View v, AccessibilityNodeInfoCompat info) { 937956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov ViewCompatICS.onInitializeAccessibilityNodeInfo(v, info.getInfo()); 9389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 9399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 940d392c8cae159a3a9a416200f4e117634bdbf064eYigit Boyar public void setAccessibilityDelegate(View v, 941d392c8cae159a3a9a416200f4e117634bdbf064eYigit Boyar @Nullable AccessibilityDelegateCompat delegate) { 942d392c8cae159a3a9a416200f4e117634bdbf064eYigit Boyar ViewCompatICS.setAccessibilityDelegate(v, 943d392c8cae159a3a9a416200f4e117634bdbf064eYigit Boyar delegate == null ? null : delegate.getBridge()); 9449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 945a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar 946a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar @Override 947a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar public boolean hasAccessibilityDelegate(View v) { 948a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar if (accessibilityDelegateCheckFailed) { 949a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar return false; // View implementation might have changed. 950a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar } 951a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar if (mAccessibilityDelegateField == null) { 952a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar try { 953a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar mAccessibilityDelegateField = View.class 954a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar .getDeclaredField("mAccessibilityDelegate"); 955a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar mAccessibilityDelegateField.setAccessible(true); 956a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar } catch (Throwable t) { 957a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar accessibilityDelegateCheckFailed = true; 958a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar return false; 959a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar } 960a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar } 961a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar try { 962a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar return mAccessibilityDelegateField.get(v) != null; 963a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar } catch (Throwable t) { 964a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar accessibilityDelegateCheckFailed = true; 965a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar return false; 966a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar } 967a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar } 968a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar 969d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase @Override 970d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public ViewPropertyAnimatorCompat animate(View view) { 971d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase if (mViewPropertyAnimatorCompatMap == null) { 972d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase mViewPropertyAnimatorCompatMap = 973d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase new WeakHashMap<View, ViewPropertyAnimatorCompat>(); 974d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 975d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase ViewPropertyAnimatorCompat vpa = mViewPropertyAnimatorCompatMap.get(view); 976d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase if (vpa == null) { 977d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase vpa = new ViewPropertyAnimatorCompat(view); 978d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase mViewPropertyAnimatorCompatMap.put(view, vpa); 979d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 980d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return vpa; 981d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 9828c9ce11dec24a32f438406286404be7ac294011dChris Banes 9838c9ce11dec24a32f438406286404be7ac294011dChris Banes @Override 9848c9ce11dec24a32f438406286404be7ac294011dChris Banes public void setFitsSystemWindows(View view, boolean fitSystemWindows) { 9858c9ce11dec24a32f438406286404be7ac294011dChris Banes ViewCompatICS.setFitsSystemWindows(view, fitSystemWindows); 9868c9ce11dec24a32f438406286404be7ac294011dChris Banes } 987bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell } 988bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell 989c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell static class JBViewCompatImpl extends ICSViewCompatImpl { 990c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell @Override 991c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell public boolean hasTransientState(View view) { 992c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell return ViewCompatJB.hasTransientState(view); 993c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell } 994c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell @Override 995c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell public void setHasTransientState(View view, boolean hasTransientState) { 996c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell ViewCompatJB.setHasTransientState(view, hasTransientState); 997c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell } 998ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell @Override 999ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public void postInvalidateOnAnimation(View view) { 1000ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell ViewCompatJB.postInvalidateOnAnimation(view); 1001ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 1002ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell @Override 1003ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public void postInvalidateOnAnimation(View view, int left, int top, int right, int bottom) { 1004ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell ViewCompatJB.postInvalidateOnAnimation(view, left, top, right, bottom); 1005ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 1006ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell @Override 1007ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public void postOnAnimation(View view, Runnable action) { 1008ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell ViewCompatJB.postOnAnimation(view, action); 1009ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 1010ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell @Override 1011ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public void postOnAnimationDelayed(View view, Runnable action, long delayMillis) { 1012ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell ViewCompatJB.postOnAnimationDelayed(view, action, delayMillis); 1013ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 101425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov @Override 101525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public int getImportantForAccessibility(View view) { 101625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return ViewCompatJB.getImportantForAccessibility(view); 101725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 101825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov @Override 101925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public void setImportantForAccessibility(View view, int mode) { 102012ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette // IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS is not available 102112ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette // on this platform so replace with IMPORTANT_FOR_ACCESSIBILITY_NO 102212ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette // which is closer semantically. 102312ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette if (mode == IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS) { 102412ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette mode = IMPORTANT_FOR_ACCESSIBILITY_NO; 102512ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette } 102625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov ViewCompatJB.setImportantForAccessibility(view, mode); 102725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 102825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov @Override 10290d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv public boolean performAccessibilityAction(View view, int action, Bundle arguments) { 10300d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv return ViewCompatJB.performAccessibilityAction(view, action, arguments); 10310d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv } 10320d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv @Override 103325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(View view) { 103425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov Object compat = ViewCompatJB.getAccessibilityNodeProvider(view); 103525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov if (compat != null) { 103625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return new AccessibilityNodeProviderCompat(compat); 103725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 103825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return null; 103925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 10403cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell 10413cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell @Override 10423cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell public ViewParent getParentForAccessibility(View view) { 10433cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell return ViewCompatJB.getParentForAccessibility(view); 10443cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell } 1045f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell 1046f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell @Override 1047f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell public int getMinimumWidth(View view) { 1048f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell return ViewCompatJB.getMinimumWidth(view); 1049f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell } 1050f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell 1051f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell @Override 1052f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell public int getMinimumHeight(View view) { 1053f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell return ViewCompatJB.getMinimumHeight(view); 1054f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell } 105549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 105649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 105749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public void requestApplyInsets(View view) { 105849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes ViewCompatJB.requestApplyInsets(view); 105949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 1060f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell 1061f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell @Override 1062f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell public boolean getFitsSystemWindows(View view) { 1063f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell return ViewCompatJB.getFitsSystemWindows(view); 1064f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell } 1065c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell } 1066c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell 10670af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov static class JbMr1ViewCompatImpl extends JBViewCompatImpl { 10680af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov 10690af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov @Override 10700af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov public int getLabelFor(View view) { 10710af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov return ViewCompatJellybeanMr1.getLabelFor(view); 10720af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov } 10730af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov 10740af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov @Override 10750af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov public void setLabelFor(View view, int id) { 10760af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov ViewCompatJellybeanMr1.setLabelFor(view, id); 10770af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov } 10786debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell 10796debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell @Override 10806debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell public void setLayerPaint(View view, Paint paint) { 10816debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell ViewCompatJellybeanMr1.setLayerPaint(view, paint); 10826debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell } 10831d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell 10841d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell @Override 10851d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell public int getLayoutDirection(View view) { 10861d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell return ViewCompatJellybeanMr1.getLayoutDirection(view); 10871d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell } 10881d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell 10891d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell @Override 10901d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell public void setLayoutDirection(View view, int layoutDirection) { 10911d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell ViewCompatJellybeanMr1.setLayoutDirection(view, layoutDirection); 10921d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell } 1093e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell 1094e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell @Override 1095e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell public int getPaddingStart(View view) { 1096e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell return ViewCompatJellybeanMr1.getPaddingStart(view); 1097e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell } 1098e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell 1099e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell @Override 1100e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell public int getPaddingEnd(View view) { 1101e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell return ViewCompatJellybeanMr1.getPaddingEnd(view); 1102e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell } 1103e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell 1104e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell @Override 1105e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell public void setPaddingRelative(View view, int start, int top, int end, int bottom) { 1106e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell ViewCompatJellybeanMr1.setPaddingRelative(view, start, top, end, bottom); 1107e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell } 110849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 110949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 111049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public int getWindowSystemUiVisibility(View view) { 111149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes return ViewCompatJellybeanMr1.getWindowSystemUiVisibility(view); 111249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 11130af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov } 11140af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov 1115086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette static class KitKatViewCompatImpl extends JbMr1ViewCompatImpl { 1116086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette @Override 1117086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette public int getAccessibilityLiveRegion(View view) { 1118086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette return ViewCompatKitKat.getAccessibilityLiveRegion(view); 1119086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette } 1120086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette 1121086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette @Override 1122086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette public void setAccessibilityLiveRegion(View view, int mode) { 1123086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette ViewCompatKitKat.setAccessibilityLiveRegion(view, mode); 1124086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette } 112512ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette 112612ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette @Override 112712ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette public void setImportantForAccessibility(View view, int mode) { 112812ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette ViewCompatJB.setImportantForAccessibility(view, mode); 112912ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette } 1130086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette } 1131086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette 11320bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu static class Api21ViewCompatImpl extends KitKatViewCompatImpl { 11330bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu @Override 11340bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu public void setTransitionName(View view, String transitionName) { 11350bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu ViewCompatApi21.setTransitionName(view, transitionName); 11360bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu } 11370bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu 11380bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu @Override 11390bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu public String getTransitionName(View view) { 11400bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu return ViewCompatApi21.getTransitionName(view); 11410bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu } 114249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 114349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 114449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public void requestApplyInsets(View view) { 114549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes ViewCompatApi21.requestApplyInsets(view); 114649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 114749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 114849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 114949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public void setElevation(View view, float elevation) { 115049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes ViewCompatApi21.setElevation(view, elevation); 115149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 115249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 115349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 115449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public float getElevation(View view) { 115549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes return ViewCompatApi21.getElevation(view); 115649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 115749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 115849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 115949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public void setTranslationZ(View view, float translationZ) { 116049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes ViewCompatApi21.setTranslationZ(view, translationZ); 116149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 116249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 116349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 116449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public float getTranslationZ(View view) { 116549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes return ViewCompatApi21.getTranslationZ(view); 116649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 1167ea4f700ac38424954c56df5138ff794def50b019Chris Banes 1168ea4f700ac38424954c56df5138ff794def50b019Chris Banes @Override 1169ea4f700ac38424954c56df5138ff794def50b019Chris Banes public void setOnApplyWindowInsetsListener(View view, OnApplyWindowInsetsListener listener) { 1170ea4f700ac38424954c56df5138ff794def50b019Chris Banes ViewCompatApi21.setOnApplyWindowInsetsListener(view, listener); 1171ea4f700ac38424954c56df5138ff794def50b019Chris Banes } 11720bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu } 11730bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu 1174bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell static final ViewCompatImpl IMPL; 1175bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell static { 1176560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell final int version = android.os.Build.VERSION.SDK_INT; 1177a52784195525cdb1f2bb4d8dde1b8b314f480957Chet Haase if (version >= 21) { 11780bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu IMPL = new Api21ViewCompatImpl(); 11790bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu } else if (version >= 19) { 1180086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette IMPL = new KitKatViewCompatImpl(); 1181086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette } else if (version >= 17) { 11820af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov IMPL = new JbMr1ViewCompatImpl(); 11830af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov } else if (version >= 16) { 1184c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell IMPL = new JBViewCompatImpl(); 1185c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell } else if (version >= 14) { 1186bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell IMPL = new ICSViewCompatImpl(); 1187ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } else if (version >= 11) { 1188ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell IMPL = new HCViewCompatImpl(); 1189560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell } else if (version >= 9) { 1190560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell IMPL = new GBViewCompatImpl(); 11910f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira } else if (version >= 7) { 11920f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira IMPL = new EclairMr1ViewCompatImpl(); 1193bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell } else { 1194bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell IMPL = new BaseViewCompatImpl(); 1195bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell } 1196bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell } 1197bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell 11980574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov /** 11990574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Check if this view can be scrolled horizontally in a certain direction. 12000574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * 12010574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param v The View against which to invoke the method. 12020574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param direction Negative to check scrolling left, positive to check scrolling right. 12030574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @return true if this view can be scrolled in the specified direction, false otherwise. 12040574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov */ 1205bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell public static boolean canScrollHorizontally(View v, int direction) { 1206bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell return IMPL.canScrollHorizontally(v, direction); 1207bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell } 1208bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell 12090574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov /** 12100574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Check if this view can be scrolled vertically in a certain direction. 12110574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * 12120574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param v The View against which to invoke the method. 12130574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param direction Negative to check scrolling up, positive to check scrolling down. 12140574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @return true if this view can be scrolled in the specified direction, false otherwise. 12150574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov */ 1216bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell public static boolean canScrollVertically(View v, int direction) { 1217bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell return IMPL.canScrollVertically(v, direction); 1218bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell } 1219560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell 12200574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov /** 12210574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Returns the over-scroll mode for this view. The result will be 12220574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * one of {@link #OVER_SCROLL_ALWAYS} (default), {@link #OVER_SCROLL_IF_CONTENT_SCROLLS} 12230574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * (allow over-scrolling only if the view content is larger than the container), 12240574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * or {@link #OVER_SCROLL_NEVER}. 12250574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * 12260574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param v The View against which to invoke the method. 12270574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @return This view's over-scroll mode. 12280574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov */ 1229a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @OverScroll 1230560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell public static int getOverScrollMode(View v) { 1231560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell return IMPL.getOverScrollMode(v); 1232560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell } 1233560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell 12340574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov /** 12350574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Set the over-scroll mode for this view. Valid over-scroll modes are 12360574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * {@link #OVER_SCROLL_ALWAYS} (default), {@link #OVER_SCROLL_IF_CONTENT_SCROLLS} 12370574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * (allow over-scrolling only if the view content is larger than the container), 12380574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * or {@link #OVER_SCROLL_NEVER}. 12390574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * 12400574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Setting the over-scroll mode of a view will have an effect only if the 12410574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * view is capable of scrolling. 12420574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * 12430574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param v The View against which to invoke the method. 12440574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param overScrollMode The new over-scroll mode for this view. 12450574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov */ 1246a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye public static void setOverScrollMode(View v, @OverScroll int overScrollMode) { 12470574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov IMPL.setOverScrollMode(v, overScrollMode); 1248560114f591be31d0fb73c26a1ee1cc0a15184abaAdam Powell } 12499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 12500574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov /** 12510574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Called from {@link View#dispatchPopulateAccessibilityEvent(AccessibilityEvent)} 12520574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * giving a chance to this View to populate the accessibility event with its 12530574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * text content. While this method is free to modify event 12540574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * attributes other than text content, doing so should normally be performed in 12550574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * {@link View#onInitializeAccessibilityEvent(AccessibilityEvent)}. 12560574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <p> 12570574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Example: Adding formatted date string to an accessibility event in addition 12580574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * to the text added by the super implementation: 12590574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <pre> public void onPopulateAccessibilityEvent(AccessibilityEvent event) { 12600574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * super.onPopulateAccessibilityEvent(event); 12610574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * final int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_WEEKDAY; 12620574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * String selectedDateUtterance = DateUtils.formatDateTime(mContext, 12630574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * mCurrentDate.getTimeInMillis(), flags); 12640574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * event.getText().add(selectedDateUtterance); 12650574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * }</pre> 12660574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <p> 12670574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * If an {@link android.view.View.AccessibilityDelegate} has been specified via calling 12680574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * {@link View#setAccessibilityDelegate(android.view.View.AccessibilityDelegate)} its 12690574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * {@link android.view.View.AccessibilityDelegate#onPopulateAccessibilityEvent(View, 12700574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * AccessibilityEvent)} 12710574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * is responsible for handling this call. 12720574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * </p> 12730574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <p class="note"><strong>Note:</strong> Always call the super implementation before adding 12740574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * information to the event, in case the default implementation has basic information to add. 12750574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * </p> 12760574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * 12770574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param v The View against which to invoke the method. 12780574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param event The accessibility event which to populate. 12790574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * 12800574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @see View#sendAccessibilityEvent(int) 12810574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @see View#dispatchPopulateAccessibilityEvent(AccessibilityEvent) 12820574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov */ 12839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static void onPopulateAccessibilityEvent(View v, AccessibilityEvent event) { 12849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.onPopulateAccessibilityEvent(v, event); 12859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 12869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 12870574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov /** 12880574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Initializes an {@link AccessibilityEvent} with information about 12890574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * this View which is the event source. In other words, the source of 12900574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * an accessibility event is the view whose state change triggered firing 12910574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * the event. 12920574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <p> 12930574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Example: Setting the password property of an event in addition 12940574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * to properties set by the super implementation: 12950574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <pre> public void onInitializeAccessibilityEvent(AccessibilityEvent event) { 12960574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * super.onInitializeAccessibilityEvent(event); 12970574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * event.setPassword(true); 12980574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * }</pre> 12990574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <p> 13000574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * If an {@link android.view.View.AccessibilityDelegate} has been specified via calling 13010574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * {@link View#setAccessibilityDelegate(android.view.View.AccessibilityDelegate)} its 13020574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * {@link android.view.View.AccessibilityDelegate#onInitializeAccessibilityEvent(View, 13030574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * AccessibilityEvent)} 13040574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * is responsible for handling this call. 13050574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * </p> 13060574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <p class="note"><strong>Note:</strong> Always call the super implementation before adding 13070574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * information to the event, in case the default implementation has basic information to add. 13080574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * </p> 13090574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * 13100574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param v The View against which to invoke the method. 13110574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param event The event to initialize. 13120574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * 13130574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @see View#sendAccessibilityEvent(int) 13140574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @see View#dispatchPopulateAccessibilityEvent(AccessibilityEvent) 13150574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov */ 13169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static void onInitializeAccessibilityEvent(View v, AccessibilityEvent event) { 13179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.onInitializeAccessibilityEvent(v, event); 13189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 13199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 13200574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov /** 13210574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Initializes an {@link android.view.accessibility.AccessibilityNodeInfo} with information 13220574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * about this view. The base implementation sets: 13230574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <ul> 13240574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <li>{@link android.view.accessibility.AccessibilityNodeInfo#setParent(View)},</li> 13250574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <li>{@link android.view.accessibility.AccessibilityNodeInfo#setBoundsInParent(Rect)},</li> 13260574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <li>{@link android.view.accessibility.AccessibilityNodeInfo#setBoundsInScreen(Rect)},</li> 13270574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <li>{@link android.view.accessibility.AccessibilityNodeInfo#setPackageName(CharSequence)},</li> 13280574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <li>{@link android.view.accessibility.AccessibilityNodeInfo#setClassName(CharSequence)},</li> 13290574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <li>{@link android.view.accessibility.AccessibilityNodeInfo#setContentDescription(CharSequence)},</li> 13300574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <li>{@link android.view.accessibility.AccessibilityNodeInfo#setEnabled(boolean)},</li> 13310574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <li>{@link android.view.accessibility.AccessibilityNodeInfo#setClickable(boolean)},</li> 13320574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <li>{@link android.view.accessibility.AccessibilityNodeInfo#setFocusable(boolean)},</li> 13330574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <li>{@link android.view.accessibility.AccessibilityNodeInfo#setFocused(boolean)},</li> 13340574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <li>{@link android.view.accessibility.AccessibilityNodeInfo#setLongClickable(boolean)},</li> 13350574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <li>{@link android.view.accessibility.AccessibilityNodeInfo#setSelected(boolean)},</li> 13360574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * </ul> 13370574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <p> 13380574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Subclasses should override this method, call the super implementation, 13390574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * and set additional attributes. 13400574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * </p> 13410574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * <p> 13420574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * If an {@link android.view.View.AccessibilityDelegate} has been specified via calling 13430574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * {@link View#setAccessibilityDelegate(android.view.View.AccessibilityDelegate)} its 13440574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * {@link android.view.View.AccessibilityDelegate#onInitializeAccessibilityNodeInfo(View, 13450574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * android.view.accessibility.AccessibilityNodeInfo)} 13460574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * is responsible for handling this call. 13470574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * </p> 13480574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * 13490574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param v The View against which to invoke the method. 13500574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param info The instance to initialize. 13510574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov */ 13529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static void onInitializeAccessibilityNodeInfo(View v, AccessibilityNodeInfoCompat info) { 13539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.onInitializeAccessibilityNodeInfo(v, info); 13549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 13559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 13560574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov /** 13570574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Sets a delegate for implementing accessibility support via compositon as 13580574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * opposed to inheritance. The delegate's primary use is for implementing 13590574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * backwards compatible widgets. For more details see 13600574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * {@link android.view.View.AccessibilityDelegate}. 13610574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * 13620574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param v The View against which to invoke the method. 13630574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @param delegate The delegate instance. 13640574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * 13650574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * @see android.view.View.AccessibilityDelegate 13660574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov */ 13679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public static void setAccessibilityDelegate(View v, AccessibilityDelegateCompat delegate) { 13689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.setAccessibilityDelegate(v, delegate); 13699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1370c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell 1371c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell /** 1372a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar * Checks whether provided View has an accessibility delegate attached to it. 1373a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar * 1374a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar * @param v The View instance to check 1375a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar * @return True if the View has an accessibility delegate 1376a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar */ 1377a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar public static boolean hasAccessibilityDelegate(View v) { 1378a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar return IMPL.hasAccessibilityDelegate(v); 1379a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar } 1380a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar 1381a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar /** 1382c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell * Indicates whether the view is currently tracking transient state that the 1383c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell * app should not need to concern itself with saving and restoring, but that 1384c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell * the framework should take special note to preserve when possible. 1385c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell * 1386c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell * @param view View to check for transient state 1387c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell * @return true if the view has transient state 1388c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell */ 1389c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell public static boolean hasTransientState(View view) { 1390c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell return IMPL.hasTransientState(view); 1391c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell } 1392c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell 1393c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell /** 1394c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell * Set whether this view is currently tracking transient state that the 1395c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell * framework should attempt to preserve when possible. 1396c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell * 1397c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell * @param view View tracking transient state 1398c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell * @param hasTransientState true if this view has transient state 1399c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell */ 1400c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell public static void setHasTransientState(View view, boolean hasTransientState) { 1401c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell IMPL.setHasTransientState(view, hasTransientState); 1402c95beb648f59c89c6bd7b0eed0a8b266a1b287e2Adam Powell } 1403ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell 1404ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell /** 1405ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * <p>Cause an invalidate to happen on the next animation time step, typically the 1406ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * next display frame.</p> 1407ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * 1408ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * <p>This method can be invoked from outside of the UI thread 1409ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * only when this View is attached to a window.</p> 1410ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * 1411ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * @param view View to invalidate 1412ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell */ 1413ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public static void postInvalidateOnAnimation(View view) { 1414ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell IMPL.postInvalidateOnAnimation(view); 1415ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 1416ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell 1417ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell /** 1418ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * <p>Cause an invalidate of the specified area to happen on the next animation 1419ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * time step, typically the next display frame.</p> 1420ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * 1421ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * <p>This method can be invoked from outside of the UI thread 1422ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * only when this View is attached to a window.</p> 1423ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * 1424ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * @param view View to invalidate 1425ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * @param left The left coordinate of the rectangle to invalidate. 1426ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * @param top The top coordinate of the rectangle to invalidate. 1427ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * @param right The right coordinate of the rectangle to invalidate. 1428ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * @param bottom The bottom coordinate of the rectangle to invalidate. 1429ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell */ 1430ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public static void postInvalidateOnAnimation(View view, int left, int top, 1431ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell int right, int bottom) { 1432ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell IMPL.postInvalidateOnAnimation(view, left, top, right, bottom); 1433ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 1434ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell 1435ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell /** 1436ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * <p>Causes the Runnable to execute on the next animation time step. 1437ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * The runnable will be run on the user interface thread.</p> 1438ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * 1439ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * <p>This method can be invoked from outside of the UI thread 1440ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * only when this View is attached to a window.</p> 1441ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * 1442ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * @param view View to post this Runnable to 1443ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * @param action The Runnable that will be executed. 1444ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell */ 1445ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public static void postOnAnimation(View view, Runnable action) { 1446ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell IMPL.postOnAnimation(view, action); 1447ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 1448ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell 1449ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell /** 1450ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * <p>Causes the Runnable to execute on the next animation time step, 1451ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * after the specified amount of time elapses. 1452ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * The runnable will be run on the user interface thread.</p> 1453ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * 1454ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * <p>This method can be invoked from outside of the UI thread 1455ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * only when this View is attached to a window.</p> 1456ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * 1457ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * @param view The view to post this Runnable to 1458ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * @param action The Runnable that will be executed. 1459ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * @param delayMillis The delay (in milliseconds) until the Runnable 1460ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * will be executed. 1461ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell */ 1462ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell public static void postOnAnimationDelayed(View view, Runnable action, long delayMillis) { 1463ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell IMPL.postOnAnimationDelayed(view, action, delayMillis); 1464ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 146525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 146625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov /** 146725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * Gets the mode for determining whether this View is important for accessibility 146825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * which is if it fires accessibility events and if it is reported to 146925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * accessibility services that query the screen. 147025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * 147125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @param view The view whose property to get. 147225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @return The mode for determining whether a View is important for accessibility. 147325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * 147425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @see #IMPORTANT_FOR_ACCESSIBILITY_YES 147525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @see #IMPORTANT_FOR_ACCESSIBILITY_NO 1476b5b909e4544fd4d1d0bdf445b8588a7233d5c71fAlan Viverette * @see #IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS 147725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @see #IMPORTANT_FOR_ACCESSIBILITY_AUTO 147825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov */ 1479a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @ImportantForAccessibility 148025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public static int getImportantForAccessibility(View view) { 148125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return IMPL.getImportantForAccessibility(view); 148225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 148325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 148425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov /** 148525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * Sets how to determine whether this view is important for accessibility 148625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * which is if it fires accessibility events and if it is reported to 148725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * accessibility services that query the screen. 148812ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette * <p> 148912ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette * <em>Note:</em> If the current paltform version does not support the 149012ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette * {@link #IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS} mode, then 149112ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette * {@link #IMPORTANT_FOR_ACCESSIBILITY_NO} will be used as it is the 149212ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette * closest terms of semantics. 149312ba769d9e9b121829c69daf0f6350e808028a6aAlan Viverette * </p> 149425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * 149525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @param view The view whose property to set. 149625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @param mode How to determine whether this view is important for accessibility. 149725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * 149825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @see #IMPORTANT_FOR_ACCESSIBILITY_YES 149925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @see #IMPORTANT_FOR_ACCESSIBILITY_NO 1500b5b909e4544fd4d1d0bdf445b8588a7233d5c71fAlan Viverette * @see #IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS 150125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @see #IMPORTANT_FOR_ACCESSIBILITY_AUTO 150225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov */ 1503a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye public static void setImportantForAccessibility(View view, 1504a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @ImportantForAccessibility int mode) { 150525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov IMPL.setImportantForAccessibility(view, mode); 150625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 150725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 150825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov /** 15090d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv * Performs the specified accessibility action on the view. For 15100d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv * possible accessibility actions look at {@link AccessibilityNodeInfoCompat}. 15110d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv * <p> 15120d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv * If an {@link AccessibilityDelegateCompat} has been specified via calling 15130d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv * {@link #setAccessibilityDelegate(View, AccessibilityDelegateCompat)} its 15140d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv * {@link AccessibilityDelegateCompat#performAccessibilityAction(View, int, Bundle)} 15150d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv * is responsible for handling this call. 15160d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv * </p> 15170d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv * 15180d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv * @param action The action to perform. 15190d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv * @param arguments Optional action arguments. 15200d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv * @return Whether the action was performed. 15210d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv */ 15220d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv public static boolean performAccessibilityAction(View view, int action, Bundle arguments) { 15230d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv return IMPL.performAccessibilityAction(view, action, arguments); 15240d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv } 15250d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv 15260d4ffdf13a16b1ce2f3bc458002374cdd25663c3alanv /** 152725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * Gets the provider for managing a virtual view hierarchy rooted at this View 1528e13cf48dc33e3865794d145ae8f4daed0bb2274bSvetoslav Ganov * and reported to {@link android.accessibilityservice.AccessibilityService}s 152925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * that explore the window content. 153025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * <p> 153125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * If this method returns an instance, this instance is responsible for managing 1532e13cf48dc33e3865794d145ae8f4daed0bb2274bSvetoslav Ganov * {@link AccessibilityNodeInfoCompat}s describing the virtual sub-tree rooted at 153325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * this View including the one representing the View itself. Similarly the returned 153425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * instance is responsible for performing accessibility actions on any virtual 153525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * view or the root view itself. 153625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * </p> 153725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * <p> 153825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * If an {@link AccessibilityDelegateCompat} has been specified via calling 153914631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette * {@link #setAccessibilityDelegate(View, AccessibilityDelegateCompat)} its 154025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * {@link AccessibilityDelegateCompat#getAccessibilityNodeProvider(View)} 154125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * is responsible for handling this call. 154225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * </p> 154325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * 154425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @param view The view whose property to get. 154525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @return The provider. 154625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * 154725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @see AccessibilityNodeProviderCompat 154825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov */ 154925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public static AccessibilityNodeProviderCompat getAccessibilityNodeProvider(View view) { 155025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return IMPL.getAccessibilityNodeProvider(view); 155125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 15528a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell 15538a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell /** 155414631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette * The opacity of the view. This is a value from 0 to 1, where 0 means the view is 155514631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette * completely transparent and 1 means the view is completely opaque. 155614631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette * 155714631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette * <p>By default this is 1.0f. Prior to API 11, the returned value is always 1.0f. 155814631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette * @return The opacity of the view. 155914631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette */ 156014631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette public static float getAlpha(View view) { 156114631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette return IMPL.getAlpha(view); 156214631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette } 156314631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette 156414631dece1ee9ddd5f430aa4b8eb048e27065d71Alan Viverette /** 15658a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <p>Specifies the type of layer backing this view. The layer can be 15668a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * {@link #LAYER_TYPE_NONE disabled}, {@link #LAYER_TYPE_SOFTWARE software} or 15678a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * {@link #LAYER_TYPE_HARDWARE hardware}.</p> 15688a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * 15698a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <p>A layer is associated with an optional {@link android.graphics.Paint} 15708a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * instance that controls how the layer is composed on screen. The following 15718a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * properties of the paint are taken into account when composing the layer:</p> 15728a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <ul> 15738a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <li>{@link android.graphics.Paint#getAlpha() Translucency (alpha)}</li> 15748a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <li>{@link android.graphics.Paint#getXfermode() Blending mode}</li> 15758a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <li>{@link android.graphics.Paint#getColorFilter() Color filter}</li> 15768a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * </ul> 15778a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * 15788a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <p>If this view has an alpha value set to < 1.0 by calling 15798a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * setAlpha(float), the alpha value of the layer's paint is replaced by 15808a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * this view's alpha value. Calling setAlpha(float) is therefore 15818a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * equivalent to setting a hardware layer on this view and providing a paint with 15828a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * the desired alpha value.<p> 15838a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * 15848a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * <p>Refer to the documentation of {@link #LAYER_TYPE_NONE disabled}, 15858a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * {@link #LAYER_TYPE_SOFTWARE software} and {@link #LAYER_TYPE_HARDWARE hardware} 15868a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * for more information on when and how to use layers.</p> 15878a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * 15888a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * @param layerType The ype of layer to use with this view, must be one of 15898a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * {@link #LAYER_TYPE_NONE}, {@link #LAYER_TYPE_SOFTWARE} or 15908a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * {@link #LAYER_TYPE_HARDWARE} 15918a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * @param paint The paint used to compose the layer. This argument is optional 15928a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * and can be null. It is ignored when the layer type is 15938a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * {@link #LAYER_TYPE_NONE} 15948a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * 15958a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * @param view View to set the layer type for 15968a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * @param layerType The type of layer to use with this view, must be one of 15978a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * {@link #LAYER_TYPE_NONE}, {@link #LAYER_TYPE_SOFTWARE} or 15988a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * {@link #LAYER_TYPE_HARDWARE} 15998a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * @param paint The paint used to compose the layer. This argument is optional 16008a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * and can be null. It is ignored when the layer type is 16018a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell * {@link #LAYER_TYPE_NONE} 16028a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell */ 1603a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye public static void setLayerType(View view, @LayerType int layerType, Paint paint) { 16048a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell IMPL.setLayerType(view, layerType, paint); 16058a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell } 160697341bdc5bea1d7bf777de65228039142d249f38Adam Powell 160797341bdc5bea1d7bf777de65228039142d249f38Adam Powell /** 160897341bdc5bea1d7bf777de65228039142d249f38Adam Powell * Indicates what type of layer is currently associated with this view. By default 160997341bdc5bea1d7bf777de65228039142d249f38Adam Powell * a view does not have a layer, and the layer type is {@link #LAYER_TYPE_NONE}. 161097341bdc5bea1d7bf777de65228039142d249f38Adam Powell * Refer to the documentation of 161197341bdc5bea1d7bf777de65228039142d249f38Adam Powell * {@link #setLayerType(android.view.View, int, android.graphics.Paint)} 161297341bdc5bea1d7bf777de65228039142d249f38Adam Powell * for more information on the different types of layers. 161397341bdc5bea1d7bf777de65228039142d249f38Adam Powell * 161497341bdc5bea1d7bf777de65228039142d249f38Adam Powell * @param view The view to fetch the layer type from 161597341bdc5bea1d7bf777de65228039142d249f38Adam Powell * @return {@link #LAYER_TYPE_NONE}, {@link #LAYER_TYPE_SOFTWARE} or 161697341bdc5bea1d7bf777de65228039142d249f38Adam Powell * {@link #LAYER_TYPE_HARDWARE} 161797341bdc5bea1d7bf777de65228039142d249f38Adam Powell * 161897341bdc5bea1d7bf777de65228039142d249f38Adam Powell * @see #setLayerType(android.view.View, int, android.graphics.Paint) 161997341bdc5bea1d7bf777de65228039142d249f38Adam Powell * @see #LAYER_TYPE_NONE 162097341bdc5bea1d7bf777de65228039142d249f38Adam Powell * @see #LAYER_TYPE_SOFTWARE 162197341bdc5bea1d7bf777de65228039142d249f38Adam Powell * @see #LAYER_TYPE_HARDWARE 162297341bdc5bea1d7bf777de65228039142d249f38Adam Powell */ 1623a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @LayerType 162497341bdc5bea1d7bf777de65228039142d249f38Adam Powell public static int getLayerType(View view) { 162597341bdc5bea1d7bf777de65228039142d249f38Adam Powell return IMPL.getLayerType(view); 162697341bdc5bea1d7bf777de65228039142d249f38Adam Powell } 16270af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov 16280af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov /** 16290af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov * Gets the id of a view for which a given view serves as a label for 16300af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov * accessibility purposes. 16310af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov * 16320af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov * @param view The view on which to invoke the corresponding method. 16330af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov * @return The labeled view id. 16340af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov */ 16350af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov public static int getLabelFor(View view) { 16360af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov return IMPL.getLabelFor(view); 16370af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov } 16380af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov 16390af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov /** 16400af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov * Sets the id of a view for which a given view serves as a label for 16410af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov * accessibility purposes. 16420af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov * 16430af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov * @param view The view on which to invoke the corresponding method. 16440af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov * @param labeledId The labeled view id. 16450af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov */ 1646a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye public static void setLabelFor(View view, @IdRes int labeledId) { 16470af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov IMPL.setLabelFor(view, labeledId); 16480af001b9e0d173f6b9836e66539bf764b897c36fSvetoslav Ganov } 16496debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell 16506debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell /** 16516debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * Updates the {@link Paint} object used with the current layer (used only if the current 16526debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * layer type is not set to {@link #LAYER_TYPE_NONE}). Changed properties of the Paint 16536debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * provided to {@link #setLayerType(android.view.View, int, android.graphics.Paint)} 16546debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * will be used the next time the View is redrawn, but 16556debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * {@link #setLayerPaint(android.view.View, android.graphics.Paint)} 16566debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * must be called to ensure that the view gets redrawn immediately. 16576debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * 16586debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * <p>A layer is associated with an optional {@link android.graphics.Paint} 16596debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * instance that controls how the layer is composed on screen. The following 16606debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * properties of the paint are taken into account when composing the layer:</p> 16616debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * <ul> 16626debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * <li>{@link android.graphics.Paint#getAlpha() Translucency (alpha)}</li> 16636debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * <li>{@link android.graphics.Paint#getXfermode() Blending mode}</li> 16646debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * <li>{@link android.graphics.Paint#getColorFilter() Color filter}</li> 16656debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * </ul> 16666debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * 16676debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * <p>If this view has an alpha value set to < 1.0 by calling 16686debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * View#setAlpha(float), the alpha value of the layer's paint is replaced by 16696debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * this view's alpha value. Calling View#setAlpha(float) is therefore 16706debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * equivalent to setting a hardware layer on this view and providing a paint with 16716debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * the desired alpha value.</p> 16726debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * 16731d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * @param view View to set a layer paint for 16746debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * @param paint The paint used to compose the layer. This argument is optional 16756debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * and can be null. It is ignored when the layer type is 16766debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * {@link #LAYER_TYPE_NONE} 16776debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell * 16781d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * @see #setLayerType(View, int, android.graphics.Paint) 16796debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell */ 16806debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell public static void setLayerPaint(View view, Paint paint) { 16816debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell IMPL.setLayerPaint(view, paint); 16826debd2bbcae1cd285d2e21db633998b7801f9f40Adam Powell } 16831d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell 16841d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell /** 16851d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * Returns the resolved layout direction for this view. 16861d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * 16871d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * @param view View to get layout direction for 16881d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * @return {@link #LAYOUT_DIRECTION_RTL} if the layout direction is RTL or returns 16891d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * {@link #LAYOUT_DIRECTION_LTR} if the layout direction is not RTL. 16901d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * 16911d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * For compatibility, this will return {@link #LAYOUT_DIRECTION_LTR} if API version 16921d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * is lower than Jellybean MR1 (API 17) 16931d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell */ 1694a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @ResolvedLayoutDirectionMode 16951d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell public static int getLayoutDirection(View view) { 16961d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell return IMPL.getLayoutDirection(view); 16971d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell } 16981d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell 16991d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell /** 17001d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * Set the layout direction for this view. This will propagate a reset of layout direction 17011d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * resolution to the view's children and resolve layout direction for this view. 17021d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * 17031d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * @param view View to set layout direction for 17041d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * @param layoutDirection the layout direction to set. Should be one of: 17051d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * 17061d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * {@link #LAYOUT_DIRECTION_LTR}, 17071d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * {@link #LAYOUT_DIRECTION_RTL}, 17081d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * {@link #LAYOUT_DIRECTION_INHERIT}, 17091d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * {@link #LAYOUT_DIRECTION_LOCALE}. 17101d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * 17111d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * Resolution will be done if the value is set to LAYOUT_DIRECTION_INHERIT. The resolution 17121d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * proceeds up the parent chain of the view to get the value. If there is no parent, then it 17131d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell * will return the default {@link #LAYOUT_DIRECTION_LTR}. 17141d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell */ 1715a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye public static void setLayoutDirection(View view, @LayoutDirectionMode int layoutDirection) { 17161d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell IMPL.setLayoutDirection(view, layoutDirection); 17171d26501f0c8e9f3577f651938a03f6b3a1a672c7Adam Powell } 17183cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell 17193cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell /** 17203cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell * Gets the parent for accessibility purposes. Note that the parent for 17213cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell * accessibility is not necessary the immediate parent. It is the first 17223cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell * predecessor that is important for accessibility. 17233cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell * 17243cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell * @param view View to retrieve parent for 17253cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell * @return The parent for use in accessibility inspection 17263cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell */ 17273cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell public static ViewParent getParentForAccessibility(View view) { 17283cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell return IMPL.getParentForAccessibility(view); 17293cf6141d516a0a6170823b1bda5c0b6d7500e76cAdam Powell } 1730c029e15f5a4709214cb433a562256586824a0f33Adam Powell 1731c029e15f5a4709214cb433a562256586824a0f33Adam Powell /** 1732c029e15f5a4709214cb433a562256586824a0f33Adam Powell * Indicates whether this View is opaque. An opaque View guarantees that it will 1733c029e15f5a4709214cb433a562256586824a0f33Adam Powell * draw all the pixels overlapping its bounds using a fully opaque color. 1734c029e15f5a4709214cb433a562256586824a0f33Adam Powell * 1735c029e15f5a4709214cb433a562256586824a0f33Adam Powell * On API 7 and above this will call View's true isOpaque method. On previous platform 1736c029e15f5a4709214cb433a562256586824a0f33Adam Powell * versions it will check the opacity of the view's background drawable if present. 1737c029e15f5a4709214cb433a562256586824a0f33Adam Powell * 1738c029e15f5a4709214cb433a562256586824a0f33Adam Powell * @return True if this View is guaranteed to be fully opaque, false otherwise. 1739c029e15f5a4709214cb433a562256586824a0f33Adam Powell */ 1740c029e15f5a4709214cb433a562256586824a0f33Adam Powell public static boolean isOpaque(View view) { 1741c029e15f5a4709214cb433a562256586824a0f33Adam Powell return IMPL.isOpaque(view); 1742c029e15f5a4709214cb433a562256586824a0f33Adam Powell } 1743b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 1744b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell /** 1745b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * Utility to reconcile a desired size and state, with constraints imposed 1746b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * by a MeasureSpec. Will take the desired size, unless a different size 1747b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * is imposed by the constraints. The returned value is a compound integer, 1748b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * with the resolved size in the {@link #MEASURED_SIZE_MASK} bits and 1749b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * optionally the bit {@link #MEASURED_STATE_TOO_SMALL} set if the resulting 1750b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * size is smaller than the size the view wants to be. 1751b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * 1752b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * @param size How big the view wants to be 1753b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * @param measureSpec Constraints imposed by the parent 1754b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * @return Size information bit mask as defined by 1755b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * {@link #MEASURED_SIZE_MASK} and {@link #MEASURED_STATE_TOO_SMALL}. 1756b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell */ 1757b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public static int resolveSizeAndState(int size, int measureSpec, int childMeasuredState) { 1758b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return IMPL.resolveSizeAndState(size, measureSpec, childMeasuredState); 1759b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 1760b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 1761b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell /** 1762b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * Return the full width measurement information for this view as computed 1763b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * by the most recent call to {@link android.view.View#measure(int, int)}. 1764b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * This result is a bit mask as defined by {@link #MEASURED_SIZE_MASK} and 1765b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * {@link #MEASURED_STATE_TOO_SMALL}. 1766b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * This should be used during measurement and layout calculations only. Use 1767b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * {@link android.view.View#getWidth()} to see how wide a view is after layout. 1768b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * 1769b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * @return The measured width of this view as a bit mask. 1770b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell */ 1771b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public static int getMeasuredWidthAndState(View view) { 1772b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return IMPL.getMeasuredWidthAndState(view); 1773b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 1774b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 1775b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell /** 1776b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * Return the full height measurement information for this view as computed 1777b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * by the most recent call to {@link android.view.View#measure(int, int)}. 1778b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * This result is a bit mask as defined by {@link #MEASURED_SIZE_MASK} and 1779b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * {@link #MEASURED_STATE_TOO_SMALL}. 1780b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * This should be used during measurement and layout calculations only. Use 1781b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * {@link android.view.View#getHeight()} to see how wide a view is after layout. 1782b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * 1783b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * @return The measured width of this view as a bit mask. 1784b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell */ 1785b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public static int getMeasuredHeightAndState(View view) { 1786b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return IMPL.getMeasuredHeightAndState(view); 1787b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 1788b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 1789b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell /** 1790b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * Return only the state bits of {@link #getMeasuredWidthAndState} 1791b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * and {@link #getMeasuredHeightAndState}, combined into one integer. 1792b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * The width component is in the regular bits {@link #MEASURED_STATE_MASK} 1793b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * and the height component is at the shifted bits 1794b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell * {@link #MEASURED_HEIGHT_STATE_SHIFT}>>{@link #MEASURED_STATE_MASK}. 1795b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell */ 1796b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public static int getMeasuredState(View view) { 1797b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return IMPL.getMeasuredState(view); 1798b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 1799086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette 1800086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette /** 1801086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * Gets the live region mode for the specified View. 1802086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * 1803086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * @param view The view from which to obtain the live region mode 1804086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * @return The live region mode for the view. 1805086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * 1806086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * @see ViewCompat#setAccessibilityLiveRegion(View, int) 1807086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette */ 1808a3ff3273e976adf19770651dcf473fa67b38eb22Tor Norbye @AccessibilityLiveRegion 1809e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell public static int getAccessibilityLiveRegion(View view) { 1810086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette return IMPL.getAccessibilityLiveRegion(view); 1811086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette } 1812086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette 1813086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette /** 1814086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * Sets the live region mode for the specified view. This indicates to 1815086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * accessibility services whether they should automatically notify the user 1816086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * about changes to the view's content description or text, or to the 1817086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * content descriptions or text of the view's children (where applicable). 1818086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * <p> 1819086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * For example, in a login screen with a TextView that displays an "incorrect 1820086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * password" notification, that view should be marked as a live region with 1821086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * mode {@link #ACCESSIBILITY_LIVE_REGION_POLITE}. 1822086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * <p> 1823086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * To disable change notifications for this view, use 1824086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * {@link #ACCESSIBILITY_LIVE_REGION_NONE}. This is the default live region 1825086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * mode for most views. 1826086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * <p> 1827086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * To indicate that the user should be notified of changes, use 1828086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * {@link #ACCESSIBILITY_LIVE_REGION_POLITE}. 1829086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * <p> 1830086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * If the view's changes should interrupt ongoing speech and notify the user 1831086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * immediately, use {@link #ACCESSIBILITY_LIVE_REGION_ASSERTIVE}. 1832086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * 1833086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * @param view The view on which to set the live region mode 1834086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * @param mode The live region mode for this view, one of: 1835086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * <ul> 1836086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * <li>{@link #ACCESSIBILITY_LIVE_REGION_NONE} 1837086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * <li>{@link #ACCESSIBILITY_LIVE_REGION_POLITE} 1838086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * <li>{@link #ACCESSIBILITY_LIVE_REGION_ASSERTIVE} 1839086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * </ul> 1840086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette */ 18415e8ef0460dfca1e3806b491fa886995baf0cfe9cTor Norbye public static void setAccessibilityLiveRegion(View view, @AccessibilityLiveRegion int mode) { 1842086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette IMPL.setAccessibilityLiveRegion(view, mode); 1843086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette } 1844e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell 1845e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell /** 1846e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * Returns the start padding of the specified view depending on its resolved layout direction. 1847e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * If there are inset and enabled scrollbars, this value may include the space 1848e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * required to display the scrollbars as well. 1849e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * 1850e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * @param view The view to get padding for 1851e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * @return the start padding in pixels 1852e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell */ 1853e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell public static int getPaddingStart(View view) { 1854e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell return IMPL.getPaddingStart(view); 1855e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell } 1856e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell 1857e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell /** 1858e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * Returns the end padding of the specified view depending on its resolved layout direction. 1859e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * If there are inset and enabled scrollbars, this value may include the space 1860e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * required to display the scrollbars as well. 1861e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * 1862e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * @param view The view to get padding for 1863e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * @return the end padding in pixels 1864e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell */ 1865e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell public static int getPaddingEnd(View view) { 1866e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell return IMPL.getPaddingEnd(view); 1867e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell } 1868e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell 1869e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell /** 1870e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * Sets the relative padding. The view may add on the space required to display 1871e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * the scrollbars, depending on the style and visibility of the scrollbars. 1872e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * So the values returned from {@link #getPaddingStart}, {@link View#getPaddingTop}, 1873e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * {@link #getPaddingEnd} and {@link View#getPaddingBottom} may be different 1874e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * from the values set in this call. 1875e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * 1876e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * @param view The view on which to set relative padding 1877e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * @param start the start padding in pixels 1878e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * @param top the top padding in pixels 1879e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * @param end the end padding in pixels 1880e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell * @param bottom the bottom padding in pixels 1881e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell */ 1882e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell public static void setPaddingRelative(View view, int start, int top, int end, int bottom) { 1883e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell IMPL.setPaddingRelative(view, start, top, end, bottom); 1884e096e4c526feeb64833b5a75649ec36d75d7cbbfAdam Powell } 1885a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell 1886a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell /** 1887a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell * Notify a view that it is being temporarily detached. 1888a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell */ 1889a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell public static void dispatchStartTemporaryDetach(View view) { 1890a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell IMPL.dispatchStartTemporaryDetach(view); 1891a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } 1892a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell 1893a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell /** 1894a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell * Notify a view that its temporary detach has ended; the view is now reattached. 1895a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell */ 1896a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell public static void dispatchFinishTemporaryDetach(View view) { 1897a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell IMPL.dispatchFinishTemporaryDetach(view); 1898a6613ed42e0dee0cac3da01f5450e2d61c270b52Adam Powell } 1899c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell 1900c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell /** 1901c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell * The horizontal location of this view relative to its {@link View#getLeft() left} position. 1902c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell * This position is post-layout, in addition to wherever the object's 1903c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell * layout placed it. 1904c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell * 1905d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will return 0.</p> 1906d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 1907c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell * @return The horizontal position of this view relative to its left position, in pixels. 1908c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell */ 1909f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell public static float getTranslationX(View view) { 1910f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell return IMPL.getTranslationX(view); 1911c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell } 1912c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell 1913c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell /** 1914c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell * The vertical location of this view relative to its {@link View#getTop() left} position. 1915c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell * This position is post-layout, in addition to wherever the object's 1916c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell * layout placed it. 1917c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell * 1918d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will return 0.</p> 1919d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 1920c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell * @return The vertical position of this view relative to its top position, in pixels. 1921c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell */ 1922f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell public static float getTranslationY(View view) { 1923f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell return IMPL.getTranslationY(view); 1924f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell } 1925f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell 1926f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell /** 1927f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell * Returns the minimum width of the view. 1928f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell * 1929f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell * <p>Prior to API 16 this will return 0.</p> 1930f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell * 1931f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell * @return the minimum width the view will try to be. 1932f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell */ 1933f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell public static int getMinimumWidth(View view) { 1934f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell return IMPL.getMinimumWidth(view); 1935f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell } 1936f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell 1937f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell /** 1938f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell * Returns the minimum height of the view. 1939f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell * 1940f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell * <p>Prior to API 16 this will return 0.</p> 1941f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell * 1942f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell * @return the minimum height the view will try to be. 1943f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell */ 1944f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell public static int getMinimumHeight(View view) { 1945f2b93981846ce21a06b6a92a5a6ba70a29c345edAdam Powell return IMPL.getMinimumHeight(view); 1946c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell } 1947d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 1948d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 1949d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * This method returns a ViewPropertyAnimator object, which can be used to animate 1950d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * specific properties on this View. 1951d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 1952d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 14, this method will do nothing.</p> 1953d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 1954d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @return ViewPropertyAnimator The ViewPropertyAnimator associated with this View. 1955d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 1956d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static ViewPropertyAnimatorCompat animate(View view) { 1957d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return IMPL.animate(view); 1958d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 1959d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 1960d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 1961d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Sets the horizontal location of this view relative to its left position. 1962d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * This effectively positions the object post-layout, in addition to wherever the object's 1963d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * layout placed it. 1964d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 1965d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will have no effect.</p> 1966d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 1967d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @param value The horizontal position of this view relative to its left position, 1968d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * in pixels. 1969d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 1970d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setTranslationX(View view, float value) { 1971d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase IMPL.setTranslationX(view, value); 1972d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 1973d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 1974d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 1975d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Sets the vertical location of this view relative to its top position. 1976d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * This effectively positions the object post-layout, in addition to wherever the object's 1977d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * layout placed it. 1978d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 1979d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will have no effect.</p> 1980d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 1981d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @param value The vertical position of this view relative to its top position, 1982d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * in pixels. 1983d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 1984d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @attr ref android.R.styleable#View_translationY 1985d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 1986d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setTranslationY(View view, float value) { 1987d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase IMPL.setTranslationY(view, value); 1988d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 1989d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 1990d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 1991d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Sets the opacity of the view. This is a value from 0 to 1, where 0 means the view is 1992d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * completely transparent and 1 means the view is completely opaque.</p> 1993d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 1994d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p> Note that setting alpha to a translucent value (0 < alpha < 1) can have significant 1995d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * performance implications, especially for large views. It is best to use the alpha property 1996d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * sparingly and transiently, as in the case of fading animations.</p> 1997d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 1998d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will have no effect.</p> 1999d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2000d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @param value The opacity of the view. 2001d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 2002d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setAlpha(View view, float value) { 2003d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase IMPL.setAlpha(view, value); 2004d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2005d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2006d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 2007d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Sets the visual x position of this view, in pixels. This is equivalent to setting the 2008d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * {@link #setTranslationX(View, float) translationX} property to be the difference between 2009d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * the x value passed in and the current left property of the view as determined 2010d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * by the layout bounds. 2011d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2012d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will have no effect.</p> 2013d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2014d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @param value The visual x position of this view, in pixels. 2015d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 2016d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setX(View view, float value) { 2017d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase IMPL.setX(view, value); 2018d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2019d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2020d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 2021d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Sets the visual y position of this view, in pixels. This is equivalent to setting the 2022d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * {@link #setTranslationY(View, float) translationY} property to be the difference between 2023d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * the y value passed in and the current top property of the view as determined by the 2024d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * layout bounds. 2025d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2026d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will have no effect.</p> 2027d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2028d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @param value The visual y position of this view, in pixels. 2029d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 2030d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setY(View view, float value) { 2031d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase IMPL.setY(view, value); 2032d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2033d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2034d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 2035d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Sets the degrees that the view is rotated around the pivot point. Increasing values 2036d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * result in clockwise rotation. 2037d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2038d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will have no effect.</p> 2039d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2040d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @param value The degrees of rotation. 2041d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 2042d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setRotation(View view, float value) { 2043d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase IMPL.setRotation(view, value); 2044d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2045d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2046d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 2047d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Sets the degrees that the view is rotated around the horizontal axis through the pivot point. 2048d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Increasing values result in clockwise rotation from the viewpoint of looking down the 2049d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * x axis. 2050d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2051d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will have no effect.</p> 2052d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2053d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @param value The degrees of X rotation. 2054d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 2055d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setRotationX(View view, float value) { 2056d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase IMPL.setRotationX(view, value); 2057d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2058d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2059d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 2060d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Sets the degrees that the view is rotated around the vertical axis through the pivot point. 2061d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Increasing values result in counter-clockwise rotation from the viewpoint of looking 2062d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * down the y axis. 2063d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2064d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will have no effect.</p> 2065d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2066d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @param value The degrees of Y rotation. 2067d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 2068d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setRotationY(View view, float value) { 2069d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase IMPL.setRotationY(view, value); 2070d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2071d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2072d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 2073d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Sets the amount that the view is scaled in x around the pivot point, as a proportion of 2074d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * the view's unscaled width. A value of 1 means that no scaling is applied. 2075d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2076d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will have no effect.</p> 2077d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2078d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @param value The scaling factor. 2079d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 2080d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setScaleX(View view, float value) { 2081d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase IMPL.setScaleX(view, value); 2082d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2083d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2084d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 2085d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Sets the amount that the view is scaled in Y around the pivot point, as a proportion of 2086d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * the view's unscaled width. A value of 1 means that no scaling is applied. 2087d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2088d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will have no effect.</p> 2089d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2090d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @param value The scaling factor. 2091d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 2092d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setScaleY(View view, float value) { 2093d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase IMPL.setScaleY(view, value); 2094d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2095d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2096d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 2097d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * The x location of the point around which the view is 2098d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * {@link #setRotation(View, float) rotated} and {@link #setScaleX(View, float) scaled}. 2099d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2100d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will have no effect.</p> 2101d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2102d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 2103f633e9521802aeadfea1aec5724348b8eafd1b1dDake Gu public static float getPivotX(View view) { 2104d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return IMPL.getPivotX(view); 2105d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2106d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2107d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 2108d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Sets the x location of the point around which the view is 2109d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * {@link #setRotation(View, float) rotated} and {@link #setScaleX(View, float) scaled}. 2110d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * By default, the pivot point is centered on the object. 2111d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Setting this property disables this behavior and causes the view to use only the 2112d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * explicitly set pivotX and pivotY values. 2113d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2114d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will have no effect.</p> 2115d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2116d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @param value The x location of the pivot point. 2117d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 2118f633e9521802aeadfea1aec5724348b8eafd1b1dDake Gu public static void setPivotX(View view, float value) { 2119d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase IMPL.setPivotX(view, value); 2120d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2121d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2122d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 2123d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * The y location of the point around which the view is {@link #setRotation(View, 2124d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * float) rotated} and {@link #setScaleY(View, float) scaled}. 2125d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2126d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will return 0.</p> 2127d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2128d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @return The y location of the pivot point. 2129d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 2130f633e9521802aeadfea1aec5724348b8eafd1b1dDake Gu public static float getPivotY(View view) { 2131d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return IMPL.getPivotY(view); 2132d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2133d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2134d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase /** 2135d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Sets the y location of the point around which the view is 2136d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * {@link #setRotation(View, float) rotated} and {@link #setScaleY(View, float) scaled}. 2137d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * By default, the pivot point is centered on the object. 2138d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * Setting this property disables this behavior and causes the view to use only the 2139d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * explicitly set pivotX and pivotY values. 2140d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2141d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * <p>Prior to API 11 this will have no effect.</p> 2142d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * 2143d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase * @param value The y location of the pivot point. 2144d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase */ 2145f633e9521802aeadfea1aec5724348b8eafd1b1dDake Gu public static void setPivotY(View view, float value) { 2146d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase IMPL.setPivotX(view, value); 2147d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2148d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2149f633e9521802aeadfea1aec5724348b8eafd1b1dDake Gu public static float getRotation(View view) { 2150d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return IMPL.getRotation(view); 2151d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2152d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2153f633e9521802aeadfea1aec5724348b8eafd1b1dDake Gu public static float getRotationX(View view) { 2154d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return IMPL.getRotationX(view); 2155d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2156d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2157f633e9521802aeadfea1aec5724348b8eafd1b1dDake Gu public static float getRotationY(View view) { 2158d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return IMPL.getRotationY(view); 2159d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2160d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2161f633e9521802aeadfea1aec5724348b8eafd1b1dDake Gu public static float getScaleX(View view) { 2162d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return IMPL.getScaleX(view); 2163d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2164d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2165f633e9521802aeadfea1aec5724348b8eafd1b1dDake Gu public static float getScaleY(View view) { 2166d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return IMPL.getScaleY(view); 2167d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2168d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2169f633e9521802aeadfea1aec5724348b8eafd1b1dDake Gu public static float getX(View view) { 2170d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return IMPL.getX(view); 2171d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2172d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 2173f633e9521802aeadfea1aec5724348b8eafd1b1dDake Gu public static float getY(View view) { 2174d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return IMPL.getY(view); 2175d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 2176d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 21770bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu /** 217849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * Sets the base elevation of this view, in pixels. 217949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes */ 218049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public static void setElevation(View view, float elevation) { 218149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes IMPL.setElevation(view, elevation); 218249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 218349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 218449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes /** 218549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * The base elevation of this view relative to its parent, in pixels. 218649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * 218749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * @return The base depth position of the view, in pixels. 218849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes */ 218949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public static float getElevation(View view) { 219049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes return IMPL.getElevation(view); 219149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 219249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 219349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes /** 219449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * Sets the depth location of this view relative to its {@link #getElevation(View) elevation}. 219549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes */ 219649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public static void setTranslationZ(View view, float translationZ) { 219749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes IMPL.setTranslationZ(view, translationZ); 219849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 219949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 220049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes /** 220149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * The depth location of this view relative to its {@link #getElevation(View) elevation}. 220249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * 220349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * @return The depth of this view relative to its elevation. 220449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes */ 220549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public static float getTranslationZ(View view) { 220649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes return IMPL.getTranslationZ(view); 220749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 220849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 220949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes /** 22100bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * Sets the name of the View to be used to identify Views in Transitions. 22110bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * Names should be unique in the View hierarchy. 22120bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * 22130bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * @param view The View against which to invoke the method. 22140bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * @param transitionName The name of the View to uniquely identify it for Transitions. 22150bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu */ 2216f633e9521802aeadfea1aec5724348b8eafd1b1dDake Gu public static void setTransitionName(View view, String transitionName) { 22170bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu IMPL.setTransitionName(view, transitionName); 22180bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu } 22190bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu 22200bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu /** 22210bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * Returns the name of the View to be used to identify Views in Transitions. 22220bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * Names should be unique in the View hierarchy. 22230bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * 22240bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * <p>This returns null if the View has not been given a name.</p> 22250bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * 22260bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * @param view The View against which to invoke the method. 22270bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * @return The name used of the View to be used to identify Views in Transitions or null 22280bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * if no name has been given. 22290bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu */ 2230f633e9521802aeadfea1aec5724348b8eafd1b1dDake Gu public static String getTransitionName(View view) { 22310bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu return IMPL.getTransitionName(view); 22320bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu } 22330bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu 223449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes /** 223549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * Returns the current system UI visibility that is currently set for the entire window. 223649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes */ 223749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public static int getWindowSystemUiVisibility(View view) { 223849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes return IMPL.getWindowSystemUiVisibility(view); 223949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 224049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 224149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes /** 224249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * Ask that a new dispatch of {@code View.onApplyWindowInsets(WindowInsets)} be performed. This 224349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * falls back to {@code View.requestFitSystemWindows()} where available. 224449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes */ 224549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public static void requestApplyInsets(View view) { 224649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes IMPL.requestApplyInsets(view); 224749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 224849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 22490f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira /** 22500f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira * Tells the ViewGroup whether to draw its children in the order defined by the method 2251bb3bde43f526bd40bed541da6c8256d0dde328a4Mindy Pereira * {@code ViewGroup.getChildDrawingOrder(int, int)}. 22520f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira * 22530f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira * @param enabled true if the order of the children when drawing is determined by 2254bb3bde43f526bd40bed541da6c8256d0dde328a4Mindy Pereira * {@link ViewGroup#getChildDrawingOrder(int, int)}, false otherwise 22550f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira * 22560f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira * <p>Prior to API 7 this will have no effect.</p> 22570f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira */ 22580f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira public static void setChildrenDrawingOrderEnabled(ViewGroup viewGroup, boolean enabled) { 22590f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira IMPL.setChildrenDrawingOrderEnabled(viewGroup, enabled); 22600f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira } 22610f3c6c1be783cfb67a2d11a1a027de0847949064Mindy Pereira 2262f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell /** 2263f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell * Returns true if this view should adapt to fit system window insets. This method will always 2264f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell * return false before API 16 (Jellybean). 2265f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell */ 2266f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell public static boolean getFitsSystemWindows(View v) { 2267f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell return IMPL.getFitsSystemWindows(v); 2268f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell } 2269f9c35128decbd812ff2497852ccacbd1ffbbd811Adam Powell 2270bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell /** 22718c9ce11dec24a32f438406286404be7ac294011dChris Banes * Sets whether or not this view should account for system screen decorations 22728c9ce11dec24a32f438406286404be7ac294011dChris Banes * such as the status bar and inset its content; that is, controlling whether 22738c9ce11dec24a32f438406286404be7ac294011dChris Banes * the default implementation of {@link View#fitSystemWindows(Rect)} will be 22748c9ce11dec24a32f438406286404be7ac294011dChris Banes * executed. See that method for more details. 22758c9ce11dec24a32f438406286404be7ac294011dChris Banes */ 22768c9ce11dec24a32f438406286404be7ac294011dChris Banes public static void setFitsSystemWindows(View view, boolean fitSystemWindows) { 22778c9ce11dec24a32f438406286404be7ac294011dChris Banes IMPL.setFitsSystemWindows(view, fitSystemWindows); 22788c9ce11dec24a32f438406286404be7ac294011dChris Banes } 22798c9ce11dec24a32f438406286404be7ac294011dChris Banes 22808c9ce11dec24a32f438406286404be7ac294011dChris Banes /** 2281bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell * On API 11 devices and above, call <code>Drawable.jumpToCurrentState()</code> 2282bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell * on all Drawable objects associated with this view. 2283bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell * <p> 2284bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell * On API 21 and above, also calls <code>StateListAnimator#jumpToCurrentState()</code> 2285bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell * if there is a StateListAnimator attached to this view. 2286bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell */ 2287bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell public static void jumpDrawablesToCurrentState(View v) { 2288bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell IMPL.jumpDrawablesToCurrentState(v); 2289bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell } 2290bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell 2291ea4f700ac38424954c56df5138ff794def50b019Chris Banes /** 2292ea4f700ac38424954c56df5138ff794def50b019Chris Banes * Set an {@link OnApplyWindowInsetsListener} to take over the policy for applying 2293ea4f700ac38424954c56df5138ff794def50b019Chris Banes * window insets to this view. This will only take effect on devices with API 21 or above. 2294ea4f700ac38424954c56df5138ff794def50b019Chris Banes */ 2295ea4f700ac38424954c56df5138ff794def50b019Chris Banes public static void setOnApplyWindowInsetsListener(View v, 2296ea4f700ac38424954c56df5138ff794def50b019Chris Banes OnApplyWindowInsetsListener listener) { 2297ea4f700ac38424954c56df5138ff794def50b019Chris Banes IMPL.setOnApplyWindowInsetsListener(v, listener); 2298ea4f700ac38424954c56df5138ff794def50b019Chris Banes } 2299ea4f700ac38424954c56df5138ff794def50b019Chris Banes 23005e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes /** 23015e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes * Controls whether the entire hierarchy under this view will save its 23025e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes * state when a state saving traversal occurs from its parent. 23035e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes * 23045e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes * @param enabled Set to false to <em>disable</em> state saving, or true 23055e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes * (the default) to allow it. 23065e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes */ 23075e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes public static void setSaveFromParentEnabled(View v, boolean enabled) { 23085e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes IMPL.setSaveFromParentEnabled(v, enabled); 23095e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes } 23105e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes 2311d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase // TODO: getters for various view properties (rotation, etc) 2312bc889e39e279fcf8c3d35fc11d8052c002eddf38Adam Powell} 2313