我有各种各样的按钮,我想获得它们的背景色,在可绘制的颜色中获得背景色很容易,但在可绘制波纹中却不容易,我如何才能从可绘制波纹获得背景色。
试试这个:
RippleDrawable rippleDrawable = (RippleDrawable) button.getBackground();
Drawable.ConstantState state = rippleDrawable.getConstantState();
try {
Field colorField = state.getClass().getDeclaredField("mColor");
colorField.setAccessible(true);
ColorStateList colorStateList = (ColorStateList) colorField.get(state);
int rippleColor = colorStateList.getDefaultColor();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
我发现的解决方案是从新创建的应用程序的清单中删除条目,特别是在样式、主题和颜色方面,将旧的工作应用程序与新的应用程序进行比较,以确定嫌疑人。RippleDrawable随后将自己替换为原来的ColorDrawable,.getColor()再次工作。
请检查以下示例中android中的波纹效应。。
http://www.viralandroid.com/2015/09/how-to-add-ripple-effect-to-android-button.html