package codetail.utils; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Resources; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.support.annotation.DrawableRes; import android.util.TypedValue; public class ThemeUtils { public static Drawable getDrawableWithTint(@DrawableRes int drawable, int color){ Resources r = ResourceUtils.sResources; Drawable d = r.getDrawable(drawable); d.setColorFilter(color, PorterDuff.Mode.SRC_ATOP); return d; } /** * @param context Current Activity or Application context * @param attr attribute * * @return theme color */ public static int getThemeColor(Context context, int attr){ int resourceId = getThemeResourceId(context.getTheme(), attr); return context.getResources().getColor(resourceId); } /** * @param context Current Activity or Application context * @param attr attribute * * @return theme color */ public static ColorStateList getThemeColorStateList(Context context, int attr){ int resourceId = getThemeResourceId(context.getTheme(), attr); return context.getResources().getColorStateList(resourceId); } /** * @param theme Current theme * @param attr attribute * * @return resourceId */ public static int getThemeResourceId(Resources.Theme theme, int attr){ TypedValue value = new TypedValue(); theme.resolveAttribute(attr, value, true); return value.resourceId; } }