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