Java Code Examples for android.graphics.drawable.Drawable#parseTintMode()

The following examples show how to use android.graphics.drawable.Drawable#parseTintMode() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: CompoundButton.java    From android_9.0.0_r45 with Apache License 2.0 5 votes vote down vote up
public CompoundButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);

    final TypedArray a = context.obtainStyledAttributes(
            attrs, com.android.internal.R.styleable.CompoundButton, defStyleAttr, defStyleRes);

    final Drawable d = a.getDrawable(com.android.internal.R.styleable.CompoundButton_button);
    if (d != null) {
        setButtonDrawable(d);
    }

    if (a.hasValue(R.styleable.CompoundButton_buttonTintMode)) {
        mButtonTintMode = Drawable.parseTintMode(a.getInt(
                R.styleable.CompoundButton_buttonTintMode, -1), mButtonTintMode);
        mHasButtonTintMode = true;
    }

    if (a.hasValue(R.styleable.CompoundButton_buttonTint)) {
        mButtonTintList = a.getColorStateList(R.styleable.CompoundButton_buttonTint);
        mHasButtonTint = true;
    }

    final boolean checked = a.getBoolean(
            com.android.internal.R.styleable.CompoundButton_checked, false);
    setChecked(checked);
    mCheckedFromResource = true;

    a.recycle();

    applyButtonTint();
}
 
Example 2
Source File: CheckedTextView.java    From android_9.0.0_r45 with Apache License 2.0 5 votes vote down vote up
public CheckedTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);

    final TypedArray a = context.obtainStyledAttributes(
            attrs, R.styleable.CheckedTextView, defStyleAttr, defStyleRes);

    final Drawable d = a.getDrawable(R.styleable.CheckedTextView_checkMark);
    if (d != null) {
        setCheckMarkDrawable(d);
    }

    if (a.hasValue(R.styleable.CheckedTextView_checkMarkTintMode)) {
        mCheckMarkTintMode = Drawable.parseTintMode(a.getInt(
                R.styleable.CheckedTextView_checkMarkTintMode, -1), mCheckMarkTintMode);
        mHasCheckMarkTintMode = true;
    }

    if (a.hasValue(R.styleable.CheckedTextView_checkMarkTint)) {
        mCheckMarkTintList = a.getColorStateList(R.styleable.CheckedTextView_checkMarkTint);
        mHasCheckMarkTint = true;
    }

    mCheckMarkGravity = a.getInt(R.styleable.CheckedTextView_checkMarkGravity, Gravity.END);

    final boolean checked = a.getBoolean(R.styleable.CheckedTextView_checked, false);
    setChecked(checked);

    a.recycle();

    applyCheckMarkTint();
}
 
Example 3
Source File: MenuInflater.java    From android_9.0.0_r45 with Apache License 2.0 4 votes vote down vote up
/**
 * Called when the parser is pointing to an item tag.
 */
public void readItem(AttributeSet attrs) {
    TypedArray a = mContext.obtainStyledAttributes(attrs,
            com.android.internal.R.styleable.MenuItem);

    // Inherit attributes from the group as default value
    itemId = a.getResourceId(com.android.internal.R.styleable.MenuItem_id, defaultItemId);
    final int category = a.getInt(com.android.internal.R.styleable.MenuItem_menuCategory, groupCategory);
    final int order = a.getInt(com.android.internal.R.styleable.MenuItem_orderInCategory, groupOrder);
    itemCategoryOrder = (category & Menu.CATEGORY_MASK) | (order & Menu.USER_MASK);
    itemTitle = a.getText(com.android.internal.R.styleable.MenuItem_title);
    itemTitleCondensed = a.getText(com.android.internal.R.styleable.MenuItem_titleCondensed);
    itemIconResId = a.getResourceId(com.android.internal.R.styleable.MenuItem_icon, 0);
    if (a.hasValue(com.android.internal.R.styleable.MenuItem_iconTintMode)) {
        itemIconTintMode = Drawable.parseTintMode(a.getInt(
                com.android.internal.R.styleable.MenuItem_iconTintMode, -1),
                itemIconTintMode);
    } else {
        // Reset to null so that it's not carried over to the next item
        itemIconTintMode = null;
    }
    if (a.hasValue(com.android.internal.R.styleable.MenuItem_iconTint)) {
        itemIconTintList = a.getColorStateList(
                com.android.internal.R.styleable.MenuItem_iconTint);
    } else {
        // Reset to null so that it's not carried over to the next item
        itemIconTintList = null;
    }

    itemAlphabeticShortcut =
            getShortcut(a.getString(com.android.internal.R.styleable.MenuItem_alphabeticShortcut));
    itemAlphabeticModifiers =
            a.getInt(com.android.internal.R.styleable.MenuItem_alphabeticModifiers,
                    KeyEvent.META_CTRL_ON);
    itemNumericShortcut =
            getShortcut(a.getString(com.android.internal.R.styleable.MenuItem_numericShortcut));
    itemNumericModifiers =
            a.getInt(com.android.internal.R.styleable.MenuItem_numericModifiers,
                    KeyEvent.META_CTRL_ON);
    if (a.hasValue(com.android.internal.R.styleable.MenuItem_checkable)) {
        // Item has attribute checkable, use it
        itemCheckable = a.getBoolean(com.android.internal.R.styleable.MenuItem_checkable, false) ? 1 : 0;
    } else {
        // Item does not have attribute, use the group's (group can have one more state
        // for checkable that represents the exclusive checkable)
        itemCheckable = groupCheckable;
    }
    itemChecked = a.getBoolean(com.android.internal.R.styleable.MenuItem_checked, defaultItemChecked);
    itemVisible = a.getBoolean(com.android.internal.R.styleable.MenuItem_visible, groupVisible);
    itemEnabled = a.getBoolean(com.android.internal.R.styleable.MenuItem_enabled, groupEnabled);
    itemShowAsAction = a.getInt(com.android.internal.R.styleable.MenuItem_showAsAction, -1);
    itemListenerMethodName = a.getString(com.android.internal.R.styleable.MenuItem_onClick);
    itemActionViewLayout = a.getResourceId(com.android.internal.R.styleable.MenuItem_actionLayout, 0);
    itemActionViewClassName = a.getString(com.android.internal.R.styleable.MenuItem_actionViewClass);
    itemActionProviderClassName = a.getString(com.android.internal.R.styleable.MenuItem_actionProviderClass);

    final boolean hasActionProvider = itemActionProviderClassName != null;
    if (hasActionProvider && itemActionViewLayout == 0 && itemActionViewClassName == null) {
        itemActionProvider = newInstance(itemActionProviderClassName,
                    ACTION_PROVIDER_CONSTRUCTOR_SIGNATURE,
                    mActionProviderConstructorArguments);
    } else {
        if (hasActionProvider) {
            Log.w(LOG_TAG, "Ignoring attribute 'actionProviderClass'."
                    + " Action view already specified.");
        }
        itemActionProvider = null;
    }

    itemContentDescription =
            a.getText(com.android.internal.R.styleable.MenuItem_contentDescription);
    itemTooltipText = a.getText(com.android.internal.R.styleable.MenuItem_tooltipText);

    a.recycle();

    itemAdded = false;
}
 
Example 4
Source File: Switch.java    From android_9.0.0_r45 with Apache License 2.0 4 votes vote down vote up
/**
 * Construct a new Switch with a default style determined by the given theme
 * attribute or style resource, overriding specific style attributes as
 * requested.
 *
 * @param context The Context that will determine this widget's theming.
 * @param attrs Specification of attributes that should deviate from the
 *        default styling.
 * @param defStyleAttr An attribute in the current theme that contains a
 *        reference to a style resource that supplies default values for
 *        the view. Can be 0 to not look for defaults.
 * @param defStyleRes A resource identifier of a style resource that
 *        supplies default values for the view, used only if
 *        defStyleAttr is 0 or can not be found in the theme. Can be 0
 *        to not look for defaults.
 */
public Switch(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);

    mTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);

    final Resources res = getResources();
    mTextPaint.density = res.getDisplayMetrics().density;
    mTextPaint.setCompatibilityScaling(res.getCompatibilityInfo().applicationScale);

    final TypedArray a = context.obtainStyledAttributes(
            attrs, com.android.internal.R.styleable.Switch, defStyleAttr, defStyleRes);
    mThumbDrawable = a.getDrawable(com.android.internal.R.styleable.Switch_thumb);
    if (mThumbDrawable != null) {
        mThumbDrawable.setCallback(this);
    }
    mTrackDrawable = a.getDrawable(com.android.internal.R.styleable.Switch_track);
    if (mTrackDrawable != null) {
        mTrackDrawable.setCallback(this);
    }
    mTextOn = a.getText(com.android.internal.R.styleable.Switch_textOn);
    mTextOff = a.getText(com.android.internal.R.styleable.Switch_textOff);
    mShowText = a.getBoolean(com.android.internal.R.styleable.Switch_showText, true);
    mThumbTextPadding = a.getDimensionPixelSize(
            com.android.internal.R.styleable.Switch_thumbTextPadding, 0);
    mSwitchMinWidth = a.getDimensionPixelSize(
            com.android.internal.R.styleable.Switch_switchMinWidth, 0);
    mSwitchPadding = a.getDimensionPixelSize(
            com.android.internal.R.styleable.Switch_switchPadding, 0);
    mSplitTrack = a.getBoolean(com.android.internal.R.styleable.Switch_splitTrack, false);

    mUseFallbackLineSpacing = context.getApplicationInfo().targetSdkVersion >= VERSION_CODES.P;

    ColorStateList thumbTintList = a.getColorStateList(
            com.android.internal.R.styleable.Switch_thumbTint);
    if (thumbTintList != null) {
        mThumbTintList = thumbTintList;
        mHasThumbTint = true;
    }
    PorterDuff.Mode thumbTintMode = Drawable.parseTintMode(
            a.getInt(com.android.internal.R.styleable.Switch_thumbTintMode, -1), null);
    if (mThumbTintMode != thumbTintMode) {
        mThumbTintMode = thumbTintMode;
        mHasThumbTintMode = true;
    }
    if (mHasThumbTint || mHasThumbTintMode) {
        applyThumbTint();
    }

    ColorStateList trackTintList = a.getColorStateList(
            com.android.internal.R.styleable.Switch_trackTint);
    if (trackTintList != null) {
        mTrackTintList = trackTintList;
        mHasTrackTint = true;
    }
    PorterDuff.Mode trackTintMode = Drawable.parseTintMode(
            a.getInt(com.android.internal.R.styleable.Switch_trackTintMode, -1), null);
    if (mTrackTintMode != trackTintMode) {
        mTrackTintMode = trackTintMode;
        mHasTrackTintMode = true;
    }
    if (mHasTrackTint || mHasTrackTintMode) {
        applyTrackTint();
    }

    final int appearance = a.getResourceId(
            com.android.internal.R.styleable.Switch_switchTextAppearance, 0);
    if (appearance != 0) {
        setSwitchTextAppearance(context, appearance);
    }
    a.recycle();

    final ViewConfiguration config = ViewConfiguration.get(context);
    mTouchSlop = config.getScaledTouchSlop();
    mMinFlingVelocity = config.getScaledMinimumFlingVelocity();

    // Refresh display with current params
    refreshDrawableState();
    setChecked(isChecked());
}
 
Example 5
Source File: ImageView.java    From android_9.0.0_r45 with Apache License 2.0 4 votes vote down vote up
public ImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr,
        int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);

    initImageView();

    // ImageView is not important by default, unless app developer overrode attribute.
    if (getImportantForAutofill() == IMPORTANT_FOR_AUTOFILL_AUTO) {
        setImportantForAutofill(IMPORTANT_FOR_AUTOFILL_NO);
    }

    final TypedArray a = context.obtainStyledAttributes(
            attrs, R.styleable.ImageView, defStyleAttr, defStyleRes);

    final Drawable d = a.getDrawable(R.styleable.ImageView_src);
    if (d != null) {
        setImageDrawable(d);
    }

    mBaselineAlignBottom = a.getBoolean(R.styleable.ImageView_baselineAlignBottom, false);
    mBaseline = a.getDimensionPixelSize(R.styleable.ImageView_baseline, -1);

    setAdjustViewBounds(a.getBoolean(R.styleable.ImageView_adjustViewBounds, false));
    setMaxWidth(a.getDimensionPixelSize(R.styleable.ImageView_maxWidth, Integer.MAX_VALUE));
    setMaxHeight(a.getDimensionPixelSize(R.styleable.ImageView_maxHeight, Integer.MAX_VALUE));

    final int index = a.getInt(R.styleable.ImageView_scaleType, -1);
    if (index >= 0) {
        setScaleType(sScaleTypeArray[index]);
    }

    if (a.hasValue(R.styleable.ImageView_tint)) {
        mDrawableTintList = a.getColorStateList(R.styleable.ImageView_tint);
        mHasDrawableTint = true;

        // Prior to L, this attribute would always set a color filter with
        // blending mode SRC_ATOP. Preserve that default behavior.
        mDrawableTintMode = PorterDuff.Mode.SRC_ATOP;
        mHasDrawableTintMode = true;
    }

    if (a.hasValue(R.styleable.ImageView_tintMode)) {
        mDrawableTintMode = Drawable.parseTintMode(a.getInt(
                R.styleable.ImageView_tintMode, -1), mDrawableTintMode);
        mHasDrawableTintMode = true;
    }

    applyImageTint();

    final int alpha = a.getInt(R.styleable.ImageView_drawableAlpha, 255);
    if (alpha != 255) {
        setImageAlpha(alpha);
    }

    mCropToPadding = a.getBoolean(
            R.styleable.ImageView_cropToPadding, false);

    a.recycle();

    //need inflate syntax/reader for matrix
}
 
Example 6
Source File: AbsSeekBar.java    From android_9.0.0_r45 with Apache License 2.0 4 votes vote down vote up
public AbsSeekBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);

    final TypedArray a = context.obtainStyledAttributes(
            attrs, R.styleable.SeekBar, defStyleAttr, defStyleRes);

    final Drawable thumb = a.getDrawable(R.styleable.SeekBar_thumb);
    setThumb(thumb);

    if (a.hasValue(R.styleable.SeekBar_thumbTintMode)) {
        mThumbTintMode = Drawable.parseTintMode(a.getInt(
                R.styleable.SeekBar_thumbTintMode, -1), mThumbTintMode);
        mHasThumbTintMode = true;
    }

    if (a.hasValue(R.styleable.SeekBar_thumbTint)) {
        mThumbTintList = a.getColorStateList(R.styleable.SeekBar_thumbTint);
        mHasThumbTint = true;
    }

    final Drawable tickMark = a.getDrawable(R.styleable.SeekBar_tickMark);
    setTickMark(tickMark);

    if (a.hasValue(R.styleable.SeekBar_tickMarkTintMode)) {
        mTickMarkTintMode = Drawable.parseTintMode(a.getInt(
                R.styleable.SeekBar_tickMarkTintMode, -1), mTickMarkTintMode);
        mHasTickMarkTintMode = true;
    }

    if (a.hasValue(R.styleable.SeekBar_tickMarkTint)) {
        mTickMarkTintList = a.getColorStateList(R.styleable.SeekBar_tickMarkTint);
        mHasTickMarkTint = true;
    }

    mSplitTrack = a.getBoolean(R.styleable.SeekBar_splitTrack, false);

    // Guess thumb offset if thumb != null, but allow layout to override.
    final int thumbOffset = a.getDimensionPixelOffset(
            R.styleable.SeekBar_thumbOffset, getThumbOffset());
    setThumbOffset(thumbOffset);

    final boolean useDisabledAlpha = a.getBoolean(R.styleable.SeekBar_useDisabledAlpha, true);
    a.recycle();

    if (useDisabledAlpha) {
        final TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.Theme, 0, 0);
        mDisabledAlpha = ta.getFloat(R.styleable.Theme_disabledAlpha, 0.5f);
        ta.recycle();
    } else {
        mDisabledAlpha = 1.0f;
    }

    applyThumbTint();
    applyTickMarkTint();

    mScaledTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}