package com.moez.QKSMS.ui.view.colorpicker; import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; public class ColorStateDrawable extends LayerDrawable { private int mColor; public ColorStateDrawable(Drawable[] drawables, int color) { super(drawables); mColor = color; } private int getPressedColor(int color) { float[] hsv = new float[3]; Color.colorToHSV(color, hsv); hsv[2] = (0.7F * hsv[2]); return Color.HSVToColor(hsv); } public boolean isStateful() { return true; } protected boolean onStateChange(int[] states) { boolean pressed = false; for (int state : states) { if (state == android.R.attr.state_pressed || state == android.R.attr.state_focused) { pressed = true; } } if (pressed) { super.setColorFilter(getPressedColor(mColor), PorterDuff.Mode.SRC_ATOP); } else { super.setColorFilter(mColor, PorterDuff.Mode.SRC_ATOP); } return super.onStateChange(states); } }