Search in sources :

Example 56 with TypedValue

use of android.util.TypedValue in project XobotOS by xamarin.

the class AnimatorInflater method loadAnimator.

/**
     * Creates a new animation whose parameters come from the specified context and
     * attributes set.
     *
     * @param context the application environment
     * @param attrs the set of attributes holding the animation parameters
     */
private static ValueAnimator loadAnimator(Context context, AttributeSet attrs, ValueAnimator anim) throws NotFoundException {
    TypedArray a = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.Animator);
    long duration = a.getInt(com.android.internal.R.styleable.Animator_duration, 0);
    long startDelay = a.getInt(com.android.internal.R.styleable.Animator_startOffset, 0);
    int valueType = a.getInt(com.android.internal.R.styleable.Animator_valueType, VALUE_TYPE_FLOAT);
    if (anim == null) {
        anim = new ValueAnimator();
    }
    TypeEvaluator evaluator = null;
    int valueFromIndex = com.android.internal.R.styleable.Animator_valueFrom;
    int valueToIndex = com.android.internal.R.styleable.Animator_valueTo;
    boolean getFloats = (valueType == VALUE_TYPE_FLOAT);
    TypedValue tvFrom = a.peekValue(valueFromIndex);
    boolean hasFrom = (tvFrom != null);
    int fromType = hasFrom ? tvFrom.type : 0;
    TypedValue tvTo = a.peekValue(valueToIndex);
    boolean hasTo = (tvTo != null);
    int toType = hasTo ? tvTo.type : 0;
    if ((hasFrom && (fromType >= TypedValue.TYPE_FIRST_COLOR_INT) && (fromType <= TypedValue.TYPE_LAST_COLOR_INT)) || (hasTo && (toType >= TypedValue.TYPE_FIRST_COLOR_INT) && (toType <= TypedValue.TYPE_LAST_COLOR_INT))) {
        // special case for colors: ignore valueType and get ints
        getFloats = false;
        anim.setEvaluator(new ArgbEvaluator());
    }
    if (getFloats) {
        float valueFrom;
        float valueTo;
        if (hasFrom) {
            if (fromType == TypedValue.TYPE_DIMENSION) {
                valueFrom = a.getDimension(valueFromIndex, 0f);
            } else {
                valueFrom = a.getFloat(valueFromIndex, 0f);
            }
            if (hasTo) {
                if (toType == TypedValue.TYPE_DIMENSION) {
                    valueTo = a.getDimension(valueToIndex, 0f);
                } else {
                    valueTo = a.getFloat(valueToIndex, 0f);
                }
                anim.setFloatValues(valueFrom, valueTo);
            } else {
                anim.setFloatValues(valueFrom);
            }
        } else {
            if (toType == TypedValue.TYPE_DIMENSION) {
                valueTo = a.getDimension(valueToIndex, 0f);
            } else {
                valueTo = a.getFloat(valueToIndex, 0f);
            }
            anim.setFloatValues(valueTo);
        }
    } else {
        int valueFrom;
        int valueTo;
        if (hasFrom) {
            if (fromType == TypedValue.TYPE_DIMENSION) {
                valueFrom = (int) a.getDimension(valueFromIndex, 0f);
            } else if ((fromType >= TypedValue.TYPE_FIRST_COLOR_INT) && (fromType <= TypedValue.TYPE_LAST_COLOR_INT)) {
                valueFrom = a.getColor(valueFromIndex, 0);
            } else {
                valueFrom = a.getInt(valueFromIndex, 0);
            }
            if (hasTo) {
                if (toType == TypedValue.TYPE_DIMENSION) {
                    valueTo = (int) a.getDimension(valueToIndex, 0f);
                } else if ((toType >= TypedValue.TYPE_FIRST_COLOR_INT) && (toType <= TypedValue.TYPE_LAST_COLOR_INT)) {
                    valueTo = a.getColor(valueToIndex, 0);
                } else {
                    valueTo = a.getInt(valueToIndex, 0);
                }
                anim.setIntValues(valueFrom, valueTo);
            } else {
                anim.setIntValues(valueFrom);
            }
        } else {
            if (hasTo) {
                if (toType == TypedValue.TYPE_DIMENSION) {
                    valueTo = (int) a.getDimension(valueToIndex, 0f);
                } else if ((toType >= TypedValue.TYPE_FIRST_COLOR_INT) && (toType <= TypedValue.TYPE_LAST_COLOR_INT)) {
                    valueTo = a.getColor(valueToIndex, 0);
                } else {
                    valueTo = a.getInt(valueToIndex, 0);
                }
                anim.setIntValues(valueTo);
            }
        }
    }
    anim.setDuration(duration);
    anim.setStartDelay(startDelay);
    if (a.hasValue(com.android.internal.R.styleable.Animator_repeatCount)) {
        anim.setRepeatCount(a.getInt(com.android.internal.R.styleable.Animator_repeatCount, 0));
    }
    if (a.hasValue(com.android.internal.R.styleable.Animator_repeatMode)) {
        anim.setRepeatMode(a.getInt(com.android.internal.R.styleable.Animator_repeatMode, ValueAnimator.RESTART));
    }
    if (evaluator != null) {
        anim.setEvaluator(evaluator);
    }
    final int resID = a.getResourceId(com.android.internal.R.styleable.Animator_interpolator, 0);
    if (resID > 0) {
        anim.setInterpolator(AnimationUtils.loadInterpolator(context, resID));
    }
    a.recycle();
    return anim;
}
Also used : TypedArray(android.content.res.TypedArray) TypedValue(android.util.TypedValue)

