Android examples for Phone:Phone Information
get Switch Thumb ColorStateList
/*/*from w w w. j a va2 s. c om*/ * Copyright (C) 2015 The Android Open Source Project * * 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. */ import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.support.v7.graphics.drawable.DrawableWrapper; import android.support.v7.widget.SwitchCompat; import android.util.TypedValue; public class Main{ private static ColorStateList getSwitchThumbColorStateList( final Context context, final int color, final TypedValue typedValue) { final int[][] states = new int[3][]; final int[] colors = new int[3]; int i = 0; // Disabled state states[i] = new int[] { -android.R.attr.state_enabled }; colors[i] = getColor(Color.parseColor("#ffbdbdbd"), 1f); i++; states[i] = new int[] { android.R.attr.state_checked }; colors[i] = color; i++; // Default enabled state states[i] = new int[0]; colors[i] = getThemeAttrColor(context, typedValue, android.support.v7.appcompat.R.attr.colorSwitchThumbNormal); i++; return new ColorStateList(states, colors); } private static int getColor(int color, float alpha) { 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); } private static int getThemeAttrColor(final Context context, final TypedValue typedValue, final int attr) { 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 context.getResources().getColor( typedValue.resourceId); } } return 0; } private static int getThemeAttrColor(final Context context, final TypedValue typedValue, final int attr, final float alpha) { final int color = getThemeAttrColor(context, typedValue, attr); return getColor(color, alpha); } }