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