150dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes/*
250dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes * Copyright (C) 2015 The Android Open Source Project
350dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes *
450dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes * Licensed under the Apache License, Version 2.0 (the "License");
550dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes * you may not use this file except in compliance with the License.
650dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes * You may obtain a copy of the License at
750dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes *
850dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes *      http://www.apache.org/licenses/LICENSE-2.0
950dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes *
1050dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes * Unless required by applicable law or agreed to in writing, software
1150dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes * distributed under the License is distributed on an "AS IS" BASIS,
1250dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1350dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes * See the License for the specific language governing permissions and
1450dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes * limitations under the License.
1550dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes */
1650dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes
1750dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banespackage android.support.design.widget;
1850dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes
19ddf46923b9487ac3a021f01b55d96136d811e8beChris Banesimport android.graphics.PorterDuff;
2050dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banesimport android.os.Build;
2150dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes
2250dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banesclass ViewUtils {
2350dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes
24631f64ec9c6255f38a7f746d7949b6a537c1180fChris Banes    static final ValueAnimatorCompat.Creator DEFAULT_ANIMATOR_CREATOR
25631f64ec9c6255f38a7f746d7949b6a537c1180fChris Banes            = new ValueAnimatorCompat.Creator() {
26631f64ec9c6255f38a7f746d7949b6a537c1180fChris Banes        @Override
27631f64ec9c6255f38a7f746d7949b6a537c1180fChris Banes        public ValueAnimatorCompat createAnimator() {
28631f64ec9c6255f38a7f746d7949b6a537c1180fChris Banes            return new ValueAnimatorCompat(Build.VERSION.SDK_INT >= 12
29631f64ec9c6255f38a7f746d7949b6a537c1180fChris Banes                    ? new ValueAnimatorCompatImplHoneycombMr1()
30f4893cfe0dd5314e8c7835e6c7c3907c8765faf8Kirill Grouchnikov                    : new ValueAnimatorCompatImplGingerbread());
31631f64ec9c6255f38a7f746d7949b6a537c1180fChris Banes        }
32631f64ec9c6255f38a7f746d7949b6a537c1180fChris Banes    };
33631f64ec9c6255f38a7f746d7949b6a537c1180fChris Banes
34631f64ec9c6255f38a7f746d7949b6a537c1180fChris Banes    static ValueAnimatorCompat createAnimator() {
35631f64ec9c6255f38a7f746d7949b6a537c1180fChris Banes        return DEFAULT_ANIMATOR_CREATOR.createAnimator();
36631f64ec9c6255f38a7f746d7949b6a537c1180fChris Banes    }
37631f64ec9c6255f38a7f746d7949b6a537c1180fChris Banes
3819a80415a88ecfae6bbc645cd14b653ed4337648Chris Banes    static boolean objectEquals(Object a, Object b) {
3919a80415a88ecfae6bbc645cd14b653ed4337648Chris Banes        return (a == b) || (a != null && a.equals(b));
4019a80415a88ecfae6bbc645cd14b653ed4337648Chris Banes    }
4119a80415a88ecfae6bbc645cd14b653ed4337648Chris Banes
42ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes    static PorterDuff.Mode parseTintMode(int value, PorterDuff.Mode defaultMode) {
43ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes        switch (value) {
44ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes            case 3:
45ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes                return PorterDuff.Mode.SRC_OVER;
46ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes            case 5:
47ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes                return PorterDuff.Mode.SRC_IN;
48ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes            case 9:
49ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes                return PorterDuff.Mode.SRC_ATOP;
50ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes            case 14:
51ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes                return PorterDuff.Mode.MULTIPLY;
52ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes            case 15:
53ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes                return PorterDuff.Mode.SCREEN;
54ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes            default:
55ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes                return defaultMode;
56ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes        }
57ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes    }
58ddf46923b9487ac3a021f01b55d96136d811e8beChris Banes
5950dfc33a565c4aefe6d5e844c93aa24a74cb80b3Chris Banes}
60