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