@Override public void setColorStateList(ColorStateList tintStateList) { super.setColorStateList(tintStateList); mFocusedColor = tintStateList.getColorForState(new int[] {android.R.attr.state_focused}, 0xFFFF0000); mPressedColor = tintStateList.getColorForState(new int[] {android.R.attr.state_pressed}, 0xFFFF0000); mDisabledColor = tintStateList.getColorForState(new int[] {-android.R.attr.state_enabled}, 0xFFFF0000); }
@Override public boolean setState(int[] stateSet) { int[] oldState = getState(); boolean oldPressed = false; for (int i : oldState) { if (i == android.R.attr.state_pressed) { oldPressed = true; } } // Call super super.setState(stateSet); boolean focused = false; boolean pressed = false; boolean disabled = true; for (int i : stateSet) { if (i == android.R.attr.state_focused) { focused = true; } else if (i == android.R.attr.state_pressed) { pressed = true; } else if (i == android.R.attr.state_enabled) { disabled = false; } } if (disabled) { unscheduleSelf(mUpdater); mRippleColor = mDisabledColor; mRippleBgColor = 0; mCurrentScale = ACTIVE_SCALE / 2; invalidateSelf(); } else { if (pressed) { animateToPressed(); mRippleColor = mRippleBgColor = mPressedColor; } else if (oldPressed) { mRippleColor = mRippleBgColor = mPressedColor; animateToNormal(); } else if (focused) { mRippleColor = mFocusedColor; mRippleBgColor = 0; mCurrentScale = ACTIVE_SCALE; invalidateSelf(); } else { mRippleColor = 0; mRippleBgColor = 0; mCurrentScale = INACTIVE_SCALE; invalidateSelf(); } } return true; }