1ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell/* 2ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * Copyright (C) 2012 The Android Open Source Project 3ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * 4ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 5ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * you may not use this file except in compliance with the License. 6ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * You may obtain a copy of the License at 7ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * 8ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * http://www.apache.org/licenses/LICENSE-2.0 9ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * 10ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * Unless required by applicable law or agreed to in writing, software 11ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * distributed under the License is distributed on an "AS IS" BASIS, 12ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * See the License for the specific language governing permissions and 14ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell * limitations under the License. 15ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell */ 16ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell 17ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powellpackage android.support.v4.view; 18ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell 19ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powellimport android.animation.ValueAnimator; 204510b5c24adad2b94df9b84c6b73f5534ffe9b57Yigit Boyarimport android.graphics.Matrix; 218a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powellimport android.graphics.Paint; 228a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powellimport android.view.View; 2334656d7f78f35591ad1f629b936c939406d6270eYuichi Arakiimport android.view.ViewParent; 24ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell 25ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powellclass ViewCompatHC { 26ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell static long getFrameTime() { 27ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell return ValueAnimator.getFrameDelay(); 28ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell } 298a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell 306eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette public static float getAlpha(View view) { 316eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette return view.getAlpha(); 326eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette } 336eb3cdf42d5382aef6b6a6afd7c305dbc27885b9Alan Viverette 348a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell public static void setLayerType(View view, int layerType, Paint paint) { 358a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell view.setLayerType(layerType, paint); 368a0c51a3d438802df28612e02fdf0cc8fab06ddbAdam Powell } 3797341bdc5bea1d7bf777de65228039142d249f38Adam Powell 3897341bdc5bea1d7bf777de65228039142d249f38Adam Powell public static int getLayerType(View view) { 3997341bdc5bea1d7bf777de65228039142d249f38Adam Powell return view.getLayerType(); 4097341bdc5bea1d7bf777de65228039142d249f38Adam Powell } 41b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 42b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public static int resolveSizeAndState(int size, int measureSpec, int childMeasuredState) { 43b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return View.resolveSizeAndState(size, measureSpec, childMeasuredState); 44b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 45b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 46b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public static int getMeasuredWidthAndState(View view) { 47b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return view.getMeasuredWidthAndState(); 48b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 49b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 50b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public static int getMeasuredHeightAndState(View view) { 51b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return view.getMeasuredHeightAndState(); 52b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 53b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell 54b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell public static int getMeasuredState(View view) { 55b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell return view.getMeasuredState(); 56b12ba0547b2fad1c4dfc12dec36c5e7893974e67Adam Powell } 57c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell 58c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell public static float getTranslationX(View view) { 59c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell return view.getTranslationX(); 60c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell } 61c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell 62c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell public static float getTranslationY(View view) { 63c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell return view.getTranslationY(); 64c096ad1894f1a4543e703ddc9d279fbd3b596c53Adam Powell } 65d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 66d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static float getX(View view) { 67d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return view.getX(); 68d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 69d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 70d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static float getY(View view) { 71d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return view.getY(); 72d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 73d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 74d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static float getRotation(View view) { 75d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return view.getRotation(); 76d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 77d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 78d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static float getRotationX(View view) { 79d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return view.getRotationX(); 80d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 81d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 82d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static float getRotationY(View view) { 83d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return view.getRotationY(); 84d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 85d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 86d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static float getScaleX(View view) { 87d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return view.getScaleX(); 88d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 89d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 90d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static float getScaleY(View view) { 91d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return view.getScaleY(); 92d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 93d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 94d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setTranslationX(View view, float value) { 95d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase view.setTranslationX(value); 96d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 97d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 98d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setTranslationY(View view, float value) { 99d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase view.setTranslationY(value); 100d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 101d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 1024510b5c24adad2b94df9b84c6b73f5534ffe9b57Yigit Boyar public static Matrix getMatrix(View view) { 1034510b5c24adad2b94df9b84c6b73f5534ffe9b57Yigit Boyar return view.getMatrix(); 1044510b5c24adad2b94df9b84c6b73f5534ffe9b57Yigit Boyar } 1054510b5c24adad2b94df9b84c6b73f5534ffe9b57Yigit Boyar 106d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setAlpha(View view, float value) { 107d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase view.setAlpha(value); 108d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 109d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 110d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setX(View view, float value) { 111d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase view.setX(value); 112d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 113d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 114d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setY(View view, float value) { 115d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase view.setY(value); 116d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 117d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 118d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setRotation(View view, float value) { 119d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase view.setRotation(value); 120d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 121d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 122d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setRotationX(View view, float value) { 123d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase view.setRotationX(value); 124d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 125d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 126d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setRotationY(View view, float value) { 127d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase view.setRotationY(value); 128d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 129d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 130d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setScaleX(View view, float value) { 131d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase view.setScaleX(value); 132d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 133d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 134d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setScaleY(View view, float value) { 135d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase view.setScaleY(value); 136d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 137d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 138d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setPivotX(View view, float value) { 139d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase view.setPivotX(value); 140d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 141d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 142d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static void setPivotY(View view, float value) { 143d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase view.setPivotY(value); 144d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 145d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 146d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static float getPivotX(View view) { 147d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return view.getPivotX(); 148d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 149d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase 150d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase public static float getPivotY(View view) { 151d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase return view.getPivotY(); 152d7d27e9ebe5c7325e67e1a8af265378bd2056cadChet Haase } 153bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell 154bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell public static void jumpDrawablesToCurrentState(View view) { 155bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell view.jumpDrawablesToCurrentState(); 156bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell } 1575e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes 1585e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes public static void setSaveFromParentEnabled(View view, boolean enabled) { 1595e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes view.setSaveFromParentEnabled(enabled); 1605e63ab9505a3a4d11374cbbec418c1aba921409dChris Banes } 161b645de790756e27bbe92d133216b7ac79cca7679Chris Banes 162b645de790756e27bbe92d133216b7ac79cca7679Chris Banes public static void setActivated(View view, boolean activated) { 163b645de790756e27bbe92d133216b7ac79cca7679Chris Banes view.setActivated(activated); 164b645de790756e27bbe92d133216b7ac79cca7679Chris Banes } 165a966c6cda6a3aa562fcfdb842b6c6b35bdd6a3dcAdam Powell 166a966c6cda6a3aa562fcfdb842b6c6b35bdd6a3dcAdam Powell public static int combineMeasuredStates(int curState, int newState) { 167a966c6cda6a3aa562fcfdb842b6c6b35bdd6a3dcAdam Powell return View.combineMeasuredStates(curState, newState); 168a966c6cda6a3aa562fcfdb842b6c6b35bdd6a3dcAdam Powell } 169a89b7a8e4840e52dfda1442bcb885686680556f6Chris Banes 170a89b7a8e4840e52dfda1442bcb885686680556f6Chris Banes static void offsetTopAndBottom(View view, int offset) { 171a89b7a8e4840e52dfda1442bcb885686680556f6Chris Banes view.offsetTopAndBottom(offset); 1724a5aaa6852108a8e5fd9e849209803c8f6fcd6cfChris Banes tickleInvalidationFlag(view); 1734a5aaa6852108a8e5fd9e849209803c8f6fcd6cfChris Banes 17434656d7f78f35591ad1f629b936c939406d6270eYuichi Araki ViewParent parent = view.getParent(); 17534656d7f78f35591ad1f629b936c939406d6270eYuichi Araki if (parent instanceof View) { 17634656d7f78f35591ad1f629b936c939406d6270eYuichi Araki tickleInvalidationFlag((View) parent); 17734656d7f78f35591ad1f629b936c939406d6270eYuichi Araki } 178a89b7a8e4840e52dfda1442bcb885686680556f6Chris Banes } 179a89b7a8e4840e52dfda1442bcb885686680556f6Chris Banes 180a89b7a8e4840e52dfda1442bcb885686680556f6Chris Banes static void offsetLeftAndRight(View view, int offset) { 181a89b7a8e4840e52dfda1442bcb885686680556f6Chris Banes view.offsetLeftAndRight(offset); 1824a5aaa6852108a8e5fd9e849209803c8f6fcd6cfChris Banes tickleInvalidationFlag(view); 1834a5aaa6852108a8e5fd9e849209803c8f6fcd6cfChris Banes 18434656d7f78f35591ad1f629b936c939406d6270eYuichi Araki ViewParent parent = view.getParent(); 18534656d7f78f35591ad1f629b936c939406d6270eYuichi Araki if (parent instanceof View) { 18634656d7f78f35591ad1f629b936c939406d6270eYuichi Araki tickleInvalidationFlag((View) parent); 18734656d7f78f35591ad1f629b936c939406d6270eYuichi Araki } 18834656d7f78f35591ad1f629b936c939406d6270eYuichi Araki } 18934656d7f78f35591ad1f629b936c939406d6270eYuichi Araki 19034656d7f78f35591ad1f629b936c939406d6270eYuichi Araki private static void tickleInvalidationFlag(View view) { 19134656d7f78f35591ad1f629b936c939406d6270eYuichi Araki final float y = view.getTranslationY(); 19234656d7f78f35591ad1f629b936c939406d6270eYuichi Araki view.setTranslationY(y + 1); 19334656d7f78f35591ad1f629b936c939406d6270eYuichi Araki view.setTranslationY(y); 194a89b7a8e4840e52dfda1442bcb885686680556f6Chris Banes } 195ec03704fbb4f0217d4c274d1c6cf56e6ea4dcfbdAdam Powell} 196