Example 57 with TypedValue

use of android.util.TypedValue in project platform_frameworks_base by android.

the class PackageParser method parseUsesPermission.

private boolean parseUsesPermission(Package pkg, Resources res, XmlResourceParser parser) throws XmlPullParserException, IOException {
    TypedArray sa = res.obtainAttributes(parser, com.android.internal.R.styleable.AndroidManifestUsesPermission);
    // Note: don't allow this value to be a reference to a resource
    // that may change.
    String name = sa.getNonResourceString(com.android.internal.R.styleable.AndroidManifestUsesPermission_name);
    int maxSdkVersion = 0;
    TypedValue val = sa.peekValue(com.android.internal.R.styleable.AndroidManifestUsesPermission_maxSdkVersion);
    if (val != null) {
        if (val.type >= TypedValue.TYPE_FIRST_INT && val.type <= TypedValue.TYPE_LAST_INT) {
            maxSdkVersion = val.data;
        }
    }
    sa.recycle();
    if ((maxSdkVersion == 0) || (maxSdkVersion >= Build.VERSION.RESOURCES_SDK_INT)) {
        if (name != null) {
            int index = pkg.requestedPermissions.indexOf(name);
            if (index == -1) {
                pkg.requestedPermissions.add(name.intern());
            } else {
                Slog.w(TAG, "Ignoring duplicate uses-permissions/uses-permissions-sdk-m: " + name + " in package: " + pkg.packageName + " at: " + parser.getPositionDescription());
            }
        }
    }
    XmlUtils.skipCurrentTag(parser);
    return true;
}
Also used : TypedArray(android.content.res.TypedArray) TypedValue(android.util.TypedValue)

Example 58 with TypedValue

use of android.util.TypedValue in project platform_frameworks_base by android.

the class Resources method getColorStateList.

/**
     * Returns a themed color state list associated with a particular resource
     * ID. The resource may contain either a single raw color value or a
     * complex {@link ColorStateList} holding multiple possible colors.
     *
     * @param id The desired resource identifier of a {@link ColorStateList},
     *           as generated by the aapt tool. This integer encodes the
     *           package, type, and resource entry. The value 0 is an invalid
     *           identifier.
     * @param theme The theme used to style the color attributes, may be
     *              {@code null}.
     *
     * @throws NotFoundException Throws NotFoundException if the given ID does
     *         not exist.
     *
     * @return A themed ColorStateList object containing either a single solid
     *         color or multiple colors that can be selected based on a state.
     */
@Nullable
public ColorStateList getColorStateList(@ColorRes int id, @Nullable Theme theme) throws NotFoundException {
    final TypedValue value = obtainTempTypedValue();
    try {
        final ResourcesImpl impl = mResourcesImpl;
        impl.getValue(id, value, true);
        return impl.loadColorStateList(this, value, id, theme);
    } finally {
        releaseTempTypedValue(value);
    }
}
Also used : TypedValue(android.util.TypedValue) Nullable(android.annotation.Nullable)

