Java tutorial
/* * Copyright (C) 2016 Yuki Anzai * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.yanzm.actionbarprogress; import android.content.Context; import android.graphics.Color; import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.util.TypedValue; public class ThemeUtils { public static int getDisabledThemeAttrColor(@NonNull Context context, int attr) { TypedValue typedValue = new TypedValue(); context.getTheme().resolveAttribute(android.R.attr.disabledAlpha, typedValue, true); final float disabledAlpha = typedValue.getFloat(); return getThemeAttrColor(context, attr, disabledAlpha); } public static int getThemeAttrColor(@NonNull Context context, int attr) { TypedValue typedValue = new TypedValue(); if (context.getTheme().resolveAttribute(attr, typedValue, true)) { if (typedValue.type >= TypedValue.TYPE_FIRST_INT && typedValue.type <= TypedValue.TYPE_LAST_INT) { return typedValue.data; } else if (typedValue.type == TypedValue.TYPE_STRING) { return ContextCompat.getColor(context, typedValue.resourceId); } } return 0; } public static int getThemeAttrColor(@NonNull Context context, int attr, float alpha) { final int color = getThemeAttrColor(context, attr); final int originalAlpha = Color.alpha(color); // Return the color, multiplying the original alpha by the disabled value return (color & 0x00ffffff) | (Math.round(originalAlpha * alpha) << 24); } }