Android 如何在 Java 中创建连锁反应
Android how to create ripple effect in Java
我有涟漪xml。但我不确定如何在 Java 中获得相同的效果。
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/blue_1"
/>
我想定义/创建/加载波纹,甚至在 Java 中设置颜色。
这意味着,在 java 中,我可以加载 XML 波纹,然后指定颜色。或者我可以做 java 中的所有事情吗:Ripple = new Ripple ?
我尝试了这个 link 中的代码:https://github.com/romainguy/google-io-2014/blob/master/app/src/main/java/com/example/android/io2014/DetailActivity.java。
有一个名为 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。
您不能在下面android中使用默认的 rippleview api 21
您需要制作带有触摸动画的自定义视图。或者你可以轻松地使用这个来为视图添加波纹:
https://github.com/balysv/material-ripple
从 java 添加波纹:
MaterialRippleLayout.on(view)
.rippleColor(Color.BLACK)
.create();
您可以在 运行 时创建或修改 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);
我有涟漪xml。但我不确定如何在 Java 中获得相同的效果。
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/blue_1"
/>
我想定义/创建/加载波纹,甚至在 Java 中设置颜色。 这意味着,在 java 中,我可以加载 XML 波纹,然后指定颜色。或者我可以做 java 中的所有事情吗:Ripple = new Ripple ?
我尝试了这个 link 中的代码:https://github.com/romainguy/google-io-2014/blob/master/app/src/main/java/com/example/android/io2014/DetailActivity.java。
有一个名为 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。
您不能在下面android中使用默认的 rippleview api 21 您需要制作带有触摸动画的自定义视图。或者你可以轻松地使用这个来为视图添加波纹: https://github.com/balysv/material-ripple
从 java 添加波纹:
MaterialRippleLayout.on(view)
.rippleColor(Color.BLACK)
.create();
您可以在 运行 时创建或修改 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);