10bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu/* 20bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * Copyright (C) 2014 The Android Open Source Project 30bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * 40bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * Licensed under the Apache License, Version 2.0 (the "License"); 50bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * you may not use this file except in compliance with the License. 60bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * You may obtain a copy of the License at 70bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * 80bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * http://www.apache.org/licenses/LICENSE-2.0 90bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * 100bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * Unless required by applicable law or agreed to in writing, software 110bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * distributed under the License is distributed on an "AS IS" BASIS, 120bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * See the License for the specific language governing permissions and 140bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu * limitations under the License. 150bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu */ 160bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu 170bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gupackage android.support.v4.view; 180bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu 19a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banesimport android.content.res.ColorStateList; 20a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banesimport android.graphics.PorterDuff; 210bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Guimport android.view.View; 22ea4f700ac38424954c56df5138ff794def50b019Chris Banesimport android.view.WindowInsets; 230bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu 241fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powellclass ViewCompatLollipop { 250bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu 260bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu public static void setTransitionName(View view, String transitionName) { 270bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu view.setTransitionName(transitionName); 280bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu } 290bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu 300bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu public static String getTransitionName(View view) { 310bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu return view.getTransitionName(); 320bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu } 3349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 3449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public static void requestApplyInsets(View view) { 3549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes view.requestApplyInsets(); 3649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 3749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 3849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public static void setElevation(View view, float elevation) { 3949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes view.setElevation(elevation); 4049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 4149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 4249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public static float getElevation(View view) { 4349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes return view.getElevation(); 4449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 4549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 4649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public static void setTranslationZ(View view, float translationZ) { 4749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes view.setTranslationZ(translationZ); 4849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 4949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 5049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public static float getTranslationZ(View view) { 5149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes return view.getTranslationZ(); 5249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 53ea4f700ac38424954c56df5138ff794def50b019Chris Banes 54ea4f700ac38424954c56df5138ff794def50b019Chris Banes public static void setOnApplyWindowInsetsListener(View view, 55ea4f700ac38424954c56df5138ff794def50b019Chris Banes final OnApplyWindowInsetsListener listener) { 56ea4f700ac38424954c56df5138ff794def50b019Chris Banes view.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() { 57ea4f700ac38424954c56df5138ff794def50b019Chris Banes @Override 58ea4f700ac38424954c56df5138ff794def50b019Chris Banes public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets) { 59ea4f700ac38424954c56df5138ff794def50b019Chris Banes // Wrap the framework insets in our wrapper 60ea4f700ac38424954c56df5138ff794def50b019Chris Banes WindowInsetsCompatApi21 insets = new WindowInsetsCompatApi21(windowInsets); 61ea4f700ac38424954c56df5138ff794def50b019Chris Banes // Give the listener a chance to use the wrapped insets 62ea4f700ac38424954c56df5138ff794def50b019Chris Banes insets = (WindowInsetsCompatApi21) listener.onApplyWindowInsets(view, insets); 63ea4f700ac38424954c56df5138ff794def50b019Chris Banes // Return the unwrapped insets 64ea4f700ac38424954c56df5138ff794def50b019Chris Banes return insets.unwrap(); 65ea4f700ac38424954c56df5138ff794def50b019Chris Banes } 66ea4f700ac38424954c56df5138ff794def50b019Chris Banes }); 67ea4f700ac38424954c56df5138ff794def50b019Chris Banes } 682e8572c7a0f35ca607038064d47d7f683ebed4efMaxim Bogatov 692e8572c7a0f35ca607038064d47d7f683ebed4efMaxim Bogatov public static boolean isImportantForAccessibility(View view) { 702e8572c7a0f35ca607038064d47d7f683ebed4efMaxim Bogatov return view.isImportantForAccessibility(); 712e8572c7a0f35ca607038064d47d7f683ebed4efMaxim Bogatov } 72a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes 73a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes static ColorStateList getBackgroundTintList(View view) { 74a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes return view.getBackgroundTintList(); 75a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes } 76a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes 77a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes static void setBackgroundTintList(View view, ColorStateList tintList) { 78a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes view.setBackgroundTintList(tintList); 79a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes } 80a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes 81a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes static PorterDuff.Mode getBackgroundTintMode(View view) { 82a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes return view.getBackgroundTintMode(); 83a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes } 84a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes 85a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes static void setBackgroundTintMode(View view, PorterDuff.Mode mode) { 86a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes view.setBackgroundTintMode(mode); 87a5f106fbd09335ae504c39b1ee1e0caa3f1238e3Chris Banes } 883040adc60c191aca58e34a01428db628604924c5Chris Banes 893040adc60c191aca58e34a01428db628604924c5Chris Banes public static WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { 903040adc60c191aca58e34a01428db628604924c5Chris Banes if (insets instanceof WindowInsetsCompatApi21) { 913040adc60c191aca58e34a01428db628604924c5Chris Banes // First unwrap the compat version so that we have the framework instance 923040adc60c191aca58e34a01428db628604924c5Chris Banes WindowInsets unwrapped = ((WindowInsetsCompatApi21) insets).unwrap(); 933040adc60c191aca58e34a01428db628604924c5Chris Banes // Now call onApplyWindowInsets 943040adc60c191aca58e34a01428db628604924c5Chris Banes WindowInsets result = v.onApplyWindowInsets(unwrapped); 953040adc60c191aca58e34a01428db628604924c5Chris Banes 963040adc60c191aca58e34a01428db628604924c5Chris Banes if (result != unwrapped) { 973040adc60c191aca58e34a01428db628604924c5Chris Banes // ...and return a newly wrapped compat insets instance if different 983040adc60c191aca58e34a01428db628604924c5Chris Banes insets = new WindowInsetsCompatApi21(result); 993040adc60c191aca58e34a01428db628604924c5Chris Banes } 1003040adc60c191aca58e34a01428db628604924c5Chris Banes } 1013040adc60c191aca58e34a01428db628604924c5Chris Banes return insets; 1023040adc60c191aca58e34a01428db628604924c5Chris Banes } 1033040adc60c191aca58e34a01428db628604924c5Chris Banes 1043040adc60c191aca58e34a01428db628604924c5Chris Banes public static WindowInsetsCompat dispatchApplyWindowInsets(View v, WindowInsetsCompat insets) { 1053040adc60c191aca58e34a01428db628604924c5Chris Banes if (insets instanceof WindowInsetsCompatApi21) { 1063040adc60c191aca58e34a01428db628604924c5Chris Banes // First unwrap the compat version so that we have the framework instance 1073040adc60c191aca58e34a01428db628604924c5Chris Banes WindowInsets unwrapped = ((WindowInsetsCompatApi21) insets).unwrap(); 1083040adc60c191aca58e34a01428db628604924c5Chris Banes // Now call dispatchApplyWindowInsets 1093040adc60c191aca58e34a01428db628604924c5Chris Banes WindowInsets result = v.dispatchApplyWindowInsets(unwrapped); 1103040adc60c191aca58e34a01428db628604924c5Chris Banes 1113040adc60c191aca58e34a01428db628604924c5Chris Banes if (result != unwrapped) { 1123040adc60c191aca58e34a01428db628604924c5Chris Banes // ...and return a newly wrapped compat insets instance if different 1133040adc60c191aca58e34a01428db628604924c5Chris Banes insets = new WindowInsetsCompatApi21(result); 1143040adc60c191aca58e34a01428db628604924c5Chris Banes } 1153040adc60c191aca58e34a01428db628604924c5Chris Banes } 1163040adc60c191aca58e34a01428db628604924c5Chris Banes return insets; 1173040adc60c191aca58e34a01428db628604924c5Chris Banes } 1181fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell 1191fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell public static void setNestedScrollingEnabled(View view, boolean enabled) { 1201fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell view.setNestedScrollingEnabled(enabled); 1211fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell } 1221fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell 1231fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell public static boolean isNestedScrollingEnabled(View view) { 1241fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell return view.isNestedScrollingEnabled(); 1251fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell } 1261fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell 1271fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell public static boolean startNestedScroll(View view, int axes) { 1281fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell return view.startNestedScroll(axes); 1291fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell } 1301fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell 1311fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell public static void stopNestedScroll(View view) { 1321fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell view.stopNestedScroll(); 1331fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell } 1341fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell 1351fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell public static boolean hasNestedScrollingParent(View view) { 1361fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell return view.hasNestedScrollingParent(); 1371fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell } 1381fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell 1391fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell public static boolean dispatchNestedScroll(View view, int dxConsumed, int dyConsumed, 1401fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell int dxUnconsumed, int dyUnconsumed, int[] offsetInWindow) { 1411fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell return view.dispatchNestedScroll(dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, 1421fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell offsetInWindow); 1431fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell } 1441fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell 1451fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell public static boolean dispatchNestedPreScroll(View view, int dx, int dy, int[] consumed, 1461fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell int[] offsetInWindow) { 1471fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell return view.dispatchNestedPreScroll(dx, dy, consumed, offsetInWindow); 1481fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell } 1491fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell 1501fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell public static boolean dispatchNestedFling(View view, float velocityX, float velocityY, 1511fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell boolean consumed) { 1521fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell return view.dispatchNestedFling(velocityX, velocityY, consumed); 1531fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell } 1541fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell 1551fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell public static boolean dispatchNestedPreFling(View view, float velocityX, float velocityY) { 1561fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell return view.dispatchNestedPreFling(velocityX, velocityY); 1571fcce4485ef99aca928ebfb877859c5ecd47716cAdam Powell } 158a966c6cda6a3aa562fcfdb842b6c6b35bdd6a3dcAdam Powell 159a966c6cda6a3aa562fcfdb842b6c6b35bdd6a3dcAdam Powell public static float getZ(View view) { 160a966c6cda6a3aa562fcfdb842b6c6b35bdd6a3dcAdam Powell return view.getZ(); 161a966c6cda6a3aa562fcfdb842b6c6b35bdd6a3dcAdam Powell } 1620bf2af5f2d3034e7c8e4aadb076d258122906e1dDake Gu} 163