Example 59 with TypedValue

use of android.util.TypedValue in project platform_frameworks_base by android.

the class Resources method getDimension.

/**
     * Retrieve a dimensional for a particular resource ID.  Unit 
     * conversions are based on the current {@link DisplayMetrics} associated
     * with the resources.
     * 
     * @param id The desired resource identifier, as generated by the aapt
     *           tool. This integer encodes the package, type, and resource
     *           entry. The value 0 is an invalid identifier.
     * 
     * @return Resource dimension value multiplied by the appropriate 
     * metric.
     * 
     * @throws NotFoundException Throws NotFoundException if the given ID does not exist.
     *
     * @see #getDimensionPixelOffset
     * @see #getDimensionPixelSize
     */
public float getDimension(@DimenRes int id) throws NotFoundException {
    final TypedValue value = obtainTempTypedValue();
    try {
        final ResourcesImpl impl = mResourcesImpl;
        impl.getValue(id, value, true);
        if (value.type == TypedValue.TYPE_DIMENSION) {
            return TypedValue.complexToDimension(value.data, impl.getDisplayMetrics());
        }
        throw new NotFoundException("Resource ID #0x" + Integer.toHexString(id) + " type #0x" + Integer.toHexString(value.type) + " is not valid");
    } finally {
        releaseTempTypedValue(value);
    }
}
Also used : TypedValue(android.util.TypedValue)

Example 60 with TypedValue

use of android.util.TypedValue in project platform_frameworks_base by android.

the class Resources method getDimensionPixelOffset.

/**
     * Retrieve a dimensional for a particular resource ID for use
     * as an offset in raw pixels.  This is the same as
     * {@link #getDimension}, except the returned value is converted to
     * integer pixels for you.  An offset conversion involves simply
     * truncating the base value to an integer.
     * 
     * @param id The desired resource identifier, as generated by the aapt
     *           tool. This integer encodes the package, type, and resource
     *           entry. The value 0 is an invalid identifier.
     * 
     * @return Resource dimension value multiplied by the appropriate 
     * metric and truncated to integer pixels.
     * 
     * @throws NotFoundException Throws NotFoundException if the given ID does not exist.
     *
     * @see #getDimension
     * @see #getDimensionPixelSize
     */
public int getDimensionPixelOffset(@DimenRes int id) throws NotFoundException {
    final TypedValue value = obtainTempTypedValue();
    try {
        final ResourcesImpl impl = mResourcesImpl;
        impl.getValue(id, value, true);
        if (value.type == TypedValue.TYPE_DIMENSION) {
            return TypedValue.complexToDimensionPixelOffset(value.data, impl.getDisplayMetrics());
        }
        throw new NotFoundException("Resource ID #0x" + Integer.toHexString(id) + " type #0x" + Integer.toHexString(value.type) + " is not valid");
    } finally {
        releaseTempTypedValue(value);
    }
}
Also used : TypedValue(android.util.TypedValue)

Aggregations

TypedValue (android.util.TypedValue)844 TypedArray (android.content.res.TypedArray)190 Resources (android.content.res.Resources)92 ContextThemeWrapper (android.view.ContextThemeWrapper)52 Context (android.content.Context)50 Drawable (android.graphics.drawable.Drawable)49 XmlPullParserException (org.xmlpull.v1.XmlPullParserException)46 TextView (android.widget.TextView)44 Paint (android.graphics.Paint)41 IOException (java.io.IOException)39 AttributeSet (android.util.AttributeSet)34 View (android.view.View)30 XmlResourceParser (android.content.res.XmlResourceParser)29 Point (android.graphics.Point)26 ResourceValue (com.android.ide.common.rendering.api.ResourceValue)26 ColorStateList (android.content.res.ColorStateList)23 DisplayMetrics (android.util.DisplayMetrics)23 LinearLayout (android.widget.LinearLayout)20 Bundle (android.os.Bundle)19 SpannableString (android.text.SpannableString)19