我有涟漪xml。但我不确定如何在Java中获得相同的效果。
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/blue_1"
/>
我想定义/创建/加载涟漪,甚至用Java设置颜色。 这意味着,在java中,我可以加载XML纹波,然后分配颜色。或者我可以用java做一切:Ripple = new Ripple?
有一种名为colorRipple的方法。
private void colorRipple(int id, int bgColor, int tintColor) {
View buttonView = findViewById(id);
RippleDrawable ripple = (RippleDrawable) buttonView.getBackground();
GradientDrawable rippleBackground = (GradientDrawable) ripple.getDrawable(0);
rippleBackground.setColor(bgColor);
ripple.setColor(ColorStateList.valueOf(tintColor));
}
我尝试了上面的代码,但它给了我NPE。
答案 0 :(得分:2)
您可以在运行时使用以下内容创建或修改RippleDrawable
:
ColorStateList csl = ColorStateList.valueOf(Color.BLUE);
RippleDrawable d = new RippleDrawable(csl, null, null);
// Change the color, if desired.
ColorStateList otherCsl = ColorStateList.valueOf(Color.RED);
d.setColor(otherCsl);
答案 1 :(得分:0)
你不能在api 21下面的android中使用默认的rippleview 您需要在触摸时制作带动画的自定义视图。或者你可以轻松使用这个来为视图添加涟漪: https://github.com/balysv/material-ripple
从java添加涟漪:
MaterialRippleLayout.on(view)
.rippleColor(Color.BLACK)
.create();