184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler/* 284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * Copyright (C) 2015 The Android Open Source Project 384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * 484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 584765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * you may not use this file except in compliance with the License. 684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * You may obtain a copy of the License at 784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * 884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * http://www.apache.org/licenses/LICENSE-2.0 984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * 1084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * Unless required by applicable law or agreed to in writing, software 1184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 1284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * See the License for the specific language governing permissions and 1484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * limitations under the License. 1584765eaea7da18d0576db557959129e9d0db8e8cTony Mantler */ 1684765eaea7da18d0576db557959129e9d0db8e8cTony Mantlerpackage android.support.v4.content.res; 1784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 183fadd62b614e4a69aefe920aac640bdb629e502eJason Monkimport android.content.Context; 1984765eaea7da18d0576db557959129e9d0db8e8cTony Mantlerimport android.content.res.TypedArray; 2084765eaea7da18d0576db557959129e9d0db8e8cTony Mantlerimport android.graphics.drawable.Drawable; 2184765eaea7da18d0576db557959129e9d0db8e8cTony Mantlerimport android.support.annotation.AnyRes; 2284765eaea7da18d0576db557959129e9d0db8e8cTony Mantlerimport android.support.annotation.StyleableRes; 233fadd62b614e4a69aefe920aac640bdb629e502eJason Monkimport android.util.TypedValue; 2484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 2584765eaea7da18d0576db557959129e9d0db8e8cTony Mantler/** 2684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * Compat methods for accessing TypedArray values. 2784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * 2884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler * @hide 2984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler */ 3084765eaea7da18d0576db557959129e9d0db8e8cTony Mantlerpublic class TypedArrayUtils { 3184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler public static boolean getBoolean(TypedArray a, @StyleableRes int index, 3284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler @StyleableRes int fallbackIndex, boolean defaultValue) { 3384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler boolean val = a.getBoolean(fallbackIndex, defaultValue); 3484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler return a.getBoolean(index, val); 3584765eaea7da18d0576db557959129e9d0db8e8cTony Mantler } 3684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 3784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler public static Drawable getDrawable(TypedArray a, @StyleableRes int index, 3884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler @StyleableRes int fallbackIndex) { 3984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler Drawable val = a.getDrawable(index); 4084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler if (val == null) { 4184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler val = a.getDrawable(fallbackIndex); 4284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler } 4384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler return val; 4484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler } 4584765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 4684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler public static int getInt(TypedArray a, @StyleableRes int index, 4784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler @StyleableRes int fallbackIndex, int defaultValue) { 4884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler int val = a.getInt(fallbackIndex, defaultValue); 4984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler return a.getInt(index, val); 5084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler } 5184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 5284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler public static @AnyRes int getResourceId(TypedArray a, @StyleableRes int index, 5384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler @StyleableRes int fallbackIndex, @AnyRes int defaultValue) { 5484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler int val = a.getResourceId(fallbackIndex, defaultValue); 5584765eaea7da18d0576db557959129e9d0db8e8cTony Mantler return a.getResourceId(index, val); 5684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler } 5784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 5884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler public static String getString(TypedArray a, @StyleableRes int index, 5984765eaea7da18d0576db557959129e9d0db8e8cTony Mantler @StyleableRes int fallbackIndex) { 6084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler String val = a.getString(index); 6184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler if (val == null) { 6284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler val = a.getString(fallbackIndex); 6384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler } 6484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler return val; 6584765eaea7da18d0576db557959129e9d0db8e8cTony Mantler } 6684765eaea7da18d0576db557959129e9d0db8e8cTony Mantler 6784765eaea7da18d0576db557959129e9d0db8e8cTony Mantler public static CharSequence[] getTextArray(TypedArray a, @StyleableRes int index, 6884765eaea7da18d0576db557959129e9d0db8e8cTony Mantler @StyleableRes int fallbackIndex) { 69876e6b4c4ca725548ad25452c2362e253dc12f97Tony Mantler CharSequence[] val = a.getTextArray(index); 7084765eaea7da18d0576db557959129e9d0db8e8cTony Mantler if (val == null) { 7184765eaea7da18d0576db557959129e9d0db8e8cTony Mantler val = a.getTextArray(fallbackIndex); 7284765eaea7da18d0576db557959129e9d0db8e8cTony Mantler } 7384765eaea7da18d0576db557959129e9d0db8e8cTony Mantler return val; 7484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler } 753fadd62b614e4a69aefe920aac640bdb629e502eJason Monk 763fadd62b614e4a69aefe920aac640bdb629e502eJason Monk public static int getAttr(Context context, int attr, int fallbackAttr) { 773fadd62b614e4a69aefe920aac640bdb629e502eJason Monk TypedValue value = new TypedValue(); 783fadd62b614e4a69aefe920aac640bdb629e502eJason Monk context.getTheme().resolveAttribute(attr, value, true); 793fadd62b614e4a69aefe920aac640bdb629e502eJason Monk if (value.resourceId != 0) { 803fadd62b614e4a69aefe920aac640bdb629e502eJason Monk return attr; 813fadd62b614e4a69aefe920aac640bdb629e502eJason Monk } 823fadd62b614e4a69aefe920aac640bdb629e502eJason Monk return fallbackAttr; 833fadd62b614e4a69aefe920aac640bdb629e502eJason Monk } 8484765eaea7da18d0576db557959129e9d0db8e8cTony Mantler} 85