androidx.appcompat.widget.TintTypedArray Java Examples
The following examples show how to use
androidx.appcompat.widget.TintTypedArray.
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: CollapsingTextHelper.java From UIWidget with Apache License 2.0 | 6 votes |
public void setCollapsedTextAppearance(int resId) { TintTypedArray a = TintTypedArray.obtainStyledAttributes(mView.getContext(), resId, R.styleable.CollapsingTextAppearance); if (a.hasValue(R.styleable.CollapsingTextAppearance_android_textColor)) { mCollapsedTextColor = a.getColorStateList(R.styleable.CollapsingTextAppearance_android_textColor); } if (a.hasValue(R.styleable.CollapsingTextAppearance_android_textSize)) { mCollapsedTextSize = a.getDimensionPixelSize(R.styleable.CollapsingTextAppearance_android_textSize, (int) mCollapsedTextSize); } mCollapsedShadowColor = a.getInt(R.styleable.CollapsingTextAppearance_android_shadowColor, 0); mCollapsedShadowDx = a.getFloat(R.styleable.CollapsingTextAppearance_android_shadowDx, 0); mCollapsedShadowDy = a.getFloat(R.styleable.CollapsingTextAppearance_android_shadowDy, 0); mCollapsedShadowRadius = a.getFloat(R.styleable.CollapsingTextAppearance_android_shadowRadius, 0); a.recycle(); if (Build.VERSION.SDK_INT >= 16) { mCollapsedTypeface = readFontFamilyTypeface(resId); } recalculate(); }
Example #2
Source File: CollapsingTextHelper.java From UIWidget with Apache License 2.0 | 6 votes |
/** * 设置最大化状态Text样式id * * @param resId */ public void setExpandedTextAppearance(int resId) { TintTypedArray a = TintTypedArray.obtainStyledAttributes(mView.getContext(), resId, R.styleable.CollapsingTextAppearance); if (a.hasValue(R.styleable.CollapsingTextAppearance_android_textColor)) { mExpandedTextColor = a.getColorStateList(R.styleable.CollapsingTextAppearance_android_textColor); } if (a.hasValue(R.styleable.CollapsingTextAppearance_android_textSize)) { mExpandedTextSize = a.getDimensionPixelSize(R.styleable.CollapsingTextAppearance_android_textSize, (int) mExpandedTextSize); } mExpandedShadowColor = a.getInt( R.styleable.CollapsingTextAppearance_android_shadowColor, 0); mExpandedShadowDx = a.getFloat( R.styleable.CollapsingTextAppearance_android_shadowDx, 0); mExpandedShadowDy = a.getFloat( R.styleable.CollapsingTextAppearance_android_shadowDy, 0); mExpandedShadowRadius = a.getFloat( R.styleable.CollapsingTextAppearance_android_shadowRadius, 0); a.recycle(); if (Build.VERSION.SDK_INT >= 16) { mExpandedTypeface = readFontFamilyTypeface(resId); } recalculate(); }
Example #3
Source File: MaterialResources.java From material-components-android with Apache License 2.0 | 6 votes |
/** * Returns the {@link ColorStateList} from the given {@link TintTypedArray} attributes. The * resource can include themeable attributes, regardless of API level. */ @Nullable public static ColorStateList getColorStateList( @NonNull Context context, @NonNull TintTypedArray attributes, @StyleableRes int index) { if (attributes.hasValue(index)) { int resourceId = attributes.getResourceId(index, 0); if (resourceId != 0) { ColorStateList value = AppCompatResources.getColorStateList(context, resourceId); if (value != null) { return value; } } } // Reading a single color with getColorStateList() on API 15 and below doesn't always correctly // read the value. Instead we'll first try to read the color directly here. if (VERSION.SDK_INT <= VERSION_CODES.ICE_CREAM_SANDWICH_MR1) { int color = attributes.getColor(index, -1); if (color != -1) { return ColorStateList.valueOf(color); } } return attributes.getColorStateList(index); }
Example #4
Source File: NavigationView.java From material-components-android with Apache License 2.0 | 6 votes |
/** * Creates a {@link MaterialShapeDrawable} to use as the {@code itemBackground} and wraps it in an * {@link InsetDrawable} for margins. * * @param a The TintTypedArray containing the resolved NavigationView style attributes. */ @NonNull private final Drawable createDefaultItemBackground(@NonNull TintTypedArray a) { int shapeAppearanceResId = a.getResourceId(R.styleable.NavigationView_itemShapeAppearance, 0); int shapeAppearanceOverlayResId = a.getResourceId(R.styleable.NavigationView_itemShapeAppearanceOverlay, 0); MaterialShapeDrawable materialShapeDrawable = new MaterialShapeDrawable( ShapeAppearanceModel.builder( getContext(), shapeAppearanceResId, shapeAppearanceOverlayResId) .build()); materialShapeDrawable.setFillColor( MaterialResources.getColorStateList( getContext(), a, R.styleable.NavigationView_itemShapeFillColor)); int insetLeft = a.getDimensionPixelSize(R.styleable.NavigationView_itemShapeInsetStart, 0); int insetTop = a.getDimensionPixelSize(R.styleable.NavigationView_itemShapeInsetTop, 0); int insetRight = a.getDimensionPixelSize(R.styleable.NavigationView_itemShapeInsetEnd, 0); int insetBottom = a.getDimensionPixelSize(R.styleable.NavigationView_itemShapeInsetBottom, 0); return new InsetDrawable(materialShapeDrawable, insetLeft, insetTop, insetRight, insetBottom); }
Example #5
Source File: DrawableHelper.java From GetApk with MIT License | 5 votes |
public static int getThemeAttrColor(Context context, int attr) { TintTypedArray a = TintTypedArray.obtainStyledAttributes(context, null, new int[]{attr}); try { return a.getColor(0, 0); } finally { a.recycle(); } }
Example #6
Source File: TurbolinksToolbar.java From react-native-turbolinks with MIT License | 5 votes |
@SuppressLint("RestrictedApi") private int getThemeAttrColor(Context context, int attr) { TEMP_ARRAY[0] = attr; TintTypedArray a = TintTypedArray.obtainStyledAttributes(context, null, TEMP_ARRAY); try { return a.getColor(0, 0); } finally { a.recycle(); } }
Example #7
Source File: BottomNavigationViewInner.java From smart-farmer-android with Apache License 2.0 | 5 votes |
public BottomNavigationViewInner(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); TintTypedArray a = ThemeEnforcement.obtainTintedStyledAttributes(context, attrs, R.styleable.BottomNavigationView, defStyleAttr, R.style.Widget_Design_BottomNavigationView, new int[]{R.styleable.BottomNavigationView_itemTextAppearanceInactive, R.styleable.BottomNavigationView_itemTextAppearanceActive}); // clear if you don't have set item icon tint list if (!a.hasValue(R.styleable.BottomNavigationView_itemIconTint)) { clearIconTintColor(); } a.recycle(); }
Example #8
Source File: TabItem.java From material-components-android with Apache License 2.0 | 5 votes |
public TabItem(Context context, AttributeSet attrs) { super(context, attrs); final TintTypedArray a = TintTypedArray.obtainStyledAttributes(context, attrs, R.styleable.TabItem); text = a.getText(R.styleable.TabItem_android_text); icon = a.getDrawable(R.styleable.TabItem_android_icon); customLayout = a.getResourceId(R.styleable.TabItem_android_layout, 0); a.recycle(); }
Example #9
Source File: NavigationView.java From material-components-android with Apache License 2.0 | 4 votes |
private boolean hasShapeAppearance(@NonNull TintTypedArray a) { return a.hasValue(R.styleable.NavigationView_itemShapeAppearance) || a.hasValue(R.styleable.NavigationView_itemShapeAppearanceOverlay); }
Example #10
Source File: ThemeEnforcement.java From material-components-android with Apache License 2.0 | 4 votes |
/** * Safely retrieve styled attribute information in this Context's theme using {@link * androidx.appcompat.widget.TintTypedArray}, after checking whether the theme is compatible with * the component's given style. * * <p>Set a component's {@link R.attr#enforceMaterialTheme enforceMaterialTheme} attribute to * <code>true</code> to ensure that the Context's theme inherits from {@link * R.style#Theme_MaterialComponents Theme.MaterialComponents}. For example, you'll want to do this * if the component uses a new attribute defined in <code>Theme.MaterialComponents</code> like * {@link R.attr#colorSecondary colorSecondary}. * * <p>New components should prefer to use {@link #obtainStyledAttributes(Context, AttributeSet, * int[], int, int, int...)}, and use * {@link com.google.android.material.resources.MaterialResources} * as a replacement for the functionality in {@link androidx.appcompat.widget.TintTypedArray}. * * <p>If {@link R.attr#enforceTextAppearance} attribute is set to <code>true</code> and * textAppearanceResIndices parameter is specified and has non-negative values, this will also * check that a valid TextAppearance is set on this component for the text appearance resources * passed in. */ public static TintTypedArray obtainTintedStyledAttributes( @NonNull Context context, AttributeSet set, @NonNull @StyleableRes int[] attrs, @AttrRes int defStyleAttr, @StyleRes int defStyleRes, @StyleableRes int... textAppearanceResIndices) { // First, check for a compatible theme. checkCompatibleTheme(context, set, defStyleAttr, defStyleRes); // Then, check that a textAppearance is set if enforceTextAppearance attribute is true checkTextAppearance(context, set, attrs, defStyleAttr, defStyleRes, textAppearanceResIndices); // Then, safely retrieve the styled attribute information. return TintTypedArray.obtainStyledAttributes(context, set, attrs, defStyleAttr, defStyleRes); }
Example #11
Source File: MaterialProgressBar.java From MaterialProgressBar with Apache License 2.0 | 4 votes |
@SuppressWarnings("RestrictedApi") private void init(@Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { Context context = getContext(); TintTypedArray a = TintTypedArray.obtainStyledAttributes(context, attrs, R.styleable.MaterialProgressBar, defStyleAttr, defStyleRes); mProgressStyle = a.getInt(R.styleable.MaterialProgressBar_mpb_progressStyle, PROGRESS_STYLE_CIRCULAR); boolean setBothDrawables = a.getBoolean( R.styleable.MaterialProgressBar_mpb_setBothDrawables, false); boolean useIntrinsicPadding = a.getBoolean( R.styleable.MaterialProgressBar_mpb_useIntrinsicPadding, true); boolean showProgressBackground = a.getBoolean( R.styleable.MaterialProgressBar_mpb_showProgressBackground, mProgressStyle == PROGRESS_STYLE_HORIZONTAL); int determinateCircularProgressStyle = a.getInt( R.styleable.MaterialProgressBar_mpb_determinateCircularProgressStyle, DETERMINATE_CIRCULAR_PROGRESS_STYLE_NORMAL); if (a.hasValue(R.styleable.MaterialProgressBar_mpb_progressTint)) { mProgressTintInfo.mProgressTint = a.getColorStateList( R.styleable.MaterialProgressBar_mpb_progressTint); mProgressTintInfo.mHasProgressTint = true; } if (a.hasValue(R.styleable.MaterialProgressBar_mpb_progressTintMode)) { mProgressTintInfo.mProgressTintMode = DrawableCompat.parseTintMode(a.getInt( R.styleable.MaterialProgressBar_mpb_progressTintMode, -1), null); mProgressTintInfo.mHasProgressTintMode = true; } if (a.hasValue(R.styleable.MaterialProgressBar_mpb_secondaryProgressTint)) { mProgressTintInfo.mSecondaryProgressTint = a.getColorStateList( R.styleable.MaterialProgressBar_mpb_secondaryProgressTint); mProgressTintInfo.mHasSecondaryProgressTint = true; } if (a.hasValue(R.styleable.MaterialProgressBar_mpb_secondaryProgressTintMode)) { mProgressTintInfo.mSecondaryProgressTintMode = DrawableCompat.parseTintMode(a.getInt( R.styleable.MaterialProgressBar_mpb_secondaryProgressTintMode, -1), null); mProgressTintInfo.mHasSecondaryProgressTintMode = true; } if (a.hasValue(R.styleable.MaterialProgressBar_mpb_progressBackgroundTint)) { mProgressTintInfo.mProgressBackgroundTint = a.getColorStateList( R.styleable.MaterialProgressBar_mpb_progressBackgroundTint); mProgressTintInfo.mHasProgressBackgroundTint = true; } if (a.hasValue(R.styleable.MaterialProgressBar_mpb_progressBackgroundTintMode)) { mProgressTintInfo.mProgressBackgroundTintMode = DrawableCompat.parseTintMode(a.getInt( R.styleable.MaterialProgressBar_mpb_progressBackgroundTintMode, -1), null); mProgressTintInfo.mHasProgressBackgroundTintMode = true; } if (a.hasValue(R.styleable.MaterialProgressBar_mpb_indeterminateTint)) { mProgressTintInfo.mIndeterminateTint = a.getColorStateList( R.styleable.MaterialProgressBar_mpb_indeterminateTint); mProgressTintInfo.mHasIndeterminateTint = true; } if (a.hasValue(R.styleable.MaterialProgressBar_mpb_indeterminateTintMode)) { mProgressTintInfo.mIndeterminateTintMode = DrawableCompat.parseTintMode(a.getInt( R.styleable.MaterialProgressBar_mpb_indeterminateTintMode, -1), null); mProgressTintInfo.mHasIndeterminateTintMode = true; } a.recycle(); switch (mProgressStyle) { case PROGRESS_STYLE_CIRCULAR: if (isIndeterminate() || setBothDrawables) { if (!isInEditMode()) { setIndeterminateDrawable( new AnimationScaleIndeterminateCircularProgressDrawable(context)); } } if (!isIndeterminate() || setBothDrawables) { setProgressDrawable(new CircularProgressDrawable( determinateCircularProgressStyle, context)); } break; case PROGRESS_STYLE_HORIZONTAL: if (isIndeterminate() || setBothDrawables) { if (!isInEditMode()) { setIndeterminateDrawable(new IndeterminateHorizontalProgressDrawable( context)); } } if (!isIndeterminate() || setBothDrawables) { setProgressDrawable(new HorizontalProgressDrawable(context)); } break; default: throw new IllegalArgumentException("Unknown progress style: " + mProgressStyle); } setUseIntrinsicPadding(useIntrinsicPadding); setShowProgressBackground(showProgressBackground